@Override public void visitCatch(CatchTree tree) { if (!isExcludedType(tree.parameter().type())) { Symbol exception = tree.parameter().symbol(); validUsagesStack.addFirst(exception.usages()); super.visitCatch(tree); Collection<IdentifierTree> usages = validUsagesStack.pop(); if (usages.isEmpty()) { context.reportIssue(this, tree.parameter(), "Either log or rethrow this exception."); } } }
@Override public void leaveNode(Tree tree) { if (tree.is(Tree.Kind.CATCH)) { CatchTree catchTree = (CatchTree) tree; caughtVariables.remove(catchTree.parameter().simpleName().name()); } }
@Override public void visitNode(Tree tree) { if (tree.is(Tree.Kind.CATCH)) { CatchTree catchTree = (CatchTree) tree; caughtVariables.add(catchTree.parameter().simpleName().name()); } else if (isLeftOperandAnException((InstanceOfTree) tree)) { addIssue( ((InstanceOfTree) tree).instanceofKeyword(), "Replace the usage of the \"instanceof\" operator by a catch block."); } }