【问题标题】:How to include "Useless parentheses" rule in PMD如何在 PMD 中包含“无用括号”规则
【发布时间】:2017-06-01 21:33:59
【问题描述】:

我发现了很多从 PMD 中排除“无用括号”的参考。但我想包括这条规则。我的问题是,我没有收到任何 PMD 错误,而不是有多个无用的括号并运行 pmd。请告诉我如何启用此规则,以便我可以得到 PMD 错误 - “无用括号”。

在我的ruleset.xml中,是这样写的

这是我的规则集.xml

<?xml version="1.0"?>
<ruleset name="Custom ruleset"
         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>
        NOTE !!!!  NOTE !!!!NOTE !!!!NOTE !!!!NOTE !!!!
        This list should be somewhat static. I have disabled most of the annoying checks.
        That said if we need to exclude rules we can.
        If there are specific instances we can use suppressions like:
        @SuppressWarnings("PMD.UseUtilityClass")  //Doesn't make sense as this is main...
        if we need to, but for the most part I would like to avoid suppressing and ignoring.
        If you do suppress, provide a note why.
        NOTE !!!!NOTE !!!!NOTE !!!!NOTE !!!!NOTE !!!!NOTE !!!!
    </description>

    <rule ref="rulesets/java/basic.xml"/>
    <rule ref="rulesets/java/braces.xml"/>
    <rule ref="rulesets/java/clone.xml"/>
    <rule ref="rulesets/java/codesize.xml"/>
    <!--<rule ref="rulesets/java/comments.xml"/>-->
    <rule ref="rulesets/java/coupling.xml">
        <exclude name="LawOfDemeter"/>
        <exclude name="LoosePackageCoupling"/>
    </rule>

    <rule ref="rulesets/java/design.xml">
        <exclude name="ConfusingTernary"/>
        <exclude name="UseLocaleWithCaseConversions"/>
    </rule>

    <rule ref="rulesets/java/empty.xml"/>
    <rule ref="rulesets/java/finalizers.xml"/>
    <!--<rule ref="rulesets/java/imports.xml"/>-->
    <rule ref="rulesets/java/javabeans.xml">
        <exclude name="BeanMembersShouldSerialize"/>
    </rule>
    <rule ref="rulesets/java/junit.xml"/>
    <rule ref="rulesets/java/logging-java.xml">
        <exclude name="GuardLogStatementJavaUtil"/>  <!--This rule assumes that we are using Log4J where a guard is needed
                                             but we are using slf4j where the guard isn't needed hence this is excluded  -->
    </rule>
    <rule ref="rulesets/java/optimizations.xml">
        <exclude name="LocalVariableCouldBeFinal"/>
        <exclude name="MethodArgumentCouldBeFinal"/>
        <exclude name="AvoidInstantiatingObjectsInLoops"/>
    </rule>
    <rule ref="rulesets/java/strictexception.xml"/>
    <rule ref="rulesets/java/strings.xml"/>
    <rule ref="rulesets/java/sunsecure.xml"/>
    <rule ref="rulesets/java/unnecessary.xml"/>
    <!--<rule ref="rulesets/java/unusedcode.xml"/>-->

</ruleset>

【问题讨论】:

  • 请包含您的规则集.xml 的内容,以及您如何使用 PMD 以确保 PMD 确实考虑了您的规则集。

标签: pmd


【解决方案1】:

如果您查看文档,您会发现您感兴趣的规则是有争议的规则集的一部分:https://pmd.github.io/pmd-5.7.0/pmd-java/rules/java/controversial.html#UnnecessaryParentheses

在您的规则集中,您不包含此规则集中的任何规则。因此,您应该将其添加到您的规则集中。您可以通过添加&lt;rule ref="rulesets/java/controversial.xml"/&gt; 包含整个规则集(不推荐),或者通过添加&lt;rule ref="rulesets/java/controversial.xml/UnnecessaryParentheses"/&gt; 仅包含这一规则

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多