Android Studio - FindBugs excludeFilter文件适用于IDEA插件,但不适用于Gradle插件

时间:2015-09-15 19:04:07

标签: android-studio gradle android-gradle findbugs

我有以下排除过滤器来忽略所有R文件类:

的FindBugs - 排除-filter.xml

<?xml version="1.0" encoding="UTF-8"?>
<FindBugsFilter>
    <Match>
        <Class name="~.*\.R\$.*"/>
    </Match>
</FindBugsFilter>

当我将它用于FindBugs-IDEA插件时,它可以工作。

然而,当我将它用于FindBugs Gradle插件时,在这样的任务中:

的build.gradle

apply plugin: 'findbugs'
task myFindBugsTask(type: FindBugs)  {

    .....

    excludeFilter = file("$project.rootDir/findbugs-exclude-filter.xml")

    .....
}

我收到错误消息:Cannot read file specified for FindBugs 'excludeFilter' property:。该报告仍然已成功生成,但过滤器未生成。

我已经尝试过我在互联网上找到的每个解决方案(其中大部分已经过时)并且我得到了相同的结果。

那是什么给出的?这是一个已知的错误?我是唯一一个体验过这种情况的人吗?

2 个答案:

答案 0 :(得分:2)

如果有人遇到同样的问题,我找到了解决方法。概念是提交过滤的文件树。我的任务现在看起来像这样:

apply plugin: 'findbugs'
task myFindBugsTask(type: FindBugs)  {

    .....

    FileTree tree = fileTree("$project.buildDir/intermediates/classes").exclude('**/*R$*.class')
    classes = tree

    .....

}

答案 1 :(得分:0)

这是正确的过滤器:

 <Match>
     <Class name="~.*\.R(\$.*)?" />
 </Match>

这会攻击所有R类和内部类。