无法从 PMD 中排除某些规则
Not able to exclude some rules from PMD
我只是想将 PMD 添加到我的 Spring 引导项目,但我在尝试从 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>
如您所见,我排除了 BeanMembersShouldSerialize
和 DataflowAnomalyAnalysis
但 PMD 报告中仍然出现以下错误:
Found non-transient, non-static member. Please mark as transient or provide accessors.
`发现 'DU'-变量 'userEntity' 的异常(第 '28'-'38' 行)。``
我使用的是 PMD 版本 6.10.0(2018 年 12 月 9 日)。
任何帮助将不胜感激。
此致
Gradle 默认使用 basic
和 braces
规则集直到 Gradle 5。Gradle 5 默认使用 errorprone
类别。
如果您不需要这些默认设置,您需要通过以下操作清除它们:
pmd {
ruleSets = []
}
我只是想将 PMD 添加到我的 Spring 引导项目,但我在尝试从 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>
如您所见,我排除了 BeanMembersShouldSerialize
和 DataflowAnomalyAnalysis
但 PMD 报告中仍然出现以下错误:
Found non-transient, non-static member. Please mark as transient or provide accessors.
`发现 'DU'-变量 'userEntity' 的异常(第 '28'-'38' 行)。``
我使用的是 PMD 版本 6.10.0(2018 年 12 月 9 日)。
任何帮助将不胜感激。
此致
Gradle 默认使用 basic
和 braces
规则集直到 Gradle 5。Gradle 5 默认使用 errorprone
类别。
如果您不需要这些默认设置,您需要通过以下操作清除它们:
pmd {
ruleSets = []
}