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?
- Problema de generación de Gradle 3.0.0-beta1
- No se puede ver la tarea del archivo de asignación de carga de Firebase
- ¿Qué significa realmente "Proyecto de sincronización con archivo Gradle"?
- Android Studio: "Utilizar gradle wrapper por defecto" vs. "Utilizar gradle wrapper personalizable"
- Cómo adjuntar javadoc al archivo .aar personalizado en android studio?
- Diferentes dependencias de sabor
- Diferencia entre limpio, gradlew limpio
- Android APK construido desde el estudio de Android y la consola tienen diferentes huellas digitales SHA
- Android Studio Build / Limpieza
- ¿Por qué Android Studio no creará mi archivo AAR en modo de liberación?
- Diferencia entre el funcionamiento de pelusa a través del menú de Android Studio y la línea de comandos de gradlew
- Activos de preprocesamiento de Gradle
- Android- Error: Error de ejecución para la tarea ': app: transformClassesWithDexForRelease'
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ón3.0.1
más reciente -
reportLevel
alow
lugar dehigh
para reportar todas las infracciones - Para el primer análisis no es necesario configurar any
includeFilter
oexcludeFilter
– 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.