我无法让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会正确生成报告,但它包含所有内容。

最佳答案

我遇到了完全相同的问题,这是由于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;
    }
}

关于ant - FindBugs使用Ant排除过滤器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24275252/

10-13 05:30