【发布时间】:2021-05-31 16:38:21
【问题描述】:
我们正在使用PMD 来评估我们的“主要”源代码的质量。我们有自己的自定义规则集,其中包括一些类别规则集并排除了一些特定规则。
简化示例,文件名为pmd.xml:
<?xml version="1.0"?>
<ruleset name="Main rules"
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 https://pmd.sourceforge.io/ruleset_2_0_0.xsd">
<description>Main rules</description>
<rule ref="category/java/bestpractices.xml">
<exclude name="GuardLogStatement"/>
</rule>
<rule ref="category/java/security.xml"/>
</ruleset>
分析是从 gradle 启动的,它适用于我们的“主要”源代码。
现在我们想为我们的“测试”源代码获得另一个更宽松的规则集。由于我们不想重复我们的规则集,我们想做的是导入这个主要规则集,并排除更多规则。
所以我们基本上希望排除GuardLogStatement,并排除规则UnusedPrivateMethod,文件看起来像这样。
<?xml version="1.0"?>
<ruleset name="Test rules"
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 https://pmd.sourceforge.io/ruleset_2_0_0.xsd">
<description>Test rules</description>
<!-- Test rules are based on rules for main -->
<rule ref="./config/pmd.xml">
<exclude name="UnusedPrivateMethod"/>
</rule>
</ruleset>
这不起作用:
-
GuardLogStatement被排除在外,但是 -
UnusedPrivateMethod仍在运行。
我在文档中没有看到任何关于如何从规则集中排除规则的参考。
有人做过类似的事情吗?
【问题讨论】:
标签: pmd