private static SyntaxToken getLastTokenFromSignature(MethodTree methodTree) { if (methodTree.throwsClauses().isEmpty()) { return methodTree.closeParenToken(); } else { return getIdentifierToken(Iterables.getLast(methodTree.throwsClauses())); } }
private static SyntaxToken getLastTokenFromSignature(MethodTree methodTree) { if (methodTree.throwsClauses().isEmpty()) { return methodTree.closeParenToken(); } else { return getIdentifierToken(Iterables.getLast(methodTree.throwsClauses())); } }
private boolean isFromMethodOverride(Type exceptionType) { if (!methods.isEmpty()) { MethodTree method = methods.peek(); if (isOverriding(method) && isCompatibleWithThrows(exceptionType, method.throwsClauses())) { return true; } } return false; }
private boolean isFromMethodOverride(Type exceptionType) { if (!methods.isEmpty()) { MethodTree method = methods.peek(); if (isOverriding(method) && isCompatibleWithThrows(exceptionType, method.throwsClauses())) { return true; } } return false; }
private boolean isSerializableMethod(MethodTree methodTree) { boolean result = false; // FIXME detect methods based on type of arg and throws, not arity. if (methodTree.modifiers().modifiers().contains(Modifier.PRIVATE) && methodTree.parameters().size() == 1) { result |= "writeObject".equals(methodTree.simpleName().name()) && methodTree.throwsClauses().size() == 1; result |= "readObject".equals(methodTree.simpleName().name()) && methodTree.throwsClauses().size() == 2; } return result; }
@Override public void visitNode(Tree tree) { ListTree<TypeTree> thrownList = ((MethodTree) tree).throwsClauses(); if (!hasSemantic() || thrownList.isEmpty()) { return; } checkMethodThrownList((MethodTree) tree, thrownList); }
@Override public void visitNode(Tree tree) { ListTree<TypeTree> thrownList = ((MethodTree) tree).throwsClauses(); if (!hasSemantic() || thrownList.isEmpty()) { return; } checkMethodThrownList((MethodTree) tree, thrownList); }
@Override public void visitMethod(MethodTree tree) { for (TypeTree throwClause : tree.throwsClauses()) { raiseIssueOnNpe(throwClause, throwClause.symbolType()); } super.visitMethod(tree); }
private static boolean hasOnlyOneMethod(List<Tree> members) { MethodTree methodTree = null; for (Tree tree : members) { if (!tree.is(Tree.Kind.EMPTY_STATEMENT, Tree.Kind.METHOD)) { return false; } else if (tree.is(Tree.Kind.METHOD)) { if (methodTree != null) { return false; } methodTree = (MethodTree) tree; } } // if overriden method declares to throw an exception, refactoring to a lambda might prove tricky return methodTree != null && methodTree.throwsClauses().isEmpty(); }
@Override public void visitMethod(MethodTree tree) { super.visitMethod(tree); if ((tree.is(Tree.Kind.CONSTRUCTOR) || isNotOverridden(tree)) && isNotMainMethod(tree)) { for (TypeTree throwClause : tree.throwsClauses()) { Type exceptionType = throwClause.symbolType(); if (isRawException(exceptionType) && !exceptionsThrownByMethodInvocations.contains(exceptionType)) { reportIssue(throwClause); } } } exceptionsThrownByMethodInvocations.clear(); }
@Override public void visitMethod(MethodTree tree) { super.visitMethod(tree); if ((tree.is(Tree.Kind.CONSTRUCTOR) || isNotOverridden(tree)) && isNotMainMethod(tree)) { for (TypeTree throwClause : tree.throwsClauses()) { Type exceptionType = throwClause.symbolType(); if (isRawException(exceptionType) && !exceptionsThrownByMethodInvocations.contains(exceptionType)) { reportIssue(throwClause); } } } exceptionsThrownByMethodInvocations.clear(); }
@Override public void visitMethod(MethodTree tree) { if ((tree.is(Tree.Kind.CONSTRUCTOR) || isNotOverriden(tree)) && !((MethodTreeImpl) tree).isMainMethod()) { for (TypeTree throwClause : tree.throwsClauses()) { checkExceptionAndRaiseIssue(throwClause); } } super.visitMethod(tree); }
@Override public void visitNode(Tree tree) { if (hasSemantic()) { if (tree.is(Kind.THROW_STATEMENT)) { ExpressionTree expressionTree = ((ThrowStatementTree) tree).expression(); raiseIssueOnNpe(expressionTree, expressionTree.symbolType()); } else { for (TypeTree throwClause : ((MethodTree) tree).throwsClauses()) { raiseIssueOnNpe(throwClause, throwClause.symbolType()); } } } }
@Override public void visitNode(Tree tree) { if (hasSemantic()) { if (tree.is(Kind.THROW_STATEMENT)) { ExpressionTree expressionTree = ((ThrowStatementTree) tree).expression(); raiseIssueOnNpe(expressionTree, expressionTree.symbolType()); } else { for (TypeTree throwClause : ((MethodTree) tree).throwsClauses()) { raiseIssueOnNpe(throwClause, throwClause.symbolType()); } } } }
@Override public void visitMethod(MethodTree tree) { scan(tree.modifiers()); scan(tree.typeParameters()); scan(tree.returnType()); // skip the simple name scan(tree.parameters()); scan(tree.defaultValue()); scan(tree.throwsClauses()); scan(tree.block()); } }
@Override public void visitMethod(MethodTree tree) { scan(tree.modifiers()); scan(tree.typeParameters()); scan(tree.returnType()); scan(tree.parameters()); scan(tree.defaultValue()); scan(tree.throwsClauses()); scan(tree.block()); }
@Override public void visitMethod(MethodTree tree) { scan(tree.modifiers()); scan(tree.typeParameters()); scan(tree.returnType()); scan(tree.parameters()); scan(tree.defaultValue()); scan(tree.throwsClauses()); scan(tree.block()); }
@Override public void visitMethod(MethodTree tree) { scan(tree.modifiers()); scan(tree.typeParameters()); scan(tree.returnType()); // skip the simple name scan(tree.parameters()); scan(tree.defaultValue()); scan(tree.throwsClauses()); scan(tree.block()); } }
@Override public void visitMethod(MethodTree tree) { scan(tree.modifiers()); scan(tree.typeParameters()); scan(tree.returnType()); scan(tree.simpleName()); scan(tree.parameters()); scan(tree.defaultValue()); scan(tree.throwsClauses()); scan(tree.block()); }
@Override public void visitMethod(MethodTree tree) { scan(tree.modifiers()); scan(tree.typeParameters()); scan(tree.returnType()); scan(tree.simpleName()); scan(tree.parameters()); scan(tree.defaultValue()); scan(tree.throwsClauses()); scan(tree.block()); }