Плагины для плагинов android

У меня есть проект Android. Я хочу представить findbugs в моем проекте как плагин gradle. Я попытался отредактировать build.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 ? Какую команду градации я должен использовать?

Просто поместите это в свои модули 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 

Или другие задачи поиска в разных вариантах, в зависимости от вашей конфигурации.

Я вижу некоторые проблемы с вашей конфигурацией:

  • Вместо версии 2.0.1 используйте последнюю версию 3.0.1
  • Установить reportLevel на low а не high чтобы сообщать обо всех нарушениях
  • Для первого анализа вам не нужно настраивать includeFilter или excludeFilter – это только белые списки и черные списки проверок, если вам нужна какая-то настройка

Чтобы запустить анализ, просто вызовите gradle findbugsMain . Результаты должны быть видны на выходе.

Пожалуйста, взгляните на этот проект https://github.com/Piasy/AndroidCodeQualityConfig .

Этот проект включает в себя lint, pmd, findbugs, checkstyle, jacoco code coverage. И проект поддержки с подмодулями.