A análise de código estático envolve o estilo de seleção, o Spotbugs, o PMD e o CPD, oferecendo novos recursos e extensões para os plugins encapsulados, facilitando o uso e fornecendo melhores resultados com um esforço mínimo.
Fora da caixa, apenas aplicando o plug -in que você recebe:
R.class e BuildConfig.class )Estamos no portal do plug -in de grau, para que você possa simplesmente fazer:
plugins {
id ' com.monits.staticCodeAnalysis ' version ' 3.1.1 '
}ou, você também pode fazer
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, diretamente do JCenter
buildscript {
repositories {
jcenter()
}
dependencies {
classpath ' com.monits:static-code-analysis-plugin:3.1.1 '
}
}
apply plugin : ' com.monits.staticCodeAnalysis ' | Versão do plug -in | Versão gradle | Versão do plugin Android Gradle |
|---|---|---|
| 3.x | 5.6+ | 3.3.0+ |
| 2.6.12 | 2.3 até 5.6.x | 1.1.x até 3.5.x |
Antes da versão 3.0.0, o FindBugs era usado em vez de BUGS SPOTBUGS.
Configurar a análise de código estático é muito simples e intuitivo, graças ao seu DSL. Você pode escolher qual plug -in encapsulado para executar e definir seus arquivos de configuração. Aqui está um exemplo 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 padrão, todos os plugins são aplicados, erros não falharão na construção e as regras e exclusões serão retiradas dos mais recentes padrões deste repositório
Antes da versão 3.0.0, o FindBugs era usado em vez de BUGS SPOTBUGS. Se estiver usando a versão antiga, o DSL é equivalente, mas usa findbugs em vez de spotbugs para todas as propriedades.
Todas as propriedades V2.x FindBugs DSL são automaticamente mapeadas para os bugs spotbugs em v3.x para facilitar a atualização
As regras usadas pelo PMD, SpotBugs e Checkstyle podem ser superestiladas por sourourceset no bloco sourceSetConfig .
Para incluir regras personalizadas, você pode simplesmente incluir os frascos como dependências no androidLint . Por exemplo, você pode incluir os linters Android do Monits, adicionando:
dependencies {
androidLint ' com.monits:android-linters:1.+ '
}O plugin adicionará as seguintes tarefas:
cpdcheckstyle , depende de:checkstyleSourcesetname por conjunto de origem ( checkstyleMain , checkstyleTest , assim por diante).spotbugs , depende de:spotbugsSourcesetname por conjunto de origem ( spotbugsMain , spotbugsTest , assim por diante).pmd , depende de:pmdSourcesetname por fonte ( pmdMain , pmdTest , assim por diante). Antes da versão 3.0.0, o FindBugs era usado em vez de BUGS SPOTBUGS. As tarefas antigas findbugs* ainda estão disponíveis e mapearem para as tarefas spotbugs* correspondentes*
Todas as tarefas são fisgadas para serem executadas como parte da tarefa check do plug -in Java.
Como sempre, fique à vontade para contribuir de qualquer forma ou forma, estamos ansiosos para o seu feedback!.
Se você estiver vendo coisas sendo relatadas que você acha que não deveria ser uma das duas coisas:
Como toda ferramenta tem seu próprio mecanismo de supressão, você deve consultar sua documentação:
@SupressFBWarnings javadocCopyright 2010-2017 MONITS SA
Licenciado sob a licença Apache, versão 2.0 (a "licença"); Você não pode usar este trabalho, exceto em conformidade com a licença. Você pode obter uma cópia da licença em:
http://www.apache.org/license/license-2.0