Permalink
Browse files

Check for unused dependencies

Enabled unused-dependency check using nebula-lint.

Dependencies that are not used by compile or testing are
labeled with 'maybe_runtime". We leave these dependencies
in the script for easy reference. Before launching Gradle-based
release process we must determine which of these should
be removed and which should be relabeled as runtime.

Label assignment:
- All dependencies recommended for removal from 'compile'
  are changed to maybe_runtime
- All dependencies recommended for move from 'compile' to
  testCompile are split into two lines, one with testCompile,
  the other maybe_runtime

Incidentally, Gradle 4.10.2 needs a groovy upgrade before
it can work with Oracle JDK 11.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=219803797
  • Loading branch information...
weiminyu authored and mindhog committed Nov 2, 2018
1 parent b5856a1 commit 6a870e582003190c8cd6aa77e1d036e4d773b229
Showing with 90 additions and 67 deletions.
  1. +3 −2 gradle/build.gradle
  2. +87 −65 gradle/core/build.gradle
@@ -19,8 +19,9 @@ allprojects {
'archaic-wrapper',
// Checks for indirect dependencies with dynamic version spec. Best
// practice calls for declaring them with specific versions.
'undeclared-dependency'
// TODO(weiminyu): enable more dependency check
'undeclared-dependency',
'unused-dependency'
// TODO(weiminyu): enable more dependency checks
]
}
@@ -42,32 +42,41 @@ configurations {
css
jaxb
soy
// Label for all dependencies inherited from Bazel build but not used in
// either compile or testRuntime. However, they may be needed at runtime.
// TODO(weiminyu): identify runtime dependencies and remove the rest.
maybe_runtime
}
// TODO(weiminyu): switch to api/implementation labels.
// Gradle has deprecated the compile/testCompile labels, but nebula-lint has
// not caught up. The plugin provides valuable dependency checks that we do not
// want to give up.
// See https://github.com/nebula-plugins/gradle-lint-plugin/issues/130 for
// issue status.
// Known issues:
// - The (test/)compile/runtime labels are deprecated. We continue using these
// labels due to nebula-lint.
// TODO(weiminyu): switch to api/implementation labels.
// See https://github.com/nebula-plugins/gradle-lint-plugin/issues/130 for
// issue status.
// - Nebula-lint's conflict between unused and undeclared dependency check.
// If an undeclared dependency is added, the unused-dependency check will flag
// it. For now we wrap affected dependency in gradleLint.ignore block.
// TODO(weiminyu): drop gradleLint.ignore block when issue is fixed.
// See https://github.com/nebula-plugins/gradle-lint-plugin/issues/181 for
// issue status.
dependencies {
compile 'com.beust:jcommander:1.48'
compile 'com.fasterxml.jackson.core:jackson-core:2.8.5'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.8.0'
compile 'com.fasterxml.jackson.core:jackson-databind:2.8.5'
compile 'com.google.api-client:google-api-client:1.22.0'
compile 'com.google.api-client:google-api-client-appengine:1.22.0'
compile 'com.google.api-client:google-api-client-jackson2:1.20.0'
maybe_runtime 'com.google.api-client:google-api-client-appengine:1.22.0'
maybe_runtime 'com.google.api-client:google-api-client-jackson2:1.20.0'
compile 'com.google.monitoring-client:metrics:1.0.4'
compile 'com.google.monitoring-client:stackdriver:1.0.4'
compile 'com.google.api-client:google-api-client-java6:1.20.0'
compile 'com.google.api-client:google-api-client-servlet:1.22.0'
maybe_runtime 'com.google.api-client:google-api-client-java6:1.20.0'
maybe_runtime 'com.google.api-client:google-api-client-servlet:1.22.0'
compile 'com.google.apis:google-api-services-admin-directory:directory_v1-rev72-1.22.0'
compile 'com.google.apis:google-api-services-bigquery:v2-rev325-1.22.0'
compile 'com.google.apis:google-api-services-clouddebugger:v2-rev8-1.22.0'
maybe_runtime 'com.google.apis:google-api-services-clouddebugger:v2-rev8-1.22.0'
compile 'com.google.apis:google-api-services-cloudkms:v1-rev12-1.22.0'
compile 'com.google.apis:google-api-services-cloudresourcemanager:v1-rev6-1.22.0'
maybe_runtime 'com.google.apis:google-api-services-cloudresourcemanager:v1-rev6-1.22.0'
compile 'com.google.apis:google-api-services-dataflow:v1b3-rev196-1.22.0'
compile 'com.google.apis:google-api-services-dns:v2beta1-rev6-1.22.0'
compile 'com.google.apis:google-api-services-drive:v2-rev160-1.19.1'
@@ -78,105 +87,117 @@ dependencies {
// TODO(b/71631624): change appengine:appengine-api-1.0-sdk to
// testCompileOnly after BillingEmailUtilsTest.java is fixed.
compile 'com.google.appengine:appengine-api-1.0-sdk:1.9.48'
compile 'com.google.appengine:appengine-api-labs:1.9.48'
compile 'com.google.appengine:appengine-api-stubs:1.9.48'
maybe_runtime 'com.google.appengine:appengine-api-labs:1.9.48'
maybe_runtime 'com.google.appengine:appengine-api-stubs:1.9.48'
testCompile 'com.google.appengine:appengine-api-stubs:1.9.48'
compile 'com.google.appengine.tools:appengine-gcs-client:0.6'
compile 'com.google.appengine.tools:appengine-mapreduce:0.8.5'
compile 'com.google.appengine.tools:appengine-pipeline:0.2.13'
compile 'com.google.appengine:appengine-remote-api:1.9.48'
compile 'com.google.appengine:appengine-tools-sdk:1.9.48'
compile 'com.google.auth:google-auth-library-credentials:0.7.1'
compile 'com.google.auth:google-auth-library-oauth2-http:0.7.1'
compile 'com.google.auto:auto-common:0.8'
compile 'com.google.auto.factory:auto-factory:1.0-beta3'
maybe_runtime 'com.google.appengine:appengine-tools-sdk:1.9.48'
maybe_runtime 'com.google.auth:google-auth-library-credentials:0.7.1'
maybe_runtime 'com.google.auth:google-auth-library-oauth2-http:0.7.1'
maybe_runtime 'com.google.auto:auto-common:0.8'
maybe_runtime 'com.google.auto.factory:auto-factory:1.0-beta3'
compile 'com.google.auto.value:auto-value-annotations:1.6.2'
compile 'com.google.cloud.bigdataoss:gcsio:1.4.5'
compile 'com.google.cloud.bigdataoss:util:1.4.5'
maybe_runtime 'com.google.cloud.bigdataoss:gcsio:1.4.5'
maybe_runtime 'com.google.cloud.bigdataoss:util:1.4.5'
compile 'com.google.code.findbugs:jsr305:3.0.2'
compile 'com.google.dagger:dagger:2.15'
compile 'com.google.dagger:dagger-producers:2.15'
maybe_runtime 'com.google.dagger:dagger-producers:2.15'
compile 'com.google.errorprone:error_prone_annotations:2.3.1'
compile 'com.google.errorprone:javac-shaded:9-dev-r4023-3'
maybe_runtime 'com.google.errorprone:javac-shaded:9-dev-r4023-3'
compile 'com.google.flogger:flogger:0.1'
compile 'com.google.flogger:flogger-system-backend:0.1'
compile 'com.google.gdata:core:1.47.1'
compile 'com.google.googlejavaformat:google-java-format:1.4'
runtime 'com.google.flogger:flogger-system-backend:0.1'
maybe_runtime 'com.google.gdata:core:1.47.1'
maybe_runtime 'com.google.googlejavaformat:google-java-format:1.4'
compile 'com.google.guava:guava-jdk5:17.0'
compile 'com.google.guava:guava:25.1-jre'
compile 'com.google.gwt:gwt-user:2.8.2'
gradleLint.ignore('unused-dependency') {
compile 'com.google.gwt:gwt-user:2.8.2'
}
compile 'com.google.http-client:google-http-client:1.22.0'
compile 'com.google.http-client:google-http-client-appengine:1.22.0'
compile 'com.google.http-client:google-http-client-jackson2:1.22.0'
compile 'com.google.oauth-client:google-oauth-client:1.22.0'
compile 'com.google.oauth-client:google-oauth-client-appengine:1.22.0'
maybe_runtime 'com.google.oauth-client:google-oauth-client-appengine:1.22.0'
compile 'com.google.oauth-client:google-oauth-client-java6:1.22.0'
compile 'com.google.oauth-client:google-oauth-client-jetty:1.22.0'
compile 'com.google.oauth-client:google-oauth-client-servlet:1.22.0'
compile 'com.google.protobuf:protobuf-java:2.6.0'
maybe_runtime 'com.google.oauth-client:google-oauth-client-servlet:1.22.0'
maybe_runtime 'com.google.protobuf:protobuf-java:2.6.0'
compile 'com.google.re2j:re2j:1.1'
compile 'com.google.template:soy:2018-03-14'
compile 'com.googlecode.charts4j:charts4j:1.3'
maybe_runtime 'com.googlecode.charts4j:charts4j:1.3'
compile 'com.googlecode.json-simple:json-simple:1.1.1'
compile 'com.ibm.icu:icu4j:57.1'
compile 'com.jcraft:jsch:0.1.53'
compile 'com.jcraft:jzlib:1.1.3'
compile 'com.squareup:javapoet:1.8.0'
compile 'com.squareup:javawriter:2.5.1'
compile 'com.sun.activation:javax.activation:1.2.0'
compile 'com.thoughtworks.paranamer:paranamer:2.7'
compile 'commons-codec:commons-codec:1.6'
compile 'commons-logging:commons-logging:1.1.1'
maybe_runtime 'com.jcraft:jzlib:1.1.3'
maybe_runtime 'com.squareup:javapoet:1.8.0'
maybe_runtime 'com.squareup:javawriter:2.5.1'
maybe_runtime 'com.sun.activation:javax.activation:1.2.0'
maybe_runtime 'com.thoughtworks.paranamer:paranamer:2.7'
maybe_runtime 'commons-codec:commons-codec:1.6'
maybe_runtime 'commons-logging:commons-logging:1.1.1'
compile 'dnsjava:dnsjava:2.1.7'
compile 'io.netty:netty-buffer:4.1.28.Final'
compile 'io.netty:netty-codec:4.1.28.Final'
compile 'io.netty:netty-codec-http:4.1.28.Final'
compile 'io.netty:netty-common:4.1.28.Final'
compile 'io.netty:netty-handler:4.1.28.Final'
compile 'io.netty:netty-resolver:4.1.28.Final'
compile 'io.netty:netty-tcnative:2.0.12.Final'
compile 'io.netty:netty-tcnative-boringssl-static:2.0.12.Final'
maybe_runtime 'io.netty:netty-resolver:4.1.28.Final'
maybe_runtime 'io.netty:netty-tcnative:2.0.12.Final'
maybe_runtime 'io.netty:netty-tcnative-boringssl-static:2.0.12.Final'
compile 'io.netty:netty-transport:4.1.28.Final'
compile 'it.unimi.dsi:fastutil:6.5.16'
compile 'javax.annotation:jsr250-api:1.0'
maybe_runtime 'it.unimi.dsi:fastutil:6.5.16'
maybe_runtime 'javax.annotation:jsr250-api:1.0'
testCompile 'javax.annotation:jsr250-api:1.0'
compile 'javax.inject:javax.inject:1'
compile 'javax.mail:mail:1.4'
compile 'javax.servlet:servlet-api:2.5'
compile 'javax.xml.bind:jaxb-api:2.3.0'
compile 'javax.xml.soap:javax.xml.soap-api:1.4.0'
maybe_runtime 'javax.xml.soap:javax.xml.soap-api:1.4.0'
compile 'jline:jline:1.0'
compile 'joda-time:joda-time:2.3'
compile 'org.apache.avro:avro:1.8.2'
compile 'org.apache.beam:beam-runners-direct-java:2.2.0'
maybe_runtime 'org.apache.beam:beam-runners-direct-java:2.2.0'
testCompile 'org.apache.beam:beam-runners-direct-java:2.2.0'
compile 'org.apache.beam:beam-runners-google-cloud-dataflow-java:2.1.0'
compile 'org.apache.beam:beam-sdks-common-runner-api:2.1.0'
maybe_runtime 'org.apache.beam:beam-sdks-common-runner-api:2.1.0'
compile 'org.apache.beam:beam-sdks-java-core:2.2.0'
compile 'org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.1.0'
compile 'org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.2.0'
compile 'org.apache.commons:commons-compress:1.8.1'
compile 'org.apache.ftpserver:ftplet-api:1.0.6'
compile 'org.apache.ftpserver:ftpserver-core:1.0.6'
maybe_runtime 'org.apache.commons:commons-compress:1.8.1'
maybe_runtime 'org.apache.ftpserver:ftplet-api:1.0.6'
testCompile 'org.apache.ftpserver:ftplet-api:1.0.6'
maybe_runtime 'org.apache.ftpserver:ftpserver-core:1.0.6'
testCompile 'org.apache.ftpserver:ftpserver-core:1.0.6'
compile 'org.apache.httpcomponents:httpclient:4.5.2'
compile 'org.apache.httpcomponents:httpcore:4.4.4'
compile 'org.apache.mina:mina-core:2.0.4'
compile 'org.apache.sshd:sshd-core:2.0.0'
compile 'org.apache.sshd:sshd-scp:2.0.0'
compile 'org.apache.sshd:sshd-sftp:2.0.0'
maybe_runtime 'org.apache.mina:mina-core:2.0.4'
maybe_runtime 'org.apache.sshd:sshd-core:2.0.0'
testCompile 'org.apache.sshd:sshd-core:2.0.0'
maybe_runtime 'org.apache.sshd:sshd-scp:2.0.0'
testCompile 'org.apache.sshd:sshd-scp:2.0.0'
maybe_runtime 'org.apache.sshd:sshd-sftp:2.0.0'
testCompile 'org.apache.sshd:sshd-sftp:2.0.0'
compile 'org.apache.tomcat:servlet-api:6.0.45'
compile 'org.apache.tomcat:tomcat-annotations-api:8.0.5'
maybe_runtime 'org.apache.tomcat:tomcat-annotations-api:8.0.5'
testCompile 'org.apache.tomcat:tomcat-annotations-api:8.0.5'
compile 'org.bouncycastle:bcpg-jdk15on:1.52'
compile 'org.bouncycastle:bcpkix-jdk15on:1.52'
compile 'org.bouncycastle:bcprov-jdk15on:1.52'
compile 'org.codehaus.jackson:jackson-core-asl:1.9.13'
compile 'org.codehaus.jackson:jackson-mapper-asl:1.9.13'
maybe_runtime 'org.codehaus.jackson:jackson-core-asl:1.9.13'
maybe_runtime 'org.codehaus.jackson:jackson-mapper-asl:1.9.13'
compile 'org.joda:joda-money:0.10.0'
compile 'org.json:json:20160810'
compile 'org.khronos:opengl-api:gl1.1-android-2.1_r1'
compile 'org.mortbay.jetty:jetty:6.1.26'
maybe_runtime 'org.khronos:opengl-api:gl1.1-android-2.1_r1'
maybe_runtime 'org.mortbay.jetty:jetty:6.1.26'
testCompile 'org.mortbay.jetty:jetty:6.1.26'
compile 'org.mortbay.jetty:servlet-api:2.5-20081211'
compile 'org.mortbay.jetty:jetty-util:6.1.26'
compile 'org.slf4j:slf4j-api:1.7.16'
compile 'org.tukaani:xz:1.5'
compile 'org.xerial.snappy:snappy-java:1.1.4-M3'
maybe_runtime 'org.mortbay.jetty:jetty-util:6.1.26'
maybe_runtime 'org.slf4j:slf4j-api:1.7.16'
maybe_runtime 'org.tukaani:xz:1.5'
maybe_runtime 'org.xerial.snappy:snappy-java:1.1.4-M3'
compile 'org.yaml:snakeyaml:1.17'
compile 'xerces:xmlParserAPIs:2.6.2'
compile 'xpp3:xpp3:1.1.4c'
@@ -186,7 +207,9 @@ dependencies {
// Include auto-value in compile until nebula-lint understands
// annotationProcessor
compile 'com.google.auto.value:auto-value:1.6.2'
gradleLint.ignore('unused-dependency') {
compile 'com.google.auto.value:auto-value:1.6.2'
}
annotationProcessor 'com.google.auto.value:auto-value:1.6.2'
testAnnotationProcessor 'com.google.auto.value:auto-value:1.6.2'
annotationProcessor 'com.google.dagger:dagger-compiler:2.15'
@@ -204,7 +227,6 @@ dependencies {
testCompile 'org.hamcrest:hamcrest-library:1.3'
testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-all:1.9.5'
testCompile 'org.slf4j:slf4j-simple:1.7.16' // Not needed by Bazel
// Indirect dependency found by undeclared-dependency check. Such
// dependencies should go after all other compile and testCompile

0 comments on commit 6a870e5

Please sign in to comment.