@Override public void visitLabelledStatement(LabelledStatementTree tree) { if (!tree.statement().is(KindSet.LOOP_KINDS)) { addIssue(tree.labelToken(), String.format(MESSAGE, tree.labelToken().text())); } super.visitLabelledStatement(tree); }
@Override public void visitNode(AstNode astNode) { if (astNode.is(Kind.LABELLED_STATEMENT)) { String label = ((LabelledStatementTree) astNode).label().name(); jumpTargets.push(new JumpTarget(label)); } else if (astNode.is(Kind.BREAK_STATEMENT, Kind.CONTINUE_STATEMENT)) { AstNode labelNode = astNode.getFirstChild(Kind.LABEL_IDENTIFIER); String label = labelNode == null ? null : labelNode.getTokenValue(); for (int i = jumpTargets.size() - 1; i >= 0; i--) { JumpTarget jumpTarget = jumpTargets.get(i); jumpTarget.jumps++; if (Objects.equal(label, jumpTarget.label)) { break; } } } else { jumpTargets.push(new JumpTarget()); } }
@Override public void visitLabelledStatement(LabelledStatementTree tree) { jumpTargets.push(new JumpTarget(tree.labelToken().text())); super.visitLabelledStatement(tree); leaveScope(); }
@Override public void visitNode(AstNode astNode) { if (astNode.is(Kind.CASE_CLAUSE)) { inCase = true; } else if (inCase && astNode.is(Kind.LABELLED_STATEMENT)) { getContext().createLineViolation(this, "Remove this misleading \"{0}\" label.", astNode, ((LabelledStatementTree) astNode).label().name()); } }
@Override public void visitNode(Tree tree) { if (tree.is(Kind.CASE_CLAUSE)) { enterCase(); } else if (tree.is(Kind.LABELLED_STATEMENT)) { if (inCase()) { SyntaxToken label = ((LabelledStatementTree) tree).labelToken(); addIssue(label, String.format(MESSAGE, label.text())); } } else { stack.push(0); } }
@Override public void visitLabelledStatement(LabelledStatementTree tree) { if (!tree.statement().is(KindSet.LOOP_KINDS)) { addIssue(tree.labelToken(), "Refactor the code to remove this label and the need for it."); } super.visitLabelledStatement(tree); }