首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maven PMD插件-不使用“mvn站点”命令或“pmd:pmd”生成报告

Maven PMD插件-不使用“mvn站点”命令或“pmd:pmd”生成报告
EN

Stack Overflow用户
提问于 2015-02-27 23:03:49
回答 1查看 9.6K关注 0票数 7

我正在这里读一个有趣的教程:http://www.avajava.com/tutorials/lessons/how-do-i-generate-pmd-and-cpd-reports-for-a-site.html?page=1

本教程演示如何使用Maven运行开源静态分析工具PMD,并在Maven创建的网站上查看生成的输出。Maven可以很容易地使用mvn site命令创建网站,但是本教程展示了如何使用PMD对源代码进行更有用的度量。

这些指示已尽我所能遵照执行。下面是我阅读本教程的pom.xml文件:

代码语言:javascript
复制
<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>com.name.bookstore</groupId>
  <artifactId>bookstore</artifactId>
  <packaging>jar</packaging>
  <version>1</version>
  <name>bookstore</name>
  <url>http://maven.apache.org</url>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <extensions>
      <!-- start for deploying using webdav -->
      <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-webdav</artifactId>
        <version>1.0-beta-2</version>
      </extension>
    </extensions>
  </build>

  <distributionManagement>
    <!-- start -location where site is deployed -->
    <site>
      <id>site.deployments</id>
      <name>Site deployments</name>
      <url>dav:localhost/${basedir}</url>
    </site>
  </distributionManagement>

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>3.4</version>

      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jxr-plugin</artifactId>
        <version>2.5</version>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>2.10.1</version>
      </plugin>
    </plugins>
  </reporting>

</project>

当我运行命令:mvn clean site时,我得到了一个由Maven构建的网站,它有很多不同的页面,但是它们都没有显示任何关于PMD的内容。我在这里遗漏了什么?,为什么我在生成的网站上没有看到任何关于PMD的东西?

而且,当我运行mvn pmd:pmd时,有一个成功的构建,但是我没有获得任何有用的PMD度量。我甚至在我的一个Java源文件中编写了一些未使用的变量和方法,如上面的链接教程所示,没有任何有用的输出。

不过,mvn pmd:pmd命令似乎确实创建了一些文件。有几个文件是引擎的规则文件,其他的都是空的。请看下面的屏幕截图:

图1: pmd:pmd命令创建的文件

图2:空pmd文件--尽管Java源文件中存在明显的错误

外面有人知道怎么回事吗?为什么PMD不和Maven一起工作?

谢谢你读这篇文章。

另外,从我在PMD网站马文网站网站上看到的信息来看,“项目报告”部分应该有一些信息。这里没有来自PMD的数据。请看下面的屏幕截图.

图3:项目报告中没有PMD数据

问候

更新

当我将pom.xml文件的PMD部分更改为下面的代码片段时,我通过PMD获得了一些CPD结果,但是仍然没有从PMD获得代码错误的结果。我甚至在NullPointerException和PMD中编码,即使在发出mvn pmd:check命令时也没有说什么。

代码语言:javascript
复制
 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-pmd-plugin</artifactId>
    <version>3.4</version>
    <configuration>

      <linkXref>true</linkXref>
      <sourceEncoding>utf-8</sourceEncoding>
      <minimumTokens>1</minimumTokens>
      <targetJdk>1.7</targetJdk>
    </configuration>
  </plugin>

在片段中,我将sourceEncoding标记更改为utf-8,因为我在这方面看到的一切都是utf-8。我还将minimumTokens值更改为1,以尝试从这个插件中获得更多的输出。我还把这个片段放在<build>部分,试图获得结果,但仍然没有结果.:/

谢谢你研究这个..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-01 09:43:47

默认情况下,maven-pmd-插件跳过现在的空报告(属性skipEmptyReport)。您需要将其设置为false,以便在您的站点中始终获得PMD/CPD报告:

代码语言:javascript
复制
<reporting>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-pmd-plugin</artifactId>
      <version>3.4</version>
      <configuration>
        <skipEmptyReport>false</skipEmptyReport>
      </configuration>
    </plugin>
  </plugins>
</reporting>

这适用于PMD和CPD。我想,这是您的问题,如图2所示,没有检测到任何PMD违规(pmd.xml文件为空)。

属性minimumTokens配置CPD,并定义至少必须将代码片段声明为副本的时间长度。数目越少,检测到的重复数就越多,但重复的数目也会更短,因此可能会出现更多的假阳性。

如果不进一步配置maven- PMD插件,它默认使用以下三种PMD规则集:java-basicjava-进口java-unusedcode。还请参见属性规则集。如果希望检测特定问题,则需要启用这些规则。另见如何制定规则集

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28775835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档