使用Maven的PMD-如何在规则集中禁用一个规则? [英] PMD with Maven - How to disable one rule within a ruleset?

查看:93
本文介绍了使用Maven的PMD-如何在规则集中禁用一个规则?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经通过Maven 2运行了PMD.现在,我已经准备好了所有规则集,以查看生成了哪些规则集(请参见下面的代码).我正在检查并修复对我来说有意义的问题.但是,在某些情况下,例如在优化"规则集中,我想保留规则集,但仅禁用规则集中的规则之一.就我而言,我想禁用"AvoidInstantiatingObjectsInLoopss"规则.

I have PMD running via Maven 2. Right now I have all the rulesets in place to see what gets generated (see code below). I'm going through and fixing things that make sense to me to fix. However, there are cases such as in the "optimizations" ruleset where I want to keep the rule set, but disable just one of the rules within the rule set. In my case, I want to disable the "AvoidInstantiatingObjectsInLoopss" rule.

这是我pom.xml的报告部分

Here is the reporting section of my pom.xml

<reporting>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jxr-plugin</artifactId>
            <version>2.3</version>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-pmd-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <linkXref>true</linkXref>
                <sourceEncoding>utf-8</sourceEncoding>
                <minimumTokens>${pmd.minimumTokens}</minimumTokens>
                <failOnViolation>${pmd.failOnViolation}</failOnViolation>
                <targetJdk>${projectTargetJdk}</targetJdk>

                <rulesets>
                    <!-- See the FAQ here: http://maven.apache.org/maven-1.x/plugins/pmd/faq.html -->
                    <!-- See the rule sets here: http://pmd.sourceforge.net/ (menu on the left has a Rule Sets section -->
                    <!-- Unused rule sets -->
                    <!-- <ruleset>/rulesets/naming.xml</ruleset> -->

                    <!-- Unable to find rule sets -->
                    <!-- <ruleset>/rulesets/emptycode.xml</ruleset> -->
                    <!-- <ruleset>rulesets/comments.xml</ruleset> -->
                    <!-- <ruleset>/rulesets/unnecessary.xml</ruleset> -->
                    <!-- <ruleset>/rulesets/logging.xml</ruleset> -->

                    <!-- used rule sets -->
                    <!-- http://pmd.sourceforge.net/rules/java/basic.html -->
                    <ruleset>/rulesets/basic.xml</ruleset>
                    <!-- http://pmd.sourceforge.net/rules/java/braces.html -->
                    <ruleset>/rulesets/braces.xml</ruleset>
                    <!-- http://pmd.sourceforge.net/rules/java/clone.html -->
                    <ruleset>/rulesets/clone.xml</ruleset>
                    <!-- http://pmd.sourceforge.net/rules/java/codesize.html -->
                    <ruleset>/rulesets/codesize.xml</ruleset>
                    <!-- http://pmd.sourceforge.net/rules/java/controversial.html -->
                    <ruleset>/rulesets/controversial.xml</ruleset>
                    <!-- http://pmd.sourceforge.net/rules/java/coupling.html -->
                    <ruleset>/rulesets/coupling.xml</ruleset>
                    <!-- http://pmd.sourceforge.net/rules/java/design.html -->
                    <ruleset>/rulesets/design.xml</ruleset>
                    <!-- http://pmd.sourceforge.net/rules/java/finalizers.html -->
                    <ruleset>/rulesets/finalizers.xml</ruleset>
                    <!-- http://pmd.sourceforge.net/rules/java/imports.html -->
                    <ruleset>/rulesets/imports.xml</ruleset>
                    <!-- http://pmd.sourceforge.net/rules/java/j2ee.html -->
                    <ruleset>/rulesets/j2ee.xml</ruleset>
                    <!-- http://pmd.sourceforge.net/rules/java/junit.html -->
                    <ruleset>/rulesets/junit.xml</ruleset>
                    <!-- http://pmd.sourceforge.net/rules/java/javabeans.html -->
                    <ruleset>/rulesets/javabeans.xml</ruleset>
                    <!-- http://pmd.sourceforge.net/rules/java/migrating.html -->
                    <ruleset>/rulesets/migrating.xml</ruleset>
                    <!-- http://pmd.sourceforge.net/rules/java/optimizations.html -->
                    <ruleset>/rulesets/optimizations.xml</ruleset>
                    <!-- http://pmd.sourceforge.net/rules/java/strictexception.html -->
                    <ruleset>/rulesets/strictexception.xml</ruleset>
                    <!-- http://pmd.sourceforge.net/rules/java/strings.html -->
                    <ruleset>/rulesets/strings.xml</ruleset>
                    <!-- http://pmd.sourceforge.net/rules/java/sunsecure.html -->
                    <ruleset>/rulesets/sunsecure.xml</ruleset>
                    <!-- http://pmd.sourceforge.net/rules/java/typeresolution.html -->
                    <ruleset>/rulesets/typeresolution.xml</ruleset>
                    <!-- http://pmd.sourceforge.net/rules/java/unusedcode.html -->
                    <ruleset>/rulesets/unusedcode.xml</ruleset>
                </rulesets>
            </configuration>
        </plugin>
    </plugins>
</reporting>

推荐答案

规则的定义及其激活位于规则集文件中. 当您在"rulesets"文件夹中拥有文件副本时,只需删除或注释包含对规则的引用的规则集文件上的节点即可. 在这种情况下,"AvoidInstantiatingObjectsInLoops"(net.sourceforge.pmd.rules.optimization.AvoidInstantiatingObjectsInLoops)是一种优化规则,因此可能位于"/rulesets/optimizations.xml"中.

The definition of the rules and its activation is on the ruleset files. As you have a copy of the files on the "rulesets" folder, just delete or comment the node on the ruleset file which contains the reference to the rule. In this case, "AvoidInstantiatingObjectsInLoops" (net.sourceforge.pmd.rules.optimization.AvoidInstantiatingObjectsInLoops) is an Optimization rule, so it's likely to be in "/rulesets/optimizations.xml".

只需编辑文件,查找规则中的内容,然后注释或删除相应的规则节点即可.

Just edit the file, look for the inclusion of the rule, and comment or delete the corresponding rule node.

我不知道文件的内容,因此您可以多次包含该规则.

I don't know the content of your files, so you could have the rule included more than one time.

这篇关于使用Maven的PMD-如何在规则集中禁用一个规则?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆