dependency-analysis-gradle-plugin icon indicating copy to clipboard operation
dependency-analysis-gradle-plugin copied to clipboard

Enable `:reason` task to get reason for specific gradle capabilities (e.g. `testFixtures`)

Open Nava2 opened this issue 7 months ago • 8 comments

Describe the solution you'd like Some form of CLI parameters that enables specifying which gradle capability that is cared about. Such that, only that capability is shown.

For example,

./gradlew :project:reason --id ':other-project' --capability 'com.example:other-project-test-fixtures'

Describe alternatives you've considered Add notation to siginify which capability an output belongs to if there are multiple usages. For example, showing that content comes from testFixtures vs. default.

Alternately, including all capabilities in the output of just --id ':other-project' would work!

Additional context

Nava2 avatar Jan 10 '24 16:01 Nava2

I don't entirely follow this request. Could you share a sample of the expected output from such a feature?

autonomousapps avatar Jan 13 '24 19:01 autonomousapps

This may be user error, but if you have a build that leverages java-test-fixtures (Docs), it will add a dependency on a project with a capability rather than the normal project.

If you want to look at the "reason" output, i.e. figure out why that dependency is used in the project, there's no way to request it specifically today. Calling --id ':other-project' will return all usages from all capabilities.

Edit: I had the output wrong in my initial comment, but it still stands that there's no way to differentiate teh different capabilities/artifacts.

Nava2 avatar Jan 13 '24 21:01 Nava2

Here's a project: https://github.com/Nava2/dependency-analysis-test-fixtures-project-example

$ ./gradlew :lib:reason --id ":other-project"

> Configure project :
WARNING: Unsupported Kotlin plugin version.
The `embedded-kotlin` and `kotlin-dsl` plugins rely on features of Kotlin `1.9.20` that might work differently than in the requested version `1.9.22`.

> Task :lib:reason

----------------------------------------
You asked about the dependency ':other-project'.
There is no advice regarding this dependency.
----------------------------------------

Shortest path from :lib to dependency-analysis-test-fixtures-project-example:other-project for compileClasspath:
:lib
\--- dependency-analysis-test-fixtures-project-example:other-project

Shortest path from :lib to dependency-analysis-test-fixtures-project-example:other-project for runtimeClasspath:
:lib
\--- dependency-analysis-test-fixtures-project-example:other-project

Shortest path from :lib to dependency-analysis-test-fixtures-project-example:other-project for testCompileClasspath:
:lib
\--- dependency-analysis-test-fixtures-project-example:other-project

Shortest path from :lib to dependency-analysis-test-fixtures-project-example:other-project for testRuntimeClasspath:
:lib
\--- dependency-analysis-test-fixtures-project-example:other-project

Source: main
------------
(no usages)

Source: test
------------
* Uses 1 class: com.example.dependency_analysis.TestFixture (implies testImplementation).

I'm unsure how to get advice for why the testFixture(project(":other-project")) is applied

Nava2 avatar Jan 13 '24 21:01 Nava2

@autonomousapps I added some more context, I had my initial question incorrect as the test fixture content is there. It's just not marked/obvious what is coming from where. I updated the initial description and my previous comment! Apologies for confusion.

Nava2 avatar Jan 13 '24 21:01 Nava2

@jjohannes this might be something interesting for us to take a look at.

autonomousapps avatar Jan 14 '24 18:01 autonomousapps

The capability information appears to be in the JSON output, so I hope this is just a visualization change 😅

Nava2 avatar Jan 14 '24 19:01 Nava2

Hey, just noting here, I ran into this same issue today, the parameter proposed by @Nava2 would definitely be helpful to me as well!

arthurrogel avatar Jan 16 '24 14:01 arthurrogel

This seems to be related https://github.com/autonomousapps/dependency-analysis-gradle-plugin/pull/1170

seregamorph avatar Apr 26 '24 18:04 seregamorph