任何从没有站点:站点的 Maven 生成 Findbug HTML 报告的简单方法?

Posted

技术标签:

【中文标题】任何从没有站点:站点的 Maven 生成 Findbug HTML 报告的简单方法?【英文标题】:Any easy way to generate a Findbug HTML report from Maven without site:site? 【发布时间】:2011-10-25 11:51:19 【问题描述】:

我正在尝试将 FindBugs 集成到一个 Maven 项目中。有没有人有一个示例pom.xml 在目标中生成一个简单的 findbug html 报告?是否可以在不运行site:site 的情况下生成此报告?

【问题讨论】:

我正在考虑触发一个 ant 任务,但maven-findbugs-plugin 可能有更好的方法。 【参考方案1】:

Findbugs jar 包含 5 个 XSLT 转换,可用于将难以阅读的 XML 转换为易于阅读的 HTML,因此我们可以使用 xml-maven-plugin 插件执行转换,以下是配置:

<plugins>
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>findbugs-maven-plugin</artifactId>
        <version>2.4.0</version>
        <executions>
            <execution>
                <id>findbug</id>
                <phase>verify</phase>
                <goals>
                    <goal>check</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <findbugsXmlOutputDirectory>
                $project.build.directory/findbugs
            </findbugsXmlOutputDirectory>
            <failOnError>false</failOnError>
        </configuration>
    </plugin>

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>xml-maven-plugin</artifactId>
        <version>1.0</version>
        <executions>
            <execution>
                <phase>verify</phase>
                <goals>
                    <goal>transform</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <transformationSets>
                <transformationSet>
                    <dir>$project.build.directory/findbugs</dir>
                    <outputDir>$project.build.directory/findbugs</outputDir>
                    <stylesheet>fancy-hist.xsl</stylesheet>
                    <!--<stylesheet>default.xsl</stylesheet>-->
                    <!--<stylesheet>plain.xsl</stylesheet>-->
                    <!--<stylesheet>fancy.xsl</stylesheet>-->
                    <!--<stylesheet>summary.xsl</stylesheet>-->
                    <fileMappers>
                        <fileMapper
                                implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
                            <targetExtension>.html</targetExtension>
                        </fileMapper>
                    </fileMappers>
                </transformationSet>
            </transformationSets>
        </configuration>
        <dependencies>
            <dependency>
                <groupId>com.google.code.findbugs</groupId>
                <artifactId>findbugs</artifactId>
                <version>2.0.0</version>
            </dependency>
        </dependencies>
    </plugin>
</plugins>

要获取报告,只需执行mvn clean install

上面的代码 sn-p 包含所有 5 种可能的转换,所以请尝试所有的转换,希望你会找到一个你喜欢的。

我用 maven 3 和 Finbugs 2.0 尝试过

【讨论】:

谢谢,这行得通!但是在 &lt;failOnError&gt;true&lt;/failOnError&gt; 的情况下有什么方法可以生成 html 输出?那太棒了) @Enigo检查这个答案:***.com/a/38655823/636849 @LucasCimon 是的,我已经检查过了,因为这是我的答案,哈哈) 处理时出现以下错误:Unable to get XClass for java/lang/StringBuilder 但是,文件已构建,但我找不到任何错误日志。【参考方案2】:

查看Sonar。它是一个开源、独立的 Web 服务,您可以将代码“提交”到该服务,它会生成关于各种代码指标的精美 HTML 报告。它还保留了构建历史。最重要的是,您不必修改构建或 pom!

它也有一个 maven 目标:sonar:sonar。 Jenkins(以前是 Hudson)有一个插件,所以如果你将它用于你的 CI 是完全没有痛苦的。

检查一下 - 你不会后悔的!

【讨论】:

它看起来是一个有趣的工具,但我目前在使其工作时遇到了一些麻烦。 哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇这比性好......你让我的一天/周/月/季度/年!这是梦想的东西! mvn clean install sonar:sonar + 运行声纳服务器,就是这样!!!如果可以的话,我会给你 1k 点的小费!!! @JVerstry 很高兴为您提供帮助!实际上,有可能通过赏金给我 1k 积分 :) 投反对票。问题是关于 FindBugs。我无法切换到声纳,所以这可能是评论,但不是答案。 @ThiagoNegri 其他人显然不同意。如果您费心检查,您会看到声纳产生了一个 FindBugs 报告(并且在没有 site:site 的情况下这样做),所以这个确实实际上回答了这个问题。此外,声纳远优于仅 FindBugs,因此它通过建议 OP 意图的替代解决方案来回答这个问题。但谢谢你至少说出你投反对票的原因。

以上是关于任何从没有站点:站点的 Maven 生成 Findbug HTML 报告的简单方法?的主要内容,如果未能解决你的问题,请参考以下文章

Maven:站点生成

笔记:Maven 生成项目站点

Maven生命周期

运行 maven 站点的奇怪问题(处理 POM 时遇到问题)

当代码具有不完整的 java doc 标签时,Maven 站点因 Java 8 而失败

maven生命周期