El análisis de código estático envuelve el estilo de checkStyle, Spotbugs, PMD y CPD, que ofrece nuevas características y extensiones a los complementos encapsulados, lo que facilita el uso y proporciona mejores resultados con un esfuerzo mínimo.
Fuera de la caja, con solo aplicar el complemento que obtiene:
R.class y BuildConfig.class )Estamos en el portal de complementos de grado, por lo que simplemente puede hacer:
plugins {
id ' com.monits.staticCodeAnalysis ' version ' 3.1.1 '
}O también podrías hacer
buildscript {
repositories {
maven {
url ' https://plugins.gradle.org/m2/ '
}
}
dependencies {
classpath ' com.monits:static-code-analysis-plugin:3.1.1 '
}
}
apply plugin : ' com.monits.staticCodeAnalysis 'o, directamente de JCenter
buildscript {
repositories {
jcenter()
}
dependencies {
classpath ' com.monits:static-code-analysis-plugin:3.1.1 '
}
}
apply plugin : ' com.monits.staticCodeAnalysis ' | Versión de complemento | Versión de graduado | Versión del complemento de Android Gradle |
|---|---|---|
| 3.x | 5.6+ | 3.3.0+ |
| 2.6.12 | 2.3 hasta 5.6.x | 1.1.x hasta 3.5.x |
Antes de la versión 3.0.0 se usó FindBugs en lugar de Spotbugs.
La configuración del análisis de código estático es muy simple e intuitivo gracias a su DSL. Puede elegir qué complemento encapsulado ejecutar y establecer sus archivos de configuración. Aquí hay un ejemplo rápido
staticCodeAnalysis {
spotbugs = true
checkstyle = true
pmd = true
cpd = true
androidLint = true
ignoreErrors = true
// default rules
spotbugsExclude = " $p roject . rootProject . projectDir /config/spotbugs/excludeFilter.xml "
checkstyleRules = ' https://raw.githubusercontent.com/Monits/static-code-analysis-plugin/staging/defaults/checkstyle/checkstyle-cache.xml '
pmdRules = [ ' https://raw.githubusercontent.com/Monits/static-code-analysis-plugin/staging/defaults/pmd/pmd.xml ' ,
' https://raw.githubusercontent.com/Monits/static-code-analysis-plugin/staging/defaults/pmd/pmd-android.xml ' ]
androidLintConfig = ' https://raw.githubusercontent.com/Monits/static-code-analysis-plugin/staging/defaults/android/android-lint.xml '
sourceSetConfig {
test { // or the name of any other sourceset
// use a more relaxed ruleset
checkstyleRules = ' config/checkstyle/test-checkstyle.xml '
spotbugsExclude = ' config/spotbugs/test-spotbugs.xml '
pmdRules = [ ' config/pmd/test-pmd.xml ' ,
' https://raw.githubusercontent.com/Monits/static-code-analysis-plugin/staging/defaults/pmd/pmd-android.xml ' ]
}
}
}Por defecto, todos los complementos se aplican, los errores no fallarán la compilación, y las reglas y exclusiones se tomarán de los últimos valores predeterminados de este repositorio
Antes de la versión 3.0.0 se usó FindBugs en lugar de Spotbugs. Si usa la versión anterior, el DSL es equivalente, pero usa findbugs en lugar de spotbugs para todas las propiedades.
Todas las propiedades V2.X FindBugs DSL se asignan automáticamente a SpotBugs en v3.x para una actualización más fácil
Las reglas utilizadas por PMD, Spotbugs y CheckStyle se pueden anular por SourceSet en el bloque sourceSetConfig .
Para incluir reglas de pelusa personalizadas, simplemente puede incluir los frascos como dependencias en androidLint . Por ejemplo, puede incluir las revestimientos Android de Monits agregando:
dependencies {
androidLint ' com.monits:android-linters:1.+ '
}El complemento agregará las siguientes tareas:
cpdcheckstyle , depende de:checkstyleSourcesetname por set de fuente ( checkstyleMain , checkstyleTest , así).spotbugs , depende de:spotbugsSourcesetname por set de fuente ( spotbugsMain , spotbugsTest , así).pmd , depende de:pmdSourcesetname por set de origen ( pmdMain , pmdTest , por así decirlo). Antes de la versión 3.0.0 se usó FindBugs en lugar de Spotbugs. Las antiguas tareas findbugs* todavía están disponibles y se mapean con la tarea spotbugs*
Todas las tareas están conectadas para ejecutarse como parte de la tarea check del complemento Java.
Como siempre, no dude en contribuir en cualquier forma o forma, ¡esperamos sus comentarios!
Si está viendo cosas que se informan, que cree que debería ser una de las dos cosas:
Dado que cada herramienta tiene su propio mecanismo de supresión, debe referirse a su documentación:
@SupressFBWarnings javadocCopyright 2010-2017 Monits SA
Licenciado bajo la licencia Apache, versión 2.0 (la "licencia"); No puede usar este trabajo, excepto de conformidad con la licencia. Puede obtener una copia de la licencia en:
http://www.apache.org/licenses/license-2.0