在PMD中导入规则

时间:2018-04-21 05:02:48

标签: java maven static-analysis

我们正在实施我们公司的静态分析代码,我们正在尝试PMD,我已经发布了关于PMD的文档并发现它不明确:

我在pom.xml中添加了以下插件,如文档中所述。

<reporting>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>3.7</version>
                <configuration>
                    <rulesets>
                        <ruleset>rulesets/java/braces.xml</ruleset>
                        <ruleset>rulesets/java/naming.xml</ruleset>
                    </rulesets>
                </configuration>
            </plugin>
        </plugins>
</reporting>

我不知道的是,我在哪里知道规则集的位置,以及如何使用我想要使用的规则集创建自己的xml文件?

1 个答案:

答案 0 :(得分:1)

  

......规则集的位置......

  • 您从pom.xml中提取的内容显示您使用的是Apache的maven-pmd-plugin版本3.7。
  • 因此,默认使用的规则集将在本地存储库中的Apache jar文件 maven-pmd-plugin-3.7.jar 中指定。
  • 默认情况下使用的唯一规则集名为 Maven Ruleset ,并在文件 {存储库位置} /maven-pmd-plugin-3.7/rulesets/maven.xml中的jar中定义
  • 这是该文件的相关内容:
<ruleset name="Maven Ruleset"
  xmlns="http://pmd.sf.net/ruleset/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
  xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
  <!--
    Customized PMD ruleset for Maven, see [0] for more information
    [0] https://pmd.github.io/latest/customizing/howtomakearuleset.html
  -->
  <description>
    This ruleset checks the code for discouraged programming constructs.
  </description>
  <rule ref="rulesets/java/basic.xml"/>
  <rule ref="rulesets/java/empty.xml">
    <exclude name="EmptyCatchBlock"/>
  </rule>
  <rule ref="rulesets/java/empty.xml/EmptyCatchBlock">
    <properties>
      <property name="allowCommentedBlocks" value="true"/>
    </properties>
  </rule>
  <rule ref="rulesets/java/unnecessary.xml"/>
  <rule ref="rulesets/java/unusedcode.xml"/>
  <rule ref="rulesets/java/imports.xml"/>
</ruleset>
  

...如何使用我想要的规则集创建自己的xml文件   使用?

The plugin documentation by Apache describes that,还详细介绍了如何在项目之间共享一组通用的规则集。