Findbugs android gradle plugin

Tengo un proyecto de androide. Quiero introducir findbugs en mi proyecto como un complemento gradle. Intenté editar el build.gradle del proyecto como se muestra a continuación.

 buildscript { repositories { mavenCentral() maven { url 'https://maven.fabric.io/public' } } dependencies { classpath 'com.android.tools.build:gradle:1.0.0+' classpath 'io.fabric.tools:gradle:1.+' } } apply plugin: "java" apply plugin: "findbugs" findbugs { toolVersion = "2.0.1" sourceSets = [sourceSets.main] ignoreFailures = false reportsDir = file("$project.buildDir/findbugsReports") effort = "max" reportLevel = "high" includeFilter = file("$rootProject.projectDir/config/findbugs/includeFilter.xml") excludeFilter = file("$rootProject.projectDir/config/findbugs/excludeFilter.xml") } 

¿Es correcto este complemento? ¿Se necesita agregar o quitar algo? Ahora, ¿qué debo hacer para obtener los resultados de este cheque findbugs ? ¿Qué comando gradle debo usar?

Simplemente coloque esto en los módulos build.gradle .

 apply plugin: 'findbugs' task customFindbugs(type: FindBugs) { ignoreFailures = false effort = "max" reportLevel = "low" classes = files("$project.buildDir/intermediates/classes") // Use this only if you want exclude some errors excludeFilter = file("$rootProject.rootDir/config/findbugs/exclude.xml") source = fileTree('src/main/java/') classpath = files() reports { xml.enabled = false xml.withMessages = true html.enabled = !xml.isEnabled() xml.destination "$project.buildDir/outputs/findbugs/findbugs-output.xml" html.destination "$project.buildDir/outputs/findbugs/findbugs-output.html" } } build.dependsOn customFindbugs 

Después de cambiar el directorio a la ruta del proyecto desde la línea de comandos, utilice

 ./gradlew build 

El informe de errores estará en $project.buildDir/outputs/findbugs/findbugs-output.html

Modifiqué un poco la respuesta de Nevin Raj Victor.

Esta versión genera una tarea findbug para cada variante de compilación, y (lo que es más importante) crea correctamente dependencias en sus respectivas tareas de compilación. De hecho, findbugs requiere que el código se compile antes de que pueda ser analizado.

 // findbug tasks for each variant apply plugin: 'findbugs' android.applicationVariants.all { variant -> task("findbugs${variant.name.capitalize()}", type: FindBugs) { description "Analyze ${variant.name} code with the findbugs tool" group "Verification" ignoreFailures = true effort = "default" reportLevel = "medium" classes = files("$project.buildDir/intermediates/classes/${variant.dirName}") excludeFilter = file("$rootProject.rootDir/findbugs/findbugs-filter.xml") source = variant.javaCompile.source classpath = variant.javaCompile.classpath reports { // Only one of HTML or XML can be turned on at the same time html.enabled = true xml.enabled = !html.enabled xml.withMessages = true html.destination = "$project.buildDir/outputs/findbugs/findbugs-${variant.name}-output.html" xml.destination = "$project.buildDir/outputs/findbugs/findbugs-${variant.name}-output.xml" } dependsOn "compile${variant.name.capitalize()}JavaWithJavac" } } 

Después de esto, puede ejecutar

 ./gradlew findbugsDebug ./gradlew findbugsRelease 

O otras tareas findbugs en diferentes variantes, dependiendo de su configuración.

Veo algunos problemas con su configuración:

  • En lugar de la versión 2.0.1 versión 3.0.1 más reciente
  • reportLevel a low lugar de high para reportar todas las infracciones
  • Para el primer análisis no es necesario configurar any includeFilter o excludeFilter – solo son listas blancas y listas negras de cheques si necesita alguna personalización

Para ejecutar el análisis basta con invocar gradle findbugsMain . Los resultados deben ser visibles en la salida.

Eche un vistazo a este proyecto https://github.com/Piasy/AndroidCodeQualityConfig .

Este proyecto incluye pelusa, pmd, findbugs, checkstyle, cobertura de código jacoco y proyecto de soporte con submódulos.

  • Recursos de la cadena de combinación de Gradle de Android
  • ¿Se puede implementar en un dispositivo a través de Gradle desde la línea de comandos
  • Android Gradle Conflicto de dependencia con la versión interna proporcionada por Android
  • Las pruebas Robolectric fallan cuando se ejecutan en CLI
  • Reaccionar-nativo en Android 4.0.3. ¿Posible?
  • Gradle build-info.xml no se encuentra para la aplicación de módulo en Android Studio
  • Android: No se pudo encontrar ni cargar la clase principal org.gradle.wrapper.GradleWrapperMain
  • Cómo recuperar la ruta a ADB en build.gradle
  • Especificar la ubicación de salida al ensamblar un proyecto de Android con Gradle a través de Terminal?
  • ¿Cómo ejecutar un comando en windows cmd usando Gradle?
  • ¿Qué hace un gradlew?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.