我被 CheckStyle 警告困扰,关于测试方法的 JavaDoc 中缺少 @throws。
我正在使用编写这样的测试方法:
/**
* Check that something works. <== CheckStyle wants @throws here
*/
@Test
public void testSomething() throws Exception {
...
}
有没有一种可配置的方法来告诉 CheckStyle 忽略这个?
“throws”子句的存在特别是因为它是一个测试方法;通常会忽略异常处理。
一个非常合适的方法是:
为
src
代码设置一个 checkStyle 规则,为 test
设置另一个 checkStyle 规则。src 的 Checkstyle 规则并不总是适合测试代码,如上例中的 OP 所示。在测试中禁用的其他候选规则是 MagicNumber 检查。
如果您需要禁用 src 中接下来的 N 行的一项或多项检查, 你应该配置:(另见http://checkstyle.sourceforge.net/config.html)
配置过滤器,以便 CHECKSTYLE IGNORE 检查 FOR NEXT var LINES 避免触发对当前给定检查的任何审核 行和接下来的 var 行(总共 var+1 行):
<module name="SuppressWithNearbyCommentFilter">
<property name="commentFormat" value="CHECKSTYLE IGNORE (\w+) FOR NEXT (\d+) LINES"/>
<property name="checkFormat" value="$1"/>
<property name="influenceFormat" value="$2"/> </module>
然后在您的 src 或测试代码中,您可以使用
禁用特定的
Checkstyle
规则
/**
* Tests worker1.
*/
//CHECKSTYLE IGNORE <Rule> 1
public void testWorker1() throws Exception {
}
其中“Rule”是规则的名称,请在上面的链接中查找。
如果忽略 80 个字符的行长度限制,对于接下来的 10 行,注释将是
//CHECKSTYLE IGNORE Line 100
您还可以串联规则:
//CHECKSTYLE IGNORE Line|MethodLength 100
如果您是一位非常认真的开发人员,您可以进一步添加评论为什么要这样做:
//CHECKSTYLE IGNORE Catch 1 Last line of defense: need to catch Exception
是的。您可以为特定文件的检查样式错误指定抑制过滤器。请参阅Checkstyle 5.5,抑制过滤器部分。从那里开始,
Filter SuppressionFilter 根据文件中的抑制 XML 文档拒绝检查错误的审核事件。如果没有配置的抑制文件,过滤器将接受所有审核事件。
<module name="SuppressionFilter">
<property name="file" value="docs/suppressions.xml"/>
</module>
抑制 XML 文档包含一组抑制元素,其中 每个抑制元素可以具有以下属性:
- files - 与文件名匹配的正则表达式 与审核事件关联。这是强制性的。
- 检查-a 正则表达式与关联检查的名称相匹配 与审计事件。如果指定了 id,则可选。
- id - 一个字符串 与审计事件关联的检查 ID 相匹配。 如果指定了检查,则可选。
- lines - 以逗号分隔的列表 值,其中每个值是一个整数或表示的整数范围 通过整数-整数。这是可选的。
- 列 - 以逗号分隔 值列表,其中每个值都是一个整数或整数范围 用整数-整数表示。它是可选的。
每个审核事件都会针对每个抑制元素进行检查。这是 如果所有指定的属性与审核事件匹配,则被抑制。
因此,就您而言,您可以这样做:
<suppressions>
<suppress checks="JavadocStyleCheck" files="*Test.java"/>
</suppressions>
我不确定 JavadocStyleCheck 是否真的是您要删除的检查,但请查看文档以了解更多信息。
您可以在每个方法之前添加此内容,或者在包含它们的类之前添加一次:
@SuppressWarnings("checkstyle:javadocmethod")
在 Matthew Farwell 的回答中,文件模式缺少一个点
<suppressions>
<suppress checks="JavadocStyleCheck" files=".*Test.java"/>
</suppressions>
@SuppressWarnings("checkstyle:javadocmethod") 是用于抑制 getter 和 setter 或 java 中不需要 javadoc 的任何方法的警告的注释