L'analyse de code statique s'enroule autour de Checkstyle, Spotbugs, PMD et CPD, offrant de nouvelles fonctionnalités et extensions aux plugins encapsulés, ce qui facilite les utiliser et fournir de meilleurs résultats avec un effort minimum.
Out de la boîte, avec simplement l'application du plugin que vous obtenez:
R.class et BuildConfig.class )Nous sommes sur le portail du plugin de qualité, vous pouvez donc simplement faire:
plugins {
id ' com.monits.staticCodeAnalysis ' version ' 3.1.1 '
}ou, vous pourriez aussi faire
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 'Ou, directement de JCenter
buildscript {
repositories {
jcenter()
}
dependencies {
classpath ' com.monits:static-code-analysis-plugin:3.1.1 '
}
}
apply plugin : ' com.monits.staticCodeAnalysis ' | Version du plugin | Gradle Version | Version du plugin Android Gradle |
|---|---|---|
| 3.x | 5.6+ | 3.3.0+ |
| 2.6.12 | 2,3 jusqu'à 5.6.x | 1.1.x jusqu'à 3.5.x |
Avant la version 3.0.0, FindBugs a été utilisé à la place des spots.
La configuration de l'analyse de code statique est très simple et intuitive grâce à son DSL. Vous pouvez choisir le plugin encapsulé à exécuter et définir ses fichiers de configuration. Voici un exemple rapide
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 ' ]
}
}
}Par défaut, tous les plugins sont appliqués, les erreurs n'échoueront pas la build, et les règles et exclusions seront tirées des dernières valeurs par défaut de ce référentiel
Avant la version 3.0.0, FindBugs a été utilisé à la place des spots. Si vous utilisez l'ancienne version, le DSL est équivalent, mais utilise findbugs au lieu de spotbugs pour toutes les propriétés.
Toutes les propriétés DSL V2.x FindBugs sont automatiquement accélérées sur les paires de points dans V3.x pour une mise à niveau plus facile
Les règles utilisées par PMD, Spotbugs et Checkstyle peuvent être remplacées par ai-sourceset dans le bloc sourceSetConfig .
Pour inclure des règles de charpie personnalisées, vous pouvez simplement inclure les pots en tant que dépendances sous androidLint . Par exemple, vous pouvez inclure des liners Android de monits en ajoutant:
dependencies {
androidLint ' com.monits:android-linters:1.+ '
}Le plugin ajoutera les tâches suivantes:
cpdcheckstyle , dépend de:checkstyleSourcesetname par set source ( checkstyleMain , checkstyleTest , ainsi de suite).spotbugs , dépend de:spotbugsSourcesetname par set source ( spotbugsMain , spotbugsTest , ainsi de suite).pmd , dépend de:pmdSourcesetname par set source ( pmdMain , pmdTest , donc on). Avant la version 3.0.0, FindBugs a été utilisé à la place des spots. Les anciennes tâches findbugs* sont toujours disponibles et mappent la tâche correspondante spotbugs*
Toutes les tâches sont accrochées pour être exécutées dans le cadre de la tâche check du plugin Java.
Comme toujours, n'hésitez pas à contribuer à n'importe quelle forme ou forme, nous attendons avec impatience vos commentaires!.
Si vous voyez des choses signalées, ce que vous pensez ne devrait pas être l'une des deux choses:
Puisque chaque outil a son propre mécanisme de suppression, vous devez vous référer à sa documentation:
@SupressFBWarnings javadocCopyright 2010-2017 monte SA
Licencié sous la licence Apache, version 2.0 (la "licence"); Vous ne pouvez pas utiliser ce travail, sauf conforme à la licence. Vous pouvez obtenir une copie de la licence à:
http://www.apache.org/licenses/license-2.0