Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Findbugs android gradle插件_Android_Android Gradle Plugin_Build.gradle_Findbugs_Gradlew - Fatal编程技术网

Findbugs android gradle插件

Findbugs android gradle插件,android,android-gradle-plugin,build.gradle,findbugs,gradlew,Android,Android Gradle Plugin,Build.gradle,Findbugs,Gradlew,我有一个android项目。我想在我的项目中引入findbugs作为gradle插件。我试图编辑项目的build.gradle,如下所示 buildscript { repositories { mavenCentral() maven { url 'https://maven.fabric.io/public' } } dependencies { classpath 'com.android.tools.build:gra

我有一个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命令?

我发现您的配置存在一些问题:

  • 使用最新的
    3.0.1
  • reportLevel
    设置为
    low
    而不是
    high
    以报告所有违规行为
  • 对于第一次分析,您不需要配置任何
    includeFilter
    excludeFilter
    ——如果您需要一些自定义,这些只是检查的白名单和黑名单

要运行分析,只需调用gradlefindbugsmain。结果应该在输出中可见。

只需将其放入您的模块
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任务,具体取决于您的配置。

请查看此项目


此项目包括lint、pmd、findbugs、checkstyle、jacoco代码覆盖率。并支持带有子模块的项目。

单击“立即同步”以更新gradle@sukumar实际上我需要一个命令来调用它,因为这是作为持续集成的一部分来完成的。同步就是成功。零错误和零警告。这个插件看起来还好吗。Kordas:这个插件在执行
/gradlew findbugsMain
的过程中似乎工作正常。但是我在指定的文件夹中找不到任何日志。您确定
build/findbugsReports
目录中没有任何内容吗?Kordas:
build/findbugsReport
目录未生成。因此,
[sourceset.main]
中可能没有任何内容。您可以尝试在不使用
sourceset
属性或使用不同值的情况下运行吗?Kordas:仍然没有生成
build/findbugsReport
文件夹。插件在
sourceset
中需要什么。我的项目中有多个模块。