如何使用Maven FindBugs生成HTML报告?

时间:2015-07-17 01:06:30

标签: java xml maven

我知道有一个类似的问题被问到here,但我在pom.xml中的设置有点不同,答案对我的情况不起作用。

我设置了findbugs,这样当我运行[mvn compile findbugs:findbugs]时,我得到了生成的默认findbugsXML.xml。我想生成一个html文件,以便它更具可读性。下面是我添加到pom.xml以便设置findbugs的内容。我不确定为什么没有生成html文件,因为我在编写pom.xml时已经包含了该规范。以下内容已添加到pom.xml中的build的插件部分中。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>

<artifactId>findbugs-cookbook</artifactId>
<packaging>jar</packaging>
<version>3.0.1</version>
<name>FindBugs Maven plugin Cookbook</name>
<description>FindBugs Maven plugin Cookbook</description>
<licenses>
    <license>
        <name>Apache License 2.0</name>
        <url>http://www.apache.org/licenses/LICENSE-2.0</url>
    </license>
</licenses>
<properties>
    <jdk.version>1.7</jdk.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<build>
    <finalName>findbugs</finalName>
    <resources>
        <resource>
            <filtering>true</filtering>
            <directory>src/main/resources</directory>
        </resource>
    </resources>
    <plugins>       
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>findbugs-maven-plugin</artifactId>
            <version>3.0.1</version>
        </plugin>
    <!--</plugins>
    <plugins> -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>${jdk.version}</source>
                <target>${jdk.version}</target>
                <encoding>${project.build.sourceEncoding}</encoding>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.0.1</version>
            <configuration>
                <encoding>${project.build.sourceEncoding}</encoding>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>findbugs-maven-plugin</artifactId>
            <version>3.0.1</version>
            <configuration>
                <effort>Max</effort>
                <failOnError>false</failOnError>
                <findbugsXmlOutputDirectory>${project.build.directory}/findbugs</findbugsXmlOutputDirectory>
                <threshold>Low</threshold>
                <xmlOutput>true</xmlOutput>
            </configuration>
            <executions>
                <execution>
                    <id>analyze-compile</id>
                    <phase>compile</phase>
                    <goals>
                        <goal>check</goal>
                    </goals>
                </execution>
            </executions>
        </plugin> 
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>xml-maven-plugin</artifactId>
            <version>1.0</version>
            <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>
            <executions>
                <execution>
                    <phase>compile</phase>
                    <goals>
                        <goal>transform</goal>
                    </goals>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>com.google.code.findbugs</groupId>
                    <artifactId>findbugs</artifactId>
                    <version>3.0.1</version>
                </dependency>
            </dependencies>
        </plugin>    
    </plugins>
</build>

我正在使用Apache Maven 3.2.3和Java版本:1.8.0_20。我还在apache-maven-3.2.3目录中包含了findbugs-3.0.1.jar和findbugs-maven-plugin-3.0.1.jar。

1 个答案:

答案 0 :(得分:0)

有4个变量:

  • java / JDK版本
  • maven version
  • findbugs插件版本
  • findbugs version

使用java-1.7,它可以在我的Windows系统上使用指定版本的maven,findbugs,findbugs-maven-plugin。基本上较旧版本的findbugs不适用于java 8。

使用java-1.8,如果我使用版本3.0.1的findbugs和findbugs-maven-plugin,它就可以工作。

由于bound任务的目标findbugs compile,您只需运行mvn clean compile