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

How can I print reported bugs to console in gradle findbugs plugin?

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

如您所见hereFindBugs 插件没有这样的属性或配置可能性。但是,该插件似乎可以通过某种方式进行自定义。例如。通过解析和显示结果。

here and

这是最基本的...但这是一个开始

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

您可以使用 Violations Gradle Plugin 做到这一点。它配置有模式来识别报告文件并在 check 之后 运行。会

  • 将所有静态代码分析工具汇总到一个统一的报告中。
  • 将其打印到构建日志。
  • 如果违规太多,可选择使构建失败。

Findbugs/Spotbugs 附带一个 class,可以 运行 分析后,读取 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>

与运行ning

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

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

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