Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带Maven的PMD-如何禁用规则集中的一个规则?_Maven_Pmd - Fatal编程技术网

带Maven的PMD-如何禁用规则集中的一个规则?

带Maven的PMD-如何禁用规则集中的一个规则?,maven,pmd,Maven,Pmd,我通过Maven 2运行PMD。现在,我已经准备好了所有规则集,以查看生成了什么(请参见下面的代码)。我正在经历和修复对我来说有意义的事情。但是,在某些情况下,例如在“优化”规则集中,我希望保留规则集,但只禁用规则集中的一个规则。在我的例子中,我想禁用“AvoidStantiatingObjectsInLoopss”规则 这是我的pom.xml的报告部分 <reporting> <plugins> <plugin>

我通过Maven 2运行PMD。现在,我已经准备好了所有规则集,以查看生成了什么(请参见下面的代码)。我正在经历和修复对我来说有意义的事情。但是,在某些情况下,例如在“优化”规则集中,我希望保留规则集,但只禁用规则集中的一个规则。在我的例子中,我想禁用“AvoidStantiatingObjectsInLoopss”规则

这是我的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>

org.apache.maven.plugins
maven jxr插件
2.3
org.apache.maven.plugins
maven pmd插件
2.6
真的
utf-8
${pmd.minimumTokens}
${pmd.failOnViolation}
${projectTargetJdk}
/规则集/basic.xml
/规则集/大括号.xml
/规则集/clone.xml
/规则集/codesize.xml
/规则集/xml.xml
/规则集/coupling.xml
/规则集/design.xml
/规则集/finalizers.xml
/规则集/imports.xml
/规则集/j2ee.xml
/规则集/junit.xml
/规则集/javabeans.xml
/规则集/migrating.xml
/规则集/optimizations.xml
/规则集/StreetException.xml
/规则集/strings.xml
/规则集/sunsecure.xml
/规则集/typeresolution.xml
/规则集/unusedcode.xml

规则的定义及其激活在规则集文件中。 由于“ruleset”文件夹中有文件的副本,只需删除或注释规则集文件中包含规则引用的节点即可。 在本例中,“AvoidStantiationObjectsInLoops”(net.sourceforge.pmd.rules.optimization.AvoidStantiationObjectsInLoops)是一个优化规则,因此它可能位于“/rulesets/optimizations.xml”中

只需编辑该文件,查找包含的规则,并注释或删除相应的规则节点


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

我将PMD作为Sonar的一部分运行。Sonar提供了一个GUI来管理启用了哪些规则。Sonar看起来非常有趣。我将在这方面进行更多调查。目前,我仍然有兴趣了解是否有办法通过maven配置来满足我的需求,例如,“规则集”是插件的一部分,而不是我自己的maven项目的本地文件夹。文档解释了如何导入规则集,但批量排除了一些您不想要的规则: