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

Ang*_*elo 13 command-line-interface pmd

我想知道是否有办法从命令行运行所有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
Run Code Online (Sandbox Code Playgroud)

在那个例子中,你只是得到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
Run Code Online (Sandbox Code Playgroud)

并获得Java规则集中所有规则的结果.

Csu*_*uki 8

您可以定义包含要运行的规则集的配置文件.您可以-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>
Run Code Online (Sandbox Code Playgroud)

命令行参数如下所示:

C:\tmp\pmd-bin-5.1.0\pmd\bin>pmd -d c:\data\pmd\pmd\test-data\Unused1.java -f xml -R MyRules.xml
Run Code Online (Sandbox Code Playgroud)

  • 我接受你的回答,因为这是一个有效的解决方案.但我发现如何使用PMD文件来完成此操作.只需运行"rulesets/internal/all-java.xml" (15认同)