抑制某些 class 的所有规则,但保留一个启用

Suppress all rules for certain class but leave one enabled

我想取消对特定 类 的所有检查,但启用特定的检查。

我不想明确列出所有我想禁止的规则(如此处所示:https://checkstyle.sourceforge.io/config_filters.html#SuppressionFilter),而是要禁用所有规则,然后启用一些特定规则。

在文档中我发现这会禁用所有 ".*":

的检查
<suppress files="[/\]target[/\]" checks=".*"/>

我想要的是一种简短、优雅的方法,在此处添加不会为此文件抑制的单个规则。请帮助我,或者提供证据证明唯一的方法是实际列出所有要明确禁止的规则。

基本上,最快的方法是使用负前瞻修改检查正则表达式,例如

<suppress files="[/\]target[/\]" checks="^(?!(YourCheckName)).+"/>

它不会为您的检查抑制违规行为。

但我会推荐其他方式 - 为一次检查创建单独的配置并使用 BeforeExecutionExclusionFileFilter 仅包含您要检查的文件。这种方法更好,因为它更清晰并避免了很多不必要的工作,因为仅在解析和分析文件后才应用抑制。

strkk,我选择只编写正则表达式规则来禁止所有规则检查,但名称中包含“Import”的规则除外。 “Import”是在规则名称的开头、中间还是结尾都没有关系。 为此,我使用了 following regexp:

 checks="^((?!Import).)*$"/>

你可以在这里测试我的正则表达式:https://regex101.com/r/YC6QuU/1

strkk,如果所需名称位于名称的末尾或中间,则您的正则表达式不起作用。参见:https://regex101.com/r/XvPISI/1

但如果有人遇到同样的问题,请考虑使用 BeforeExecutionExclusionFileFilter,就像 strkk 所建议的那样。