【问题标题】:Not able to exclude some rules from PMD无法从 PMD 中排除某些规则
【发布时间】:2018-12-09 19:39:01
【问题描述】:

我只是想将 PMD 添加到我的 Spring Boot 项目中,但在尝试从 category/java/errorprone.xml 规则集中排除一些规则时遇到了一些问题。

我使用的gradle插件如下:

pmd {
    ruleSetConfig = resources.text.fromFile("config/pmd/ruleset.xml")
}

这是我的自定义规则集文件的内容:

<?xml version="1.0"?>
<ruleset>
    <rule ref="category/java/bestpractices.xml"></rule>
    <rule ref="category/java/codestyle.xml">
        <exclude name="MethodArgumentCouldBeFinal"/>
        <exclude name="LocalVariableCouldBeFinal"/>
        <exclude name="ControlStatementBraces"/>
        <exclude name="OnlyOneReturn"/>
        <exclude name="ConfusingTernary"/>
        <exclude name="AtLeastOneConstructor"/>
        <exclude name="AvoidFinalLocalVariable"/>
        <exclude name="ShortVariable"/>
        <exclude name="LongVariable"/>
        <exclude name="CommentDefaultAccessModifier"/>
        <exclude name="DefaultPackage"/>
        <exclude name="PrematureDeclaration"/>
    </rule>
    <rule ref="category/java/design.xml">
        <exclude name="LawOfDemeter"/>
        <exclude name="NcssCount"/>
        <exclude name="CyclomaticComplexity"/>
        <exclude name="UseUtilityClass"/>
        <exclude name="AvoidCatchingGenericException"/>
        <exclude name="NPathComplexity"/>
        <exclude name="AvoidRethrowingException"/>
        <exclude name="DataClass"/>
        <exclude name="AvoidThrowingRawExceptionTypes"/>
    </rule>
    <rule ref="category/java/documentation.xml">
        <exclude name="CommentRequired"/>
        <exclude name="UncommentedEmptyConstructor"/>
        <exclude name="CommentSize"/>
    </rule>
    <rule ref="category/java/errorprone.xml">
        <exclude name="BeanMembersShouldSerialize"/>
        <exclude name="DataflowAnomalyAnalysis"/>
        <exclude name="AssignmentInOperand"/>
    </rule>
    <rule ref="category/java/multithreading.xml">
    </rule>
    <rule ref="category/java/performance.xml">
        <exclude name="AvoidInstantiatingObjectsInLoops"/>
    </rule>
    <rule ref="category/java/security.xml">
    </rule>
</ruleset>

如您所见,我排除了 BeanMembersShouldSerializeDataflowAnomalyAnalysis,但我仍然在 PMD 报告中收到这些错误:

Found non-transient, non-static member. Please mark as transient or provide accessors.

`发现变量'userEntity'的'DU'异常(第'28'-'38'行)。``

我使用的是 PMD 版本 6.10.0(2018 年 12 月 9 日)。

任何帮助将不胜感激。

问候

【问题讨论】:

    标签: java spring spring-boot pmd


    【解决方案1】:

    Gradle 默认使用 basicbraces 规则集,直到 Gradle 5。Gradle 5 默认使用 errorprone 类别。

    如果您不想要这些默认值,则需要清除它们:

    pmd {
        ruleSets = [] 
    }
    

    https://docs.gradle.org/current/dsl/org.gradle.api.plugins.quality.Pmd.html#org.gradle.api.plugins.quality.Pmd:ruleSets

    【讨论】:

    • 哇!这是一种魅力!我不知道。再次感谢你,你拯救了我的一天
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-06
    • 1970-01-01
    相关资源
    最近更新 更多