FindBugs使用Ant排除过滤器

时间:2014-06-18 00:21:54

标签: ant findbugs

我无法让FindBugs考虑我的排除过滤器:

在tools / findbugs-exclude.xml中:

<FindBugsFilter>
  <Match>
    <Bug pattern="WMI_WRONG_MAP_ITERATOR,SE_COMPARATOR_SHOULD_BE_SERIALIZABLE,RV_RETURN_VALUE_IGNORED,EI_EXPOSE_REP,EI_EXPOSE_REP2,MS_CANNOT_BE_FINAL,SBSC_USE_STRINGBUFFER_CONCATENATION,SE_BAD_FIELD"/>
  </Match>
</FindBugsFilter>

在build.xml中:

<findbugs home="${findbugs.home}" 
    output="html" 
    outputFile="${findbugs.output.current}" 
    timeout="1200000" 
    jvmargs="-Xmx1024m" 
    effort="max" 
    excludeFilter="${basedir}/tools/findbugs-exclude.xml">
  <auxClasspath>
    <fileset dir="${basedir}/lib">
      <include name="**/*.jar" />
    </fileset>
  </auxClasspath>
  <sourcePath path="${basedir}/sources" />
  <class location="${classes}" />
  <fileset dir="${basedir}/build/dist">
    <include name="*.jar" />
  </fileset>
</findbugs>

FindBugs正确生成报告,但它包含所有内容。

1 个答案:

答案 0 :(得分:1)

我遇到了完全相同的问题,原因是findbugs-exclude.xml文件路径中存在拼写错误。

尝试以详细模式运行ant:

C:\Workspace\example> ant -verbose

你会在输出中注意到这样的事情:

findbugs:
 [findbugs] Executing findbugs FindBugsTask from ant task
 [findbugs] Running FindBugs...
 [findbugs] Executing 'C:\Workspace\opt\Java\jdk1.8.0_72\jre\bin\java.exe' with arguments:
 [findbugs] '-Xmx1024m'
 [findbugs] '-Dfindbugs.hostApp=FBAntTask'
 [findbugs] '-Dfindbugs.home=C:\Workspace\opt\findbugs-3.0.1'
 [findbugs] '-classpath'
 [findbugs] 'C:\Workspace\opt\findbugs-3.0.1\lib\findbugs.jar'
 [findbugs] 'edu.umd.cs.findbugs.FindBugs2'
 [findbugs] '-sortByClass'
 [findbugs] '-timestampNow'
 [findbugs] '-xml:withMessages'
 [findbugs] '-exclude'
 [findbugs] 'C:\Workspace\example\tools\findbugs-exclude.xml'
 [findbugs] '-auxclasspathFromInput'
 [findbugs] '-sourcepath'
 [findbugs] 'C:\Workspace\example\src'
 [findbugs] '-outputFile'
 [findbugs] 'C:\Workspace\example\output\findbugs.xml'
 [findbugs] '-exitcode'
 [findbugs] 'C:\Workspace\example\cls'

如果缺少-exclude参数,请在build.xml中添加以下内容以查看路径是否正确:

<available property="file.exists" file="${basedir}/tools/findbugs-exclude.xml"/>
<echo>${basedir}/tools/findbugs-exclude.xml exists = ${file.exists}</echo>

因为FindBugsTask.java包含检查以查看excludeFilter文件是否存在。

public void setExcludeFilter(File filterFile) {
    if (filterFile != null && filterFile.length() > 0) {
        this.excludeFile = filterFile;
    } else {
        this.excludeFile = null;
    }
}