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

时间:2012-01-26 10:34:49

标签: java junit checkstyle

我受到CheckStyle警告在JavaDoc测试方法中缺少@throws的困扰。

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

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

是否有可配置的方式告诉CheckStyle忽略这个?

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

4 个答案:

答案 0 :(得分:4)

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

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

如果你需要为src中的下N行禁用一个或多个检查, 你应该配置:(另见http://checkstyle.sourceforge.net/config.html

  

配置过滤器,以便CHECKSTYLE IGNORE检查FOR NEXT var   LINES避免触发对给定的当前检查的任何审核   line和下一个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 {
    }

“规则”是规则的名称,请在上面的链接中查找 为了忽略行长度限制为80个字符,对于10行,评论将是

//CHECKSTYLE IGNORE Line 100

您的进一步可以连接规则:

//CHECKSTYLE IGNORE Line|MethodLength 100

如果你是一个非常认真的开发者,你可以添加评论为什么你这样做:

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

答案 1 :(得分:2)

是。您可以为特定文件的checkstyle错误指定抑制过滤器。见Checkstyle 5.5, section SuppressionFilter。从那里,

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

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

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

     
      
  • files - 与文件名匹配的正则表达式   与审计事件相关联。这是强制性的。
  •   
  • 检查 - a   正则表达式与相关检查的名称匹配   审核事件。如果指定了id,则为可选。
  •   
  • id - 一个字符串   匹配与审核事件关联的检查的ID。   如果指定了检查,则可选。
  •   
  • lines - 以逗号分隔的列表   值,其中每个值是整数或表示的整数范围   按整数整数。这是可选的。
  •   
  • 列 - 以逗号分隔   值列表,其中每个值是整数或整数范围   用整数整数表示。这是可选的。
  •   
     

针对每个suppress元素检查每个审核事件。它是   如果所有指定的属性都与审核事件匹配,则禁止。

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

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

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

答案 2 :(得分:1)

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

     <div class="btn-group" role="group">
                                <button type="button" class="btn btn-default" data-toggle="modal" data-target="#LabelMaker">PRINT LABELS</button>
                            </div>

<!-- Label Maker Modal -->
<div class="modal fade" id="LabelMaker" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
        <h4 class="modal-title" id="myModalLabel">Label Maker</h4>
      </div>
      <div class="modal-body">

        <div class="row">
            <div class="col-xs-12">
                <label for="LabelNum">Please enter label start number:</label>
                <div class="input-group">
                <input type="text" class="form-control" name="LabelNum" id="LabelNum">
                </div>
            </div>
        </div>


      </div>
      <div class="modal-footer group">
        <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
        <button type="button" class="btn btn-primary label_accept">Accept</button>
      </div>
    </div>
  </div>
</div>
<!-- End Label Maker Modal -->

答案 3 :(得分:-1)

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