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

Java 如何忽略测试方法缺少@throws的CheckStyle警告?,java,junit,checkstyle,Java,Junit,Checkstyle,我被关于测试方法JavaDoc中缺少@throws的CheckStyle警告所困扰 我使用的测试方法如下: /** * Check that something works. <== CheckStyle wants @throws here */ @Test public void testSomething() throws Exception { ... } /** *检查一下有没有什么办法 对。可以为特定文件的checkstyle错误指定抑制过滤器。看见从那里 Filte

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

我使用的测试方法如下:

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

*检查一下有没有什么办法 对。可以为特定文件的checkstyle错误指定抑制过滤器。看见从那里

Filter SuppressionFilter根据文件中的suppressions XML文档拒绝检查错误的审核事件。如果没有配置的抑制文件,则筛选器接受所有审核事件

<module name="SuppressionFilter">
    <property name="file" value="docs/suppressions.xml"/>
</module>

抑制XML文档包含一组抑制元素,其中 每个抑制元素可以具有以下属性:

  • files-与文件名匹配的正则表达式 与审核事件关联。这是强制性的
  • 支票-a 正则表达式与关联检查的名称匹配 一个审计事件。如果指定了id,则为可选
  • id-字符串 与审核事件关联的支票id匹配。 如果指定了检查,则为可选
  • 行-以逗号分隔的行列表 值,其中每个值是一个整数或表示的整数范围 按整数。它是可选的
  • 列-逗号分隔 值列表,其中每个值都是一个整数或一系列整数 用整数表示。它是可选的
根据每个抑制元素检查每个审核事件。它是 如果所有指定的属性都与审核事件匹配,则被抑制

因此,在您的情况下,您可以执行以下操作:

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



我不确定JavadocStyleCheck是否真的是您想要删除的检查,但请查看文档了解更多信息。

一个非常合适的方法是:
src
code设置一个checkStyle规则,为
test设置另一个checkStyle规则
在eclipse中,您可以在Project->Properties->Checkstyle中配置它。

src的Checkstyle规则并不总是适用于测试代码,如上面示例中的OP所示。测试中要禁用的其他候选规则是MagicNumber检查。

如果需要禁用src中接下来N行的一个或多个检查, 您应该配置:(另请参阅)

配置筛选器以便CHECKSTYLE忽略下一个变量的检查 行可避免触发对当前行的给定检查的任何审核 第行和下一个var行(总共var+1行):

如果“规则”是规则的名称,请在上面的链接中查找该名称。
对于忽略80个字符的行长度限制,对于接下来的10行,注释将是

//CHECKSTYLE IGNORE Line 100
您可以进一步连接规则:

//CHECKSTYLE IGNORE Line|MethodLength 100
如果您是一名非常认真的开发人员,您可以添加一条评论,说明您为什么这样做:

//CHECKSTYLE IGNORE Catch 1  Last line of defense: need to catch Exception

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

@SuppressWarnings("checkstyle:javadocmethod")

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

单元测试首先需要javadoc注释吗?我更倾向于去掉整个JavaDoc注释,让checkstyle忽略方法缺少文档这一事实。除此之外,CheckStyle是正确的:如果您的方法抛出了一些东西,您必须解释它发生的原因(记住这不适用于单元测试)。谢谢!我的案例的语法是:不幸的是,这比我想跳过的CheckStyle多了一点。因为它也将省略javadoc检查的另一个方法。但我想这就是你在没有编程的情况下能走多远。:-)这将阻止对所有测试方法进行所有Javadoc检查。至少,您可以只使用JavadocMethod。不管怎样,我已经设立了一个赏金,看看是否可以做得更好。谢谢!我正在自动集成测试(在jenkins中)中运行maven checkstyle插件,该测试统计项目中的checkstyle违规数量。不可能(AFAIK)为同一maven模块的不同部分设置不同的配置。我在《赏金》中所说的更详细的意思是,上面提出的解决方案并没有真正做到OP所要求的。我认为这是可能的:我们使用ant,我们要测试一个不同的目标,其中使用了其他checkstyle规则。我确信这也适用于maven。@Miquel我的解决方案完全符合OP的要求。这是专业软件团队推荐的解决方案。两个checkstyle配置,一个用于src,一个用于测试。甚至eclipse在GUI中也支持这一点。你是对的,它会按照OP的建议去做。看起来应该有一个更好的方法来处理压制文件,但我也没有看到比你建议的更好的方法。谢谢你的解决方案!除了我的答案之外,这并没有增加任何东西。
//CHECKSTYLE IGNORE Catch 1  Last line of defense: need to catch Exception
@SuppressWarnings("checkstyle:javadocmethod")