java - 无法从 PMD 中排除某些规则

标签 java spring spring-boot pmd

我只是想将 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 报告中仍然出现以下错误:

找到非 transient 、非静态成员。请标记为 transient 或提供访问器。

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

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

非常感谢任何帮助。

问候

最佳答案

从 Gradle 5 开始,Gradle 默认使用 basicbraces 规则集。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

关于java - 无法从 PMD 中排除某些规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53695965/

相关文章:

mysql - 如何在 Spring Boot 应用程序中通过 ssh 隧道连接到远程 mysql

java - FindViewById 在一行中多次

java - maven中如何继承其他库的依赖?

java - 如何在 spring jpa 中组合 4 个表(查询)

java - 使用@EnableOAuth2Client 的 OAuth2 客户端手动配置不起作用

java - 在 spring boot 中如何将 yml 部分加载为 java.util.Properties

javascript - Google Maps API - 透明传递地址组件

java - 如何在 Java 中读取字符串流并丢弃非法字符?

java - if 语句因未知原因返回 false

java - 为什么 Spring 的 @Transactional 有助于性能