private boolean isDeprecatedType(Type symbolType) { if (symbolType.isClass()) { for (String deprecatedType : REPLACEMENTS.keySet()) { if (symbolType.is(deprecatedType)) { return !exclusions.peek().contains(deprecatedType); } } } return false; } }
private boolean isDeprecatedType(Type symbolType) { if (symbolType.isClass()) { for (String deprecatedType : REPLACEMENTS.keySet()) { if (symbolType.is(deprecatedType)) { return !exclusions.peek().contains(deprecatedType); } } } return false; } }
@Override public boolean isSubtypeOf(Type superType) { if (isTagged(BOT)) { return ((JavaType) superType).isTagged(BOT) || superType.isClass() || superType.isArray(); } if (((JavaType) superType).isTagged(JavaType.WILDCARD)) { return ((WildCardType) superType).isSubtypeOfBound(this); } if (superType.isClass()) { ClassJavaType superClassType = (ClassJavaType) superType; return this.equals(superClassType) || superTypeIsSubTypeOf(superClassType); } return false; }
private static boolean isAcceptableType(org.sonar.plugins.java.api.semantic.Type argType) { return argType.isSubtypeOf("java.io.Serializable") || argType.is("java.lang.Object") || argType.isPrimitive() || !argType.isClass(); }
private boolean isAcceptableType(org.sonar.plugins.java.api.semantic.Type argType) { return argType.isSubtypeOf("java.io.Serializable") || argType.is("java.lang.Object") || argType.isPrimitive() || !argType.isClass(); }
private boolean isInvokedOnType(String type, ExpressionTree expressionTree) { Type selectorType = expressionTree.symbolType(); if (selectorType.isClass()) { return type.equals(selectorType.fullyQualifiedName()) || checkInterfaces(type, selectorType.symbol()); } return false; }
private static boolean isAcceptableType(org.sonar.plugins.java.api.semantic.Type argType) { return argType.isSubtypeOf("java.io.Serializable") || argType.is("java.lang.Object") || argType.isPrimitive() || !argType.isClass(); }
private boolean isObject(Type operandType) { return operandType.erasure().isClass() && !operandType.symbol().isEnum(); }
private static boolean isObject(Type operandType) { return operandType.erasure().isClass() && !operandType.symbol().isEnum(); }
private void checkSuperTypeDeprecation(@Nullable TypeTree superTypeTree, boolean isInterface) { if (superTypeTree != null) { Type symbolType = superTypeTree.symbolType(); if (symbolType.isClass() && symbolType.symbol().isDeprecated()) { addIssue(superTypeTree, "\"" + symbolType.symbol().name() + "\"" + " is deprecated, " + (isInterface ? "implement" : "extend") + " the suggested replacement instead."); } } }
private static boolean implementsSerializable(@Nullable Type type) { if (type == null || type.isUnknown() || type.isPrimitive()) { // do not raise an issue if type is unknown return true; } if (type.isArray()) { return implementsSerializable(((Type.ArrayType) type).elementType()); } if (type.isClass() || ((JavaType) type).isTagged(JavaType.TYPEVAR)) { return type.erasure().isSubtypeOf("java.io.Serializable"); } return false; }
private static boolean implementsSerializable(@Nullable Type type) { if (type == null || type.isUnknown() || type.isPrimitive()) { // do not raise an issue if type is unknown return true; } if (type.isArray()) { return implementsSerializable(((Type.ArrayType) type).elementType()); } if (type.isClass() || ((JavaType) type).isTagged(JavaType.TYPEVAR)) { return type.erasure().isSubtypeOf("java.io.Serializable"); } return false; }
private boolean isParameterStringArray() { VariableTree variableTree = parameters.get(0); boolean result = false; if (variableTree.type().is(Tree.Kind.ARRAY_TYPE)) { ArrayTypeTree arrayTypeTree = (ArrayTypeTree) variableTree.type(); result = arrayTypeTree.type().symbolType().isClass() && "String".equals(arrayTypeTree.type().symbolType().name()); } return result; }
private void checkWhenOwnerIsNotArray(IdentifierTree methodInvocationName, Type ownerType, Type argumentType) { if (argumentType.isArray() && !ownerType.is(JAVA_LANG_OBJECT)) { reportIssue(methodInvocationName, "Remove this call to \"equals\"; comparisons between a type and an array always return false."); } else if (argumentType.isClass() && areNotRelated(ownerType, argumentType) && (areTypesFinalClassAndInterface(ownerType, argumentType) || areNeitherInterfaces(ownerType, argumentType))) { reportIssue(methodInvocationName, MESSAGE); } }
private boolean isParameterStringArray() { VariableTree variableTree = parameters.get(0); boolean result = false; if (variableTree.type().is(Tree.Kind.ARRAY_TYPE)) { ArrayTypeTree arrayTypeTree = (ArrayTypeTree) variableTree.type(); result = arrayTypeTree.type().symbolType().isClass() && "String".equals(arrayTypeTree.type().symbolType().name()); } return result; }
private boolean isParameterStringArray() { VariableTree variableTree = parameters.get(0); boolean result = false; if (variableTree.type().is(Tree.Kind.ARRAY_TYPE)) { ArrayTypeTree arrayTypeTree = (ArrayTypeTree) variableTree.type(); result = arrayTypeTree.type().symbolType().isClass() && "String".equals(arrayTypeTree.type().symbolType().name()); } return result; }
private boolean isParameterStringArray() { VariableTree variableTree = parameters.get(0); boolean result = false; if (variableTree.type().is(Tree.Kind.ARRAY_TYPE)) { ArrayTypeTree arrayTypeTree = (ArrayTypeTree) variableTree.type(); result = arrayTypeTree.type().symbolType().isClass() && "String".equals(arrayTypeTree.type().symbolType().name()); } return result; }
private void checkWhenOwnerIsNotArray(IdentifierTree methodInvocationName, Type ownerType, Type argumentType) { if (argumentType.isArray() && !ownerType.is(JAVA_LANG_OBJECT)) { reportIssue(methodInvocationName, "Remove this call to \"equals\"; comparisons between a type and an array always return false."); } else if (argumentType.isClass() && areNotRelated(ownerType, argumentType) && (areTypesFinalClassAndInterface(ownerType, argumentType) || areNeitherInterfaces(ownerType, argumentType))) { reportIssue(methodInvocationName, MESSAGE); } }
private boolean parentClassImplementsEquals(ClassTree tree) { TypeTree superClass = tree.superClass(); if (superClass != null) { Type superClassType = superClass.symbolType(); // FIXME Workaround until SONARJAVA-901 is resolved while (superClassType.symbol().type().isClass() && !superClassType.is("java.lang.Object")) { Symbol.TypeSymbol superClassSymbol = superClassType.symbol(); if (hasNotFinalEqualsMethod(superClassSymbol)) { return true; } superClassType = superClassSymbol.superClass(); } } return false; }
@Override public void visitNode(Tree tree) { ClassTree node = (ClassTree) tree; Symbol.TypeSymbol symbol = node.symbol(); Symbol owner = symbol.owner(); Type ownerType = owner.type(); if (ownerType != null && ownerType.isClass() && owner.owner().isPackageSymbol()) { // raise only one issue for the first level of nesting when multiple nesting int lines = new LinesOfCodeVisitor().linesOfCode(node); if (lines > max) { reportIssue(ExpressionsHelper.reportOnClassTree(node), "Reduce this class from " + lines + " to the maximum allowed " + max + " or externalize it in a public class."); } } }