【问题标题】:How to fix Checkstyle empty block warning如何修复 Checkstyle 空块警告
【发布时间】:2017-07-18 18:51:48
【问题描述】:

我想知道使用 Checkstyle 报告解决此问题的正确方法,其中指出了一个空的 else 块:“必须至少有一个语句”。我们不会在这些类中记录任何内容,我认为在控制台上打印任何内容也不是一个好主意。处理此问题的最佳方法是什么?

【问题讨论】:

  • 您的 checkstyle 配置可能有充分的理由指出这一点。为什么你需要那个空的 else 块?对于使用 try/catch 进行捕获是必要的,但对于 if/else 则不是。为什么不把空块放在一边?
  • 真的,我认为最好不要使用像 ; 这样的空语句或其他虚假语句来欺骗 Checkstyle,而是问问自己为什么需要这个以及为什么不更改代码。否则,如果 checkstyle 配置不那么严格。

标签: java checkstyle suppress-warnings


【解决方案1】:

你可以在大括号之间添加;

.
.
.
else if(condition){
    ;
}
.
.
.

或者正如@Fred Larson 所说,如果您有任何评论说明此部分为何为空,您可以插入评论

.
.
.
else if(condition){
    //the reason why this section is empty
}
.
.
.

【讨论】:

  • 真的,能解决这个问题吗?我需要运行报告。
  • 即使是评论也可以做到。评论会很好地解释为什么你有一个空的else if 块。
  • 虽然稍后可能是很好的做法,但它不会解决 OP 的问题,因为他明确指出任务是防止他的 Checkstyle 将其标记为问题。注释不会清除Checkstyle的问题,OP的代码里面已经有注释//Do nothing了。
  • 评论没有解决我的问题,但分号解决了。
【解决方案2】:

如果您配置了SuppressWarningsFilter Checkstyle 过滤器,则可以使用@SuppressWarnings("checkstyle:EmptyBlock") 禁止在类或代码块中显示警告。

YourClass.java

public class YourClass {

  @SuppressWarnings("checkstyle:EmptyBlock")
  public void yourMethod() {
    if (someBoolean()) {
      doSomething();
    } else {
      // Do nothing
    }
  }
}

checkstyle.xml

<module name="Checker">
  <module name="SuppressWarningsFilter" />
  ...

  <module name="TreeWalker">
    <module name="SuppressWarningsHolder" />
    ...
  </module>
</module>

【讨论】:

  • @SuppressWarnings("checkstyle:emptyblock") 为我工作
猜你喜欢
  • 2011-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-08
  • 2020-11-28
  • 2017-10-25
  • 2017-07-03
相关资源
最近更新 更多