1

我是注释新手。我想做的是写一个包含其他人的东西。我以前从未需要过,而且我对他们很陌生,所以这部分是为了学习经验。

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

4

2 回答 2

0

SuppressWarnings 注释是非常特定于编译器/IDE 的。您不能在其中创建自己的注释条目,从而神奇地修改 Java 编译器 - 除非您愿意进行项目龙目岛风格的代码生成以将 @SuppressWarnings("your-specific-syntax") 更改为各种其他 @SuppressWarnings。为此,您必须与 AST 进行交互。查看 Lombok 源代码并阅读注释处理工具 (APT)。

于 2013-01-31T21:14:06.293 回答
0

这已经内置在 Checkstyle 中。
您必须激活并设置一个特定的排除字符串,该字符串会触发 checkstyle 以忽略接下来 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 行有效。

于 2013-01-31T21:25:44.093 回答