В FindBugs плагин Gradle в Андроид
у меня есть проект Android. Я хочу представить findbugs
в моем проекте как плагин gradle. Я попытался отредактировать проект build.gradle
Как ниже.
buildscript {
repositories {
mavenCentral()
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'com.android.tools.build:gradle:1.0.0+'
classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: "java"
apply plugin: "findbugs"
findbugs {
toolVersion = "2.0.1"
sourceSets = [sourceSets.main]
ignoreFailures = false
reportsDir = file("$project.buildDir/findbugsReports")
effort = "max"
reportLevel = "high"
includeFilter = file("$rootProject.projectDir/config/findbugs/includeFilter.xml")
excludeFilter = file("$rootProject.projectDir/config/findbugs/excludeFilter.xml")
}
этот плагин правильный?
Нужно ли что-то добавлять или удалять?
Теперь что я должен сделать, чтобы получить результаты этого findbugs
проверить?
Какую команду gradle я должен использовать?
4 ответов
просто поместите это в ваш модули build.gradle
.
apply plugin: 'findbugs'
task customFindbugs(type: FindBugs) {
ignoreFailures = false
effort = "max"
reportLevel = "low"
classes = files("$project.buildDir/intermediates/classes")
// Use this only if you want exclude some errors
excludeFilter = file("$rootProject.rootDir/config/findbugs/exclude.xml")
source = fileTree('src/main/java/')
classpath = files()
reports {
xml.enabled = false
xml.withMessages = true
html.enabled = !xml.isEnabled()
xml.destination "$project.buildDir/outputs/findbugs/findbugs-output.xml"
html.destination "$project.buildDir/outputs/findbugs/findbugs-output.html"
}
}
build.dependsOn customFindbugs
затем после изменения каталога на путь проекта из командной строки используйте
./gradlew build
отчет об ошибке будет в $project.buildDir/outputs/findbugs/findbugs-output.html
Я немного изменил ответ Невина Раджа Виктора.
эта версия генерирует задачу findbug для каждого варианта сборки и (что более важно) правильно создает зависимости от их соответствующих задач компиляции. Действительно, findbugs требует компиляции кода перед его анализом.
// findbug tasks for each variant
apply plugin: 'findbugs'
android.applicationVariants.all { variant ->
task("findbugs${variant.name.capitalize()}", type: FindBugs) {
description "Analyze ${variant.name} code with the findbugs tool"
group "Verification"
ignoreFailures = true
effort = "default"
reportLevel = "medium"
classes = files("$project.buildDir/intermediates/classes/${variant.dirName}")
excludeFilter = file("$rootProject.rootDir/findbugs/findbugs-filter.xml")
source = variant.javaCompile.source
classpath = variant.javaCompile.classpath
reports {
// Only one of HTML or XML can be turned on at the same time
html.enabled = true
xml.enabled = !html.enabled
xml.withMessages = true
html.destination = "$project.buildDir/outputs/findbugs/findbugs-${variant.name}-output.html"
xml.destination = "$project.buildDir/outputs/findbugs/findbugs-${variant.name}-output.xml"
}
dependsOn "compile${variant.name.capitalize()}JavaWithJavac"
}
}
после этого вы можете запустить
./gradlew findbugsDebug
./gradlew findbugsRelease
или другие задачи findbugs на различных вариантах, в зависимости от вашей конфигурации.
пожалуйста, взгляните на этот проект https://github.com/Piasy/AndroidCodeQualityConfig.
этот проект, включая Линт, pmd, findbugs, checkstyle, покрытие кода jacoco.И проект поддержки с подмодулями.
Я вижу некоторые проблемы с конфигурацией:
- вместо
2.0.1
версия использовать последний3.0.1
- set
reportLevel
tolow
вместоhigh
сообщить обо всех нарушениях - для первого анализа вам не нужно настраивать какие-либо
includeFilter
илиexcludeFilter
- это только белый и черные списки проверок, если вам нужна настройка
для запуска анализа просто вызовите gradle findbugsMain
. Результаты должны быть видны в выход.