pmd - 从命令行运行所有 PMD 规则集

标签 pmd command-line-interface

我想知道是否有办法从命令行运行所有 PMD 规则集。

我使用了与 Eclipse IDE 和 Maven 集成的 PMD。但现在我需要从 CLI 运行它。
我已经检查过这个页面 http://pmd.sourceforge.net/pmd-5.1.0/running.html它说你可以从 CLI 运行它,但使用指定的规则集:

C:\tmp\pmd-bin-5.1.0\pmd\bin>pmd -d c:\data\pmd\pmd\test-data\Unused1.java -f xml -R rulesets/java/unusedcode.xml

在那个例子中,你只得到 的结果Java 未使用的代码 规则,我正在尝试实现以下目标:
C:\tmp\pmd-bin-5.1.0\pmd\bin>pmd -d c:\data\pmd\pmd\test-data\Unused1.java -f xml -R rulesets/java/*.xml

并获取 Java 规则集中所有规则的结果。

最佳答案

您可以定义一个配置文件,其中包含您希望运行的规则集。您可以在 -R 之后将此文件作为参数提供命令行上的参数。

示例文件在这里( MyRules.xml ):

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<ruleset name="PMD.rul" xmlns="http://pmd.sourceforge.net/ruleset/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd">

  <description>This ruleset was created from PMD.rul</description>

  <rule ref="rulesets/java/basic.xml">
    <exclude name="UnnecessaryFinalModifier"/>
  </rule>

  <rule ref="rulesets/java/braces.xml"/>
  <rule ref="rulesets/java/clone.xml"/>
  <rule ref="rulesets/java/comments.xml"/>

  <rule ref="rulesets/java/controversial.xml">
    <exclude name="AtLeastOneConstructor"/>
    <exclude name="UnnecessaryParentheses"/>
  </rule>

  <rule ref="rulesets/java/design.xml">
    <exclude name="GodClass"/>
  </rule>

  <rule ref="rulesets/java/empty.xml"/>
  <rule ref="rulesets/java/finalizers.xml"/>
  <rule ref="rulesets/java/imports.xml"/>
  <rule ref="rulesets/java/j2ee.xml"/>
  <rule ref="rulesets/java/javabeans.xml"/>
  <rule ref="rulesets/java/junit.xml"/>
  <rule ref="rulesets/java/logging-jakarta-commons.xml"/>
  <rule ref="rulesets/java/logging-java.xml"/>
  <rule ref="rulesets/java/naming.xml"/>
  <rule ref="rulesets/java/optimizations.xml"/>
  <rule ref="rulesets/java/strictexception.xml"/>
  <rule ref="rulesets/java/strings.xml"/>
  <rule ref="rulesets/java/sunsecure.xml"/>
  <rule ref="rulesets/java/typeresolution.xml"/>

  <rule ref="rulesets/java/unnecessary.xml">
    <exclude name="UnnecessaryFinalModifier"/>
    <exclude name="UnnecessaryReturn"/>
    <exclude name="UselessParentheses"/>
  </rule>

  <rule ref="rulesets/java/unusedcode.xml"/>

</ruleset>

命令行参数如下所示:
C:\tmp\pmd-bin-5.1.0\pmd\bin>pmd -d c:\data\pmd\pmd\test-data\Unused1.java -f xml -R MyRules.xml

关于pmd - 从命令行运行所有 PMD 规则集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23116108/

相关文章:

java - 通过 PMD 在 java 中记录空构造函数

java - 如何以编程方式在文件 *content* 上运行 Checkstyle、Findbugs 或 PMD

java - PMD 找不到规则集

java - PMD 对象构造期间调用的可覆盖方法

groovy - 如何通过 groovy 监听端口获取帖子内容?

maven - 无法在 maven-pmd-plugin 5.0.2 中使用自定义规则集

java - 有没有办法以编程方式从计算机访问短信?

shell - 如何为 go bin 提供命令

java - 在命令行中执行 flyway 回调

javascript - Javascript如何从CLI发出噪音