@Override @Nullable public Boolean isOverriding() { if (isStatic() || isPrivate()) { return false; } if (isAnnotatedOverride()) { return true; } if (symbol == null) { return null; } Symbol.MethodSymbol methodSymbol = symbol.overriddenSymbol(); if (methodSymbol != null) { return methodSymbol.isUnknown() ? null : true; } return false; }
@Override @Nullable public Boolean isOverriding() { if (isStatic() || isPrivate()) { return false; } if (isAnnotatedOverride()) { return true; } if (symbol == null) { return null; } Symbol.MethodSymbol methodSymbol = symbol.overriddenSymbol(); if (methodSymbol != null) { return methodSymbol.isUnknown() ? null : true; } return false; }
@Override public void visitNode(Tree tree) { if (!hasSemantic()) { return; } MethodTree methodTree = (MethodTree) tree; Symbol.MethodSymbol methodSymbol = methodTree.symbol(); Symbol.MethodSymbol overriddenSymbol = methodSymbol.overriddenSymbol(); if (overriddenSymbol == null || overriddenSymbol.isUnknown()) { return; } if (isSynchronized(overriddenSymbol) && !isSynchronized(methodSymbol)) { List<JavaFileScannerContext.Location> secondaries = Collections.emptyList(); MethodTree overridenMethodTree = overriddenSymbol.declaration(); if (overridenMethodTree != null) { secondaries = Collections.singletonList(new JavaFileScannerContext.Location("", overridenMethodTree.simpleName())); } reportIssue(methodTree.simpleName(), MESSAGE, secondaries, null); } }
@Override public void visitNode(Tree tree) { if (!hasSemantic()) { return; } MethodTree methodTree = (MethodTree) tree; Symbol.MethodSymbol methodSymbol = methodTree.symbol(); Symbol.MethodSymbol overriddenSymbol = methodSymbol.overriddenSymbol(); if (overriddenSymbol == null || overriddenSymbol.isUnknown()) { return; } if (isSynchronized(overriddenSymbol) && !isSynchronized(methodSymbol)) { List<JavaFileScannerContext.Location> secondaries = Collections.emptyList(); MethodTree overridenMethodTree = overriddenSymbol.declaration(); if (overridenMethodTree != null) { secondaries = Collections.singletonList(new JavaFileScannerContext.Location("", overridenMethodTree.simpleName())); } reportIssue(methodTree.simpleName(), MESSAGE, secondaries, null); } }
@Override public void visitNode(Tree tree) { if (!hasSemantic() || isExcludedByVersion(context.getJavaVersion())) { return; } MethodTree methodTree = (MethodTree) tree; Symbol.MethodSymbol methodSymbol = methodTree.symbol(); Symbol.MethodSymbol overriddenSymbol = methodSymbol.overriddenSymbol(); if (overriddenSymbol == null || overriddenSymbol.isUnknown()) { return; } if (!overriddenSymbol.isAbstract() && !overriddenSymbol.owner().type().is("java.lang.Object") && !methodSymbol.metadata().isAnnotatedWith("java.lang.Override")) { reportIssue(methodTree.simpleName(), "Add the \"@Override\" annotation above this method signature"); } }
@Override public void visitNode(Tree tree) { if (!hasSemantic() || isExcludedByVersion(context.getJavaVersion())) { return; } MethodTree methodTree = (MethodTree) tree; Symbol.MethodSymbol methodSymbol = methodTree.symbol(); Symbol.MethodSymbol overriddenSymbol = methodSymbol.overriddenSymbol(); if (overriddenSymbol == null || overriddenSymbol.isUnknown()) { return; } if (!overriddenSymbol.isAbstract() && !overriddenSymbol.owner().type().is("java.lang.Object") && !methodSymbol.metadata().isAnnotatedWith("java.lang.Override")) { reportIssue(methodTree.simpleName(), "Add the \"@Override\" annotation above this method signature"); } }
private static boolean isOverridingDeprecatedConcreteMethod(Symbol.MethodSymbol symbol) { Symbol.MethodSymbol overriddenMethod = symbol.overriddenSymbol(); while(overriddenMethod != null && !overriddenMethod.isUnknown()) { if (overriddenMethod.isAbstract()) { return false; } if (overriddenMethod.isDeprecated()) { return true; } overriddenMethod = overriddenMethod.overriddenSymbol(); } return false; }
private static boolean isOverridingDeprecatedConcreteMethod(Symbol.MethodSymbol symbol) { Symbol.MethodSymbol overriddenMethod = symbol.overriddenSymbol(); while(overriddenMethod != null && !overriddenMethod.isUnknown()) { if (overriddenMethod.isAbstract()) { return false; } if (overriddenMethod.isDeprecated()) { return true; } overriddenMethod = overriddenMethod.overriddenSymbol(); } return false; }