@Override public void visit(JavaClass obj) { String superclassName = obj.getSuperclassName(); isSynthetic = "java.rmi.server.RemoteStub".equals(superclassName); Attribute[] attributes = obj.getAttributes(); if (attributes != null) { for (Attribute a : attributes) { if (a instanceof Synthetic) { isSynthetic = true; } } } }
@Override public void visit(JavaClass obj) { super.visit(obj); int flags = obj.getAccessFlags(); publicClass = (flags & Const.ACC_PUBLIC) != 0 && !getDottedClassName().startsWith("sun."); packageName = extractPackage(getClassName()); isEclipseNLS = "org.eclipse.osgi.util.NLS".equals(obj.getSuperclassName()); }
@Override public void visitClassContext(ClassContext classContext) { JavaClass javaClass = classContext.getJavaClass(); if ("org.apache.struts.action.Action".equals(javaClass.getSuperclassName())) { bugReporter.reportBug(new BugInstance(this, STRUTS1_ENDPOINT_TYPE, Priorities.LOW_PRIORITY) // .addClass(javaClass)); } }
@Override public void visitClassContext(ClassContext classContext) { JavaClass javaClass = classContext.getJavaClass(); String superClassName = javaClass.getSuperclassName(); if ("org.apache.wicket.markup.html.WebPage".equals(superClassName)) { bugReporter.reportBug(new BugInstance(this, WICKET_ENDPOINT_TYPE, Priorities.LOW_PRIORITY) // .addClass(javaClass)); return; } }
@Override public void visitClassContext(ClassContext classContext) { JavaClass javaClass = classContext.getJavaClass(); if ("java.security.MessageDigest".equals(javaClass.getSuperclassName())) { bugReporter.reportBug(new BugInstance(this, CUSTOM_MESSAGE_DIGEST_TYPE, Priorities.NORMAL_PRIORITY) // .addClass(javaClass)); } }
public static boolean instanceOf(JavaClass subtype, @DottedClassName String dottedSupertype) { if (subtype.getClassName().equals(dottedSupertype) || subtype.getSuperclassName().equals(dottedSupertype)) { return true; } if ("java.lang.Object".equals(subtype.getSuperclassName()) && subtype.getInterfaceIndices().length == 0) { return false; } Subtypes2 subtypes2 = AnalysisContext.currentAnalysisContext().getSubtypes2(); ClassDescriptor subDescriptor = DescriptorFactory.createClassDescriptor(subtype); ClassDescriptor superDescriptor = DescriptorFactory.createClassDescriptorFromDottedClassName(dottedSupertype); try { return subtypes2.isSubtype(subDescriptor, superDescriptor); } catch (ClassNotFoundException e) { AnalysisContext.reportMissingClass(e); return false; } }
data.abstractClasses.add(getDottedClassName()); } else { String superClass = obj.getSuperclassName(); if (superClass != null) { data.hasNonAbstractSubClass.add(superClass); boolean superClassIsObject = "java.lang.Object".equals(obj.getSuperclassName()); if (getSuperclassName().indexOf('$') >= 0 || getSuperclassName().indexOf('+') >= 0 || withinAnonymousClass.matcher(getDottedClassName()).find()) {
isEclipseNLS = "org.eclipse.osgi.util.NLS".equals(obj.getSuperclassName()); super.visit(obj);
JavaClass obj = classContext.getJavaClass(); String superClassName = obj.getSuperclassName(); if ("java.lang.Object".equals(superClassName)) { return;
@Override public void visitClassContext(ClassContext classContext) { try { JavaClass cls = classContext.getJavaClass(); superclassName = cls.getSuperclassName(); JavaClass[] interfaces = null; if (cls.isClass() && ((cls.getAccessFlags() & Const.ACC_ABSTRACT) != 0)) { interfaces = cls.getAllInterfaces(); interfaceMethods = new HashSet<>(); for (JavaClass aInterface : interfaces) { Method[] infMethods = aInterface.getMethods(); for (Method meth : infMethods) { interfaceMethods.add(meth.getName() + meth.getSignature()); } } } } catch (ClassNotFoundException cnfe) { bugReporter.reportMissingClass(cnfe); } super.visitClassContext(classContext); }
try { JavaClass cls = classContext.getJavaClass(); String superClsName = cls.getSuperclassName(); if ("java.lang.Object".equals(superClsName)) { return;
public void setupVisitorForClass(JavaClass obj) { constantPool = obj.getConstantPool(); thisClass = obj; ConstantClass c = (ConstantClass) constantPool.getConstant(obj.getClassNameIndex()); className = getStringFromIndex(c.getNameIndex()); dottedClassName = className.replace('/', '.'); packageName = obj.getPackageName(); sourceFile = obj.getSourceFileName(); dottedSuperclassName = obj.getSuperclassName(); superclassName = dottedSuperclassName.replace('.', '/'); ClassDescriptor cDesc = DescriptorFactory.createClassDescriptor(className); if (!FindBugs.isNoAnalysis()) { try { thisClassInfo = (ClassInfo) Global.getAnalysisCache().getClassAnalysis(XClass.class, cDesc); } catch (CheckedAnalysisException e) { throw new AssertionError("Can't find ClassInfo for " + cDesc); } } super.visitJavaClass(obj); }
private Method findSuperclassMethod(@DottedClassName String superclassName, Method subclassMethod) throws ClassNotFoundException { String methodName = subclassMethod.getName(); Type[] subArgs = null; JavaClass superClass = Repository.lookupClass(superclassName); Method[] methods = superClass.getMethods(); outer: for (Method m : methods) { if (m.getName().equals(methodName)) { if (subArgs == null) { subArgs = Type.getArgumentTypes(subclassMethod.getSignature()); } Type[] superArgs = Type.getArgumentTypes(m.getSignature()); if (subArgs.length == superArgs.length) { for (int j = 0; j < subArgs.length; j++) { if (!superArgs[j].equals(subArgs[j])) { continue outer; } } return m; } } } if (!"Object".equals(superclassName)) { @DottedClassName String superSuperClassName = superClass.getSuperclassName(); if (superSuperClassName.equals(superclassName)) { throw new ClassNotFoundException("superclass of " + superclassName + " is itself"); } return findSuperclassMethod(superSuperClassName, subclassMethod); } return null; }
String superClassName = jclass.getSuperclassName(); if (superClassName.endsWith("ProtocolMessage")) { return;
String superClassName = obj.getSuperclassName(); if (!"java.lang.Object".equals(name)) { if (sameSimpleName(superClassName, name)) {
@Override public void visitClassContext(ClassContext classContext) { if (!enabled()) { return; } JavaClass jClass = classContext.getJavaClass(); XClass xClass = classContext.getXClass(); try { if (!isJunit3TestCase(xClass)) { return; } if ((jClass.getAccessFlags() & Const.ACC_ABSTRACT) == 0) { if (!hasTestMethods(jClass)) { bugReporter.reportBug(new BugInstance(this, "IJU_NO_TESTS", LOW_PRIORITY).addClass(jClass)); } } directChildOfTestCase = "junit.framework.TestCase".equals(jClass.getSuperclassName()); jClass.accept(this); } catch (ClassNotFoundException cnfe) { bugReporter.reportMissingClass(cnfe); } }
break; if (classContext.getJavaClass().getSuperclassName().toLowerCase().indexOf("test") >= 0) { break;
isCloneable = true; if (subtypes2.isSubtype(DescriptorFactory.createClassDescriptorFromDottedClassName(obj.getSuperclassName()), cloneDescriptor)) { implementsCloneableDirectly = false;
String superclassName = jclass.getSuperclassName(); if (codeLength > 6000 && Const.STATIC_INITIALIZER_NAME.equals(methodName) && "java.lang.Enum".equals(superclassName)) { analysisContext.getLookupFailureCallback().reportSkippedAnalysis(
@Override public void parse(final ClassNameAndSuperclassInfo.Builder builder) throws InvalidClassFileFormatException { builder.setCodeBaseEntry(codeBaseEntry); builder.setAccessFlags(javaClass.getAccessFlags()); ClassDescriptor classDescriptor = DescriptorFactory.createClassDescriptorFromDottedClassName(javaClass.getClassName()); if (expectedClassDescriptor != null && expectedClassDescriptor.equals(classDescriptor)) { throw new InvalidClassFileFormatException("Expected " + expectedClassDescriptor, classDescriptor, codeBaseEntry); } builder.setClassDescriptor(classDescriptor); builder.setSuperclassDescriptor(DescriptorFactory.createClassDescriptorFromDottedClassName(javaClass.getSuperclassName())); String[] allInterfaces = javaClass.getInterfaceNames(); ClassDescriptor[] allInterfaceDescriptiors; if (allInterfaces.length == 0) { allInterfaceDescriptiors = ClassDescriptor.EMPTY_ARRAY; } else { allInterfaceDescriptiors = new ClassDescriptor[allInterfaces.length]; for (int i = 0; i < allInterfaces.length; i++) { allInterfaceDescriptiors[i] = DescriptorFactory.createClassDescriptorFromDottedClassName(allInterfaces[i]); } } builder.setInterfaceDescriptorList(allInterfaceDescriptiors); }