Maven PMD插件没有使用’mvn site’命令或’pmd:pmd’生成报告

我在这里阅读一个有趣的教程: 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文件:

  4.0.0 com.name.bookstore bookstore jar 1 bookstore http://maven.apache.org   junit junit 3.8.1 test       org.apache.maven.wagon wagon-webdav 1.0-beta-2       site.deployments Site deployments dav:localhost/${basedir}      org.apache.maven.plugins maven-pmd-plugin 3.4   org.apache.maven.plugins maven-jxr-plugin 2.5   org.apache.maven.plugins maven-javadoc-plugin 2.10.1     

当我运行命令: mvn clean site我得到了一个由Maven构建的网站,其中包含许多不同的页面,但没有一个显示有关PMD的任何内容。 我在这里想念的是什么? 为什么我在生成的网站上看不到有关PMD的任何信息?

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

mvn pmd:pmd命令似乎确实创建了一些文件。 一对夫妇是它看起来像引擎的规则文件,其他的是空的。 请看下面的屏幕截图:

使用mvn pmd:pmd命令创建的文件 图1 :pmd:pmd命令创建的文件

pmd的空文件

图2 :清空pmd文件 – 即使Java源文件中存在明显错误

有没有人知道那是什么? 为什么PMD不能和我一起使用Maven?

感谢您阅读本文。

另外,根据我在PMD网站和Maven网站上的互联网阅读内容,“项目报告”部分应该有一些信息。 PMD中没有数据。 请看下面的屏幕截图。

项目报告中没有PMD数据

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

问候

UPDATE

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

   org.apache.maven.plugins maven-pmd-plugin 3.4  true utf-8 1 1.7   

在代码片段中,我将sourceEncoding标记更改为utf-8,因为我看到的所有内容都是utf-8。 我还将minimumTokens值更改为1以尝试从此插件获得更多输出。 我还把这个片段放在部分尝试获得结果但仍然没有……:/

谢谢你研究这个……

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

    org.apache.maven.plugins maven-pmd-plugin 3.4  false     

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

属性minimumTokens配置CPD并定义最少必须将代码剪切的代码声明为重复的时间。 数字越小,检测到的重复数越多,但重复数据也可以更短,因此可能更常见的是误报。

在没有进一步配置maven-pmd-plugin的情况下,它默认使用这三个PMD规则集: java-basic , java-imports , java-unusedcode 。 另请参见属性规则集 。 如果要检测特定问题,则需要启用这些规则。 另请参见如何制作规则集 。