【问题标题】:Remove a single rule check from PMD in maven plugin从 maven 插件中的 PMD 中删除单个规则检查
【发布时间】:2013-04-15 17:43:19
【问题描述】:

我想在 POM 中排除单个 PMD 规则,但它不起作用。 我尝试创建一个 pmd-exclude.xml(在与 pom.xml 相同的目录中):

<?xml version="1.0"?>
<ruleset name="remove_rules">
    <description>Remove rules</description>
    <rule ref="rulesets/unnecessary.xml">
        <exclude name="UselessParentheses"/>
    </rule>
</ruleset>

来自http://www.ing.iac.es/~docs/external/java/pmd/howtomakearuleset.html并在pom.xml中引用:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-pmd-plugin</artifactId>
    <version>3.0.1</version>
    <configuration>
        <sourceEncoding>utf-8</sourceEncoding>
            <rulesets>
                    <ruleset>${pom.basedir}/pmd-exclude.xml</ruleset>
            </rulesets>
    </configuration>
</plugin>

但它不断报告这些规则。

另外:我不想指定它必须检查哪些规则,因为较新的版本可以(并且将)包含新规则,并且我不想检查哪些新规则将在每个新版本中运行。

【问题讨论】:

  • 有什么解决办法吗?我正在尝试使用 excludeFromFailureFile,但即使这样也不起作用。
  • 我无法找到真正的解决方案。后来,我们迁移到 Sonar,您可以配置应用哪些规则,这是我需要的以及所有图形和其他很酷的东西。但这并不是这个问题的确切答案。
  • 感谢您的快速回复

标签: java maven pmd


【解决方案1】:

我认为您需要添加要检查的规则集并丢弃不需要的特定规则。

pmd-exclude.xml 应该如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<ruleset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    name="Android Application Rules"
    xmlns="http://pmd.sf.net/ruleset/1.0.0"
    xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd"
    xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd" >

    <description>Remove rules</description>

    <rule ref="rulesets/clone.xml" />
    <rule ref="rulesets/finalizers.xml" />
    <rule ref="rulesets/imports.xml" />
    <rule ref="rulesets/logging-java.xml" />
    <rule ref="rulesets/unnecessary.xml" >
        <exclude name="UselessParentheses" />
    </rule>

</ruleset>

【讨论】:

  • PMD 团队会随着时间的推移添加新规则集?您的回答似乎与我所需要的非常接近。
【解决方案2】:

@marcelopazzo 的解决方案对我有用。我只想补充一点,如果您正在使用多模块 maven 项目,那么您将必须更新对 pmd-exclude.xml 的引用,除非您计划在每个模块中都有此文件的副本。

例子

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>3.6</version>
        <configuration>
            <rulesets>
                <ruleset>${project.parent.basedir}/pmd-exclude.xml</ruleset>
            </rulesets>
        </configuration>
    </plugin>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 2012-02-27
    • 1970-01-01
    相关资源
    最近更新 更多