如何忽略测试方法缺少@throws的CheckStyle警告?

问题描述 投票:0回答:5

我被 CheckStyle 警告困扰,关于测试方法的 JavaDoc 中缺少 @throws。

我正在使用编写这样的测试方法:

/**
 * Check that something works. <== CheckStyle wants @throws here
 */
@Test
public void testSomething() throws Exception {
  ...
}

有没有一种可配置的方法来告诉 CheckStyle 忽略这个?

“throws”子句的存在特别是因为它是一个测试方法;通常会忽略异常处理。

java junit checkstyle
5个回答
4
投票

一个非常合适的方法是:

src
代码设置一个 checkStyle 规则,为
test
设置另一个 checkStyle 规则。
在 Eclipse 中你可以在 Project->Properties->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

2
投票

是的。您可以为特定文件的检查样式错误指定抑制过滤器。请参阅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 是否真的是您要删除的检查,但请查看文档以了解更多信息。


1
投票

您可以在每个方法之前添加此内容,或者在包含它们的类之前添加一次:

@SuppressWarnings("checkstyle:javadocmethod")

0
投票

在 Matthew Farwell 的回答中,文件模式缺少一个点

<suppressions>
   <suppress checks="JavadocStyleCheck" files=".*Test.java"/>
</suppressions>

-1
投票

@SuppressWarnings("checkstyle:javadocmethod") 是用于抑制 getter 和 setter 或 java 中不需要 javadoc 的任何方法的警告的注释

© www.soinside.com 2019 - 2024. All rights reserved.