如何在gradle findbugs插件中将报告的错误打印到控制台?

时间:2015-03-11 08:56:44

标签: plugins gradle findbugs

我正在使用Gradle FindBugs插件。如何将报告的错误打印到控制台? PMD插件具有consoleOutput属性。 FindBugs有类似的属性吗?

4 个答案:

答案 0 :(得分:2)

正如您所看到的here,FindBugs插件没有此类属性或配置可能性。但是,似乎可以通过某种方式自定义插件。例如。通过解析和显示结果。

请参阅herehere

答案 1 :(得分:1)

这是初步的......但这是一个开始

task checkFindBugsReport << {
    def xmlReport = findbugsMain.reports.xml
    if (!xmlReport.destination.exists()) return;
    def slurped = new XmlSlurper().parse(xmlReport.destination)
    def report = ""
    slurped['BugInstance'].eachWithIndex { bug, index ->
        report += "${index + 1}. Found bug risk ${bug.@'type'} of category ${bug.@'category'} "
        report += "in the following places"
        bug['SourceLine'].each { place ->
            report += "\n       ${place.@'classname'} at lines ${place.@'start'}:${place.@'end'}"
        }
    }
    if (report.length() > 1) {
        logger.error "[FINDBUGS]\n ${report}"
    }
}

findbugsMain.finalizedBy checkFindBugsReport

答案 2 :(得分:1)

您可以使用Violations Gradle Plugin执行此操作。它配置了模式以标识报告文件并在check之后运行。它会

  • 将所有静态代码分析工具累积到统一报告中。
  • 将其打印到构建日志。
  • 如果违规次数过多,可选择使构建失败。

答案 3 :(得分:0)

Findbugs / Spotbugs带有一个可以在分析后运行,读取xml报告并打印为text / html的类。它包含在findbugs / spotbugs.jar文件中。

    <java classname="edu.umd.cs.findbugs.PrintingBugReporter" fork="true">
        <arg value="${build.dir}/findbugs/findbugs-test-report.xml"/>
        <classpath path="${spotbugs.home}/lib/spotbugs.jar"/>
    </java>

与跑步相同

java  -cp path/to/spotbugs.jar edu.umd.cs.findbugs.PrintingBugReporter  path/to/findbugs-report.xml

它具有一个-html选项,它将呈现html。

在gradle / maven中实现相同目标应该是可行的。