Анализ статического кода оборачивается вокруг Checkstyle, Spotbugs, PMD и CPD, предлагая новые функции и расширения для инкапсулированных плагинов, что облегчает их использование и обеспечивает лучшие результаты с минимальными усилиями.
Вне коробки, просто применяя плагин, который вы получаете:
R.class и BuildConfig.class )Мы находимся на портале плагина, так что вы можете просто сделать:
plugins {
id ' com.monits.staticCodeAnalysis ' version ' 3.1.1 '
}Или вы также можете сделать
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 'или прямо из JCenter
buildscript {
repositories {
jcenter()
}
dependencies {
classpath ' com.monits:static-code-analysis-plugin:3.1.1 '
}
}
apply plugin : ' com.monits.staticCodeAnalysis ' | Версия плагина | Градл Версия | Версия плагина Android Gradle |
|---|---|---|
| 3.x | 5,6+ | 3.3.0+ |
| 2.6.12 | 2.3 до 5,6.x | 1.1.x до 3.5.x |
До версии 3.0.0 Findbugs использовалась вместо Spotbugs.
Настройка анализа статического кода очень проста и интуитивно понятна благодаря своему DSL. Вы можете выбрать, какой инкапсулированный плагин для запуска и установить его файлы конфигурации. Вот быстрый пример
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 ' ]
}
}
}По умолчанию все плагины применяются, ошибки не покинут сборку, а правила и исключения будут взяты из последних дефолтов этого хранилища
До версии 3.0.0 Findbugs использовалась вместо Spotbugs. При использовании старой версии DSL эквивалентен, но использует findbugs вместо spotbugs для всех свойств.
Все свойства v2.x findbugs DSL автоматически наметаются на Spotbugs в V3.x для облегчения обновления
Правила, используемые PMD, Spotbugs и Checkstyle, могут быть переопределены по исходному делу в блоке sourceSetConfig .
Чтобы включить пользовательские правила Lint, вы можете просто включить банки в качестве зависимостей под androidLint . Например, вы можете включить Linters Android на Android Minits, добавив:
dependencies {
androidLint ' com.monits:android-linters:1.+ '
}Плагин добавит следующие задачи:
cpdcheckstyle , зависит от:checkstyleSourcesetname Задача для каждого исходного набора ( checkstyleMain , checkstyleTest , так далее).spotbugs , зависит от:spotbugsSourcesetname Задача для каждого исходного набора ( spotbugsMain , spotbugsTest , так далее).pmd , зависит от:pmdSourcesetname на исходный набор ( pmdMain , pmdTest , так далее). До версии 3.0.0 Findbugs использовалась вместо Spotbugs. Старые findbugs* Задачи все еще доступны, и карта соответствующей задачи spotbugs*
Все задачи подключены для запуска как часть check задачи плагина Java.
Как всегда, не стесняйтесь вносить свой вклад в любую форму или форму, мы с нетерпением ждем ваших отзывов!.
Если вы увидите, как сообщают вещи, которые, по вашему мнению, не должны быть одной из двух вещей:
Поскольку каждый инструмент имеет свой собственный механизм подавления, вы должны ссылаться на его документацию:
@SupressFBWarnings javadocCopyright 2010-2017 Binits SA
Лицензировано по лицензии Apache, версия 2.0 («Лицензия»); Вы не можете использовать эту работу, кроме как в соответствии с лицензией. Вы можете получить копию лицензии по адресу:
http://www.apache.org/licenses/license-2.0