0

我正在尝试编写 SonarQube JavaScript 自定义规则。规则应该看到一个 for 循环不为空(即在 for 块体中有超过 0 个语句)。

我扩展了DoubleDispatchVisitorCheck类,并重写了visitForStatement方法。在该方法中,我不确定如何确定 for 语句有多少后代。

  @Override
  public void visitForStatement(ForStatementTree tree) {
      StatementTree statement = tree.statement();
      // How to see tree or statement descendants?
      super.visitForStatement(tree);
  }

我找到的最好的文档没有深入介绍如何遍历树中的多个节点。

4

1 回答 1

3
if (statement.is(Kind.BLOCK) && ((BlockTree) statement).statements().isEmpty()) {
  addIssue(tree, "message");
}

顺便说一句,有类似的规则https://sonarqube.com/coding_rules#rule_key=javascript%3AEmptyBlock

于 2017-03-16T14:06:38.240 回答