如何为checkstyle豁免写一个超级注释?

时间:2013-01-31 20:51:43

标签: java annotations checkstyle

我是注释的新手。我要做的是写一个包含其他人的。我以前从来不需要一个,我是新手,所以这部分是为了学习经验。

我对某些第三方代码有一个checkstyle豁免,没有人想为我添加豁免给Sonar服务器。我想要做的是写一个超级注释,这将允许我选择我的checkstyle排除,而不是应用@SupressWarnings(“all”),这对我来说似乎很危险。建议的注释基本上只应用@SupressWarnings组(“在这里放置checkstyle键”)。第一个版本将排除所有checkstyle。下一个版本将添加按类别,子类别等执行此操作的功能,以更接近叶子排除。可以使用我能得到的任何建议。我现在正在阅读我现在可以获得注释的内容,但也没有多少使用反射。

2 个答案:

答案 0 :(得分:0)

SuppressWarnings注释非常符合编译器/ IDE。您不能在其中创建自己的注释条目,它会神奇地修改Java编译器 - 除非您愿意执行项目 - lombok样式代码生成以将@SuppressWarnings(“您的特定语法”)更改为各种其他@SuppressWarnings。为此你必须与AST互动。查看Lombok源代码并阅读注释处理工具(APT)。

答案 1 :(得分:0)

这已经在Checkstyle中内置了 您必须激活并设置一个触发checkstyle的特定exlusion字符串 忽略下N行的指定警告。

使用自定义checkstyle配置checks.xml,并添加:

<module name="SuppressWithNearbyCommentFilter">
    <property name="commentFormat" value="CS\:IGNORE ([\w\|]+) (\d+)"/>
    <property name="checkFormat" value="$1"/>
    <property name="influenceFormat" value="$2"/>
  </module>

现在,您可以使用行或方法上方的注释忽略特定检查:

实施例:

// CS:IGNORE Catch|MethodLength 10
public void longMethod() {
  // Method that would cause checkstlye to detetced a length and Catch Exception warning
}

Catch | MethodLength:忽略:Catch和MethodLength

的警告

10表示:排除规则对接下来的10行有效。