Awesome Open Source
Awesome Open Source
Latest version
Latest snapshot
Build status

Detect unused and misused dependencies

The Dependency Analysis Gradle Plugin (ne Dependency Analysis Android Gradle Plugin) detects the following:

  1. Unused dependencies.

  2. Used transitive dependencies (which you may want to declare directly).

  3. Dependencies declared on the wrong configuration (api vs implementation vs compileOnly, etc.).

  4. Unnecessary plugins (currently only kapt).

As a side effect, the plugin can also tell you your project’s ABI, and produces graphviz files representing various views of your dependency graph, among other things. These side effects are currently mostly undocumented internal behaviors, but they may be interesting for some advanced users.

Add to your project and use

For detailed instructions, see the wiki.

The simplest approach is to add the following:

root build.gradle
plugins {
  id("com.autonomousapps.dependency-analysis") version "<<latest_version>>"

For a quick start, just run the following:

./gradlew buildHealth

More advanced usage

Project Health

You can also run the analysis against individual modules with the projectHealth task. For example:

./gradlew app:projectHealth


You may be curious why the plugin is emitting (or not emitting) advice regarding some dependency. You can ask it why:

./gradlew lib:reason --id com.squareup.okio:okio:2.2.2 (1)
> Task :lib:reason

You asked about the dependency 'com.squareup.okio:okio:2.2.2'.
There is no advice regarding this dependency.

Shortest path from :lib to com.squareup.okio:okio:2.2.2:
\--- com.squareup.okio:okio:2.2.2

Source: main
* Exposes class okio.BufferedSource (implies api).
  1. The version string is optional.

Basic configuration

For detailed information on how to configure the plugin, see the wiki.

To configure the plugin, use the dependencyAnalysis extension.

dependencyAnalysis {
  // configuration goes here

Two models

At time of writing, there are two distinct models available for conducting dependency analysis. By default, from version 1.0.0-rc01, the plugin uses the "new model." With that version, you may switch to the "old model" via the system property dependency.analysis.old.model=true. That is also the final version of the plugin that supports use of the old model. From 1.0.0-rc02, the old model is no longer available.

Alternatives To Dependency Analysis Android Gradle Plugin
Select To Compare

Alternative Project Comparisons
Related Awesome Lists
Top Programming Languages

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Java (412,491
Plugin (113,353
Kotlin (53,499
Scala (29,387
Gradle (13,071
Groovy (8,617
Gradle Plugin (1,712
Flowchart (627
Dependency Analysis (171