在我正在开发的项目中,我们有很多自定义Checkstyle检查。例如,我们使用RegexpSingleline模块排除所有类型的事物。我们的checkstyle规则如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<module name="Checker">
<!-- Disable this -->
<module name="RegexpSingleline">
...
</module>
<!-- Disable that -->
<module name="RegexpSingleline">
...
</module>
...
</module>
不幸的是,这意味着当我们要对一个文件禁用一次检查时,我们通常最终会禁用 lot 检查,例如所有基于RegexpSingleline的检查。
我希望,但似乎无法找到,定义“复合”检查的可能性,如:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<module name="Checker">
<!-- Disable this -->
<myCheck name="DisableNastyThing1">
<module name="RegexpSingleline">
...
</module>
</myCheck>
<!-- Disable that -->
<myCheck name="DisableNastyThing2">
<module name="RegexpSingleline">
...
</module>
</myCheck>
...
</module>
抑制 DisableNastyThing1 或 DisableNastyThing2 与抑制模块完全一样。换句话说, myCheck XML元素名称将表示检查未映射到实现AbstractCheck左右的实际Java类,而是映射到执行嵌套检查的某些通用检查。进入它。
Checkstyle中是否已存在这样的概念,但我找不到它或者什么?
答案 0 :(得分:0)
您可以为每个支票添加id
属性,如下所示:
<!-- Disable this -->
<module name="RegexpSingleline">
<property name="id" value="DisableNastyThing1"/>
...
</module>
<!-- Disable that -->
<module name="RegexpSingleline">
<property name="id" value="DisableNastyThing2"/>
...
</module>
然后在 suppressions.xml 中,您可以参考ID:
<suppress files="some/files/" id="DisableNastyThing1" />
<suppress files="some/other/files/" id="DisableNastyThing2" />
通过这种方式,您只能抑制一些 RegexpSingleLine 实例,而不是所有实例。
但是,无法定义检查实例组。换句话说,没有语法将 DisableNastyThing1 和 DisableNastyThing2 分组到 DisableNastyThings 中,并在抑制中引用它。