android gradle checkstyle

Obtenga Android plugin y estilo de verificación trabajando juntos/uso de la línea de comandos



gradle checkstyle (7)

Al excavar en la web descubrí que el complemento de Android depende de java-base y no de java (es decir, la administración de sourceSets es específica) y el complemento checkstyle se basa en java. Como consecuencia, se necesitan algunas modificaciones gradle en sentido ascendente para hacer la cosa. El equipo de Gradle está trabajando en eso, como se ve en Twitter:

@anzix conjuntos de fuentes de Android @anzix pronto serán comprendidos por los complementos de calidad de código genéricos. El trabajo en eso ya ha comenzado.

- Gradle Build System (@Gradleware) 26 de mayo de 2013

Estoy evaluando la capacidad del nuevo sistema de compilación basado en gradle para reproducir nuestro proceso actual de compilación basado en hormigas y, como principiante de gradle, no logré que el estilo de verificación se ejecutara con el complemento android gradle.

Ambiente:

  • gradle 1.6 funciona bien en un proyecto java estándar (incluido el objetivo de verificación de estilo de verificación)

  • SDK de Android actualizado (22.0.1 con herramientas de plataforma y herramientas de compilación 17)

  • Sin eclipse, sin Android Studio, solo mi encantadora terminal.

Síntoma:

El proyecto objetivo es https://github.com/nibua-r/LigoTextDemo y logré compilarlo usando gradle, pero si agrego ingenuamente, apply plugin: checkstyle a mi build.gradle :

buildscript { repositories { mavenCentral() } dependencies { classpath ''com.android.tools.build:gradle:0.4.2'' } } apply plugin: ''android'' apply plugin: ''checkstyle'' android { buildToolsVersion ''17'' compileSdkVersion 15 testBuildType ''debug'' defaultConfig { versionCode = 1 versionName = ''1.0'' minSdkVersion 12 targetSdkVersion 15 } buildTypes { debug { packageNameSuffix = ''.debug'' } } }

luego gradle check ni siquiera se queja al no encontrar el archivo checkstyle.xml (en la ubicación predeterminada config/checkstyle ) y devuelve:

:check UP-TO-DATE BUILD SUCCESSFUL

Lo que se necesita:

En primer lugar, solo necesito un objetivo de estilo de comprobación en ejecución. Luego, necesito automatizar el estilo de verificación que se ejecuta como una dependencia de la compilación (pero primero permita que el objetivo de Chekstyle esté en funcionamiento).

Suposición:

Esto puede estar relacionado con el hecho de que (de la [guía del usuario] [1]):

El complemento de Android [...] utiliza sus propios sourceSets

pero no soy lo suficientemente eficiente para entender lo que me estoy perdiendo allí. Por favor, Gradle Master, ¡ilumíname con tu valioso conocimiento!


Alguien tiene una gran respuesta para resolver la integración de PMD, Findbugs y Checkstyle con Gradle para Android. Desafortunadamente, la única solución por ahora se basa en ant: http://sethrylan.org/2013/07/14/gradle-android-findbugs.html

Deseo que Gradle algún día permita hacer tanto como Maven para Android.

--- Actualización a octubre de 2013

Con Gradle 1.8 y el complemento de Android para Gradle 0.6. +, Ya no necesitas esto. Los conjuntos de fuentes y configuraciones de Android ahora son compatibles con el complemento de Java y todos los complementos de calidad funcionan de forma inmediata.

Esto incluye pmd, findbugs, checkstyle y classycle.

--- Actualización Una configuración, en gran parte inspirada en el proyecto mencionado anteriormente, se propone también en este proyecto de código abierto , además de otras herramientas.



Eche un vistazo al complemento Soter Gradle para agregar casi sin problemas la compatibilidad con Findbugs, Checkstyle y PMD a los proyectos de Android.


Obtuve pmd, findbugs y checkstyle trabajando con Gradle 1.12, complemento de Android 0.12. + Utilizando el siguiente script:

apply plugin: ''checkstyle'' apply plugin: ''findbugs'' apply plugin: ''pmd'' check.dependsOn ''checkstyle'', ''findbugs'', ''pmd'' task checkstyle(type: Checkstyle) { configFile file("${project.rootDir}/config/quality/checkstyle/checkstyle.xml") source ''src'' include ''**/*.java'' exclude ''**/gen/**'' classpath = files() } task findbugs(type: FindBugs) { ignoreFailures = true effort = "max" reportLevel = "high" excludeFilter = new File("${project.rootDir}/config/quality/findbugs/findbugs-filter.xml") classes = files("$project.buildDir/intermediates/classes/") source ''src'' include ''**/*.java'' exclude ''**/gen/**'' reports { xml { destination "$project.buildDir/reports/findbugs/findbugs.xml" xml.withMessages true } } classpath = files() } task pmd(type: Pmd) { ruleSetFiles = files("${project.rootDir}/config/quality/pmd/pmd-ruleset.xml") ignoreFailures = true ruleSets = ["basic", "braces", "strings"] source ''src'' include ''**/*.java'' exclude ''**/gen/**'' reports { xml.enabled = true html.enabled = false } }

Al ejecutar gradle build en la línea de comandos, se ejecutarán todos los complementos de calidad de código y se generarán informes XML en app / build / reports / que estarán listos para ser vistos o analizados por las herramientas de CI.


Para que esto funcione con mi proyecto de Android, tuve que declarar la tarea explícitamente.

Esto es lo que funcionó para mí:

apply plugin: ''checkstyle'' task checkstyle(type: Checkstyle) { source ''src'' include ''**/*.java'' exclude ''**/gen/**'' // empty classpath classpath = files() }

Tenga en cuenta que el complemento de Android puede optar por crear una tarea con el mismo nombre en el futuro o trabajar en conjunto con el complemento de estilo de cheques de diferentes maneras.


Puede probar el complemento de Android Check ( https://github.com/noveogroup/android-check ):

  • Cheque de estilo
  • PMD

Configuración:

buildscript { repositories { jcenter() } dependencies { ... classpath ''com.noveogroup.android:check:+'' ... } } apply plugin: ''com.noveogroup.android.check''

Puedes usar la configuración hardcore:

check { abortOnError true checkstyle { config hard() } pmd { config hard() } }