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 2013Estoy 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.
CheckStyle para Android:
- CheckStyle.
- PMD.
- Findbugs.
Blog: http://sethrylan.org/2013/07/14/gradle-android-findbugs.html
Código: https://gist.github.com/sethrylan/6002657#file-findbugs-gradle
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() }
}