Maven findbugs:check-错误的输出摘要 [英] Maven findbugs:check - Output Summary Of Bugs

查看:116
本文介绍了Maven findbugs:check-错误的输出摘要的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人知道如何配置Maven findbugs插件以将错误摘要输出到控制台(类似于pmd插件)吗?

Does anybody know how to configure the maven findbugs plugin to output a summary of the bugs to the console (similar to the pmd plugin)?

目前,findbugs:check仅打印出总共有多少个bug,我需要检查各个模块的target/findbugs目录和每个findbugs.xml文件以解决问题.

At present findbugs:check just prints out how many bugs there are in total and I need to check the individual modules target/findbugs directory and each findbugs.xml file to fix the issues.

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>2.0.1</version>                              
<configuration>
        <xmlOutput>true</xmlOutput>
        <xmlOutputDirectory>findbugsreports</xmlOutputDirectory>
        <findbugsXmlOutput>true</findbugsXmlOutput>
        <findbugsXmlOutputDirectory>target/site/findbugsreports</findbugsXmlOutputDirectory>
        <debug>true</debug>
</configuration> 
</plugin>

理想情况下,最好在命令行中返回摘要报告.有什么想法吗?

Ideally it would be good to get a summary report back on the command line. Any ideas?

推荐答案

当前没有使用标准插件执行此操作的方法.您可以创建一个插件来读取findbugsChecks.xml并输出所需的信息.

There isn't currently a means to do this using the standard plugin. You can create a plugin to read the findbugsChecks.xml and output the information you need though.

下面的代码将输出发现的错误总数,以及在输出目录中具有findbugsChecks.xml的任何项目的每个程序包的错误.您可以通过在配置上设置findBugsChecks属性来配置读取文件的名称:

The code below will output the total bugs found and the bugs per package for any project with a findbugsChecks.xml in the output directory. You can configure the name of the file it reads by setting the findBugsChecks property on the configuration:

package name.seller.rich;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.util.xml.Xpp3Dom;
import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;

/**
 * @goal stats
 */
public class FindbugsStatsMojo extends AbstractMojo {

    /**
     * Where to read the findbugs stats from
     * 
     * @parameter expression="${findbugsChecks}"
     *            default-value="${project.build.directory}/findbugsCheck.xml"
     */
    private File findbugsChecks;

    /**
     * Output the Findbus stats for the project to the console.
     */
    public void execute() throws MojoExecutionException, MojoFailureException {
        if (findbugsChecks != null && findbugsChecks.exists()) {
            try {
                Xpp3Dom dom = Xpp3DomBuilder.build(new FileReader(
                        findbugsChecks));

                // get the summary and output it
                Xpp3Dom summaryDom = dom.getChild("FindBugsSummary");

                // output any information needed
                getLog().info(
                        "Total bug count:"
                                + summaryDom.getAttribute("total_bugs"));

                Xpp3Dom[] packageDoms = summaryDom.getChildren("PackageStats");

                getLog().info(packageDoms.length + " package(s)");
                for (int i = 0; i < packageDoms.length; i++) {
                    String info = new StringBuilder().append("package ")
                            .append(packageDoms[i].getAttribute("package"))
                            .append(": types:").append(
                                    packageDoms[i].getAttribute("total_types"))
                            .append(", bugs:").append(
                                    packageDoms[i].getAttribute("total_bugs"))
                            .toString();
                    getLog().info(info);
                }
            } catch (FileNotFoundException e) {
                throw new MojoExecutionException(
                        "Findbugs checks file missing", e);
            } catch (XmlPullParserException e) {
                throw new MojoExecutionException(
                        "Unable to parse Findbugs checks file", e);
            } catch (IOException e) {
                throw new MojoExecutionException(
                        "Unable to read Findbugs checks file", e);
            }
        }
    }
}

要打包此代码,请将其添加到具有POM的Mavenproject的src/main/java文件夹中,如下所示:

To package this code, add it to the src/main/java folder of a Mavenproject with a POM like this:

<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>
  <groupId>name.seller.rich</groupId>
  <artifactId>maven-findbugs-stats-plugin</artifactId>
  <packaging>maven-plugin</packaging>
  <version>0.0.1</version>
  <dependencies>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-core</artifactId>
      <version>2.2.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-plugin-api</artifactId>
      <version>2.2.0</version>
    </dependency>
  </dependencies>
</project>

然后运行 mvn install 来安装插件.

要实际使用它,可以将其作为命令行上的附加目标来运行,也可以将其绑定到项目中以作为标准生命周期的一部分来运行.

To actually use it, you can run it as an additional goal on the command line, or bind it to your project to run as part of the standard lifecycle.

这是从命令行运行的命令(假设项目以前已经编译过:

Here's the command to run from the commandline (assuming the project has previously been compiled:

mvn findbugs:check name.seller.rich:maven-findbugs-stats-plugin:0.0.1:stats

要将配置绑定到您的项目,以便将其在每个版本上运行,请使用以下配置:

To bind the configurations to your project so it will be run on each build, use the following configuration:

<build>
  <plugins>
    <plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>findbugs-maven-plugin</artifactId>
  <version>2.1</version>
  <executions>
    <execution>
      <id>check</id>
      <phase>package</phase>
      <goals>
        <goal>check</goal>
      </goals>
    </execution>
  </executions>                              
  <configuration>
    <xmlOutput>true</xmlOutput>
    <xmlOutputDirectory>findbugsreports</xmlOutputDirectory>
    <findbugsXmlOutput>true</findbugsXmlOutput>
    <findbugsXmlOutputDirectory>${findbugsOutputDirectory}</findbugsXmlOutputDirectory>
    <debug>true</debug>
    <failOnError>false</failOnError>
  </configuration> 
    </plugin>
    <plugin>
    <groupId>name.seller.rich</groupId>
    <artifactId>maven-findbugs-stats-plugin</artifactId>
    <executions>
      <execution>
        <id>stats</id>
        <phase>package</phase>
        <goals>
          <goal>stats</goal>
        </goals>
      </execution>
    </executions>
    </plugin>
  </plugins>
</build>

这篇关于Maven findbugs:check-错误的输出摘要的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆