private String getClassName(JavaClass c, int classIndex) { String name = c.getConstantPool().getConstantString(classIndex, Const.CONSTANT_Class); return ClassName.extractClassName(name).replace('/', '.'); }
@Override public void visit(ConstantNameAndType obj) { String signature = obj.getSignature(javaClass.getConstantPool()); ClassParser.extractReferencedClassesFromSignature(referencedClassSet, signature); } });
private String getMemberName(JavaClass c, String className, int memberNameIndex, int signatureIndex) { return className + "." + ((ConstantUtf8) c.getConstantPool().getConstant(memberNameIndex, Const.CONSTANT_Utf8)).getBytes() + " : " + ((ConstantUtf8) c.getConstantPool().getConstant(signatureIndex, Const.CONSTANT_Utf8)).getBytes(); }
@Override public void visitClassContext(ClassContext classContext) { if (hasInterestingMethod(classContext.getJavaClass().getConstantPool(), methods) || hasInterestingClass(classContext.getJavaClass().getConstantPool(), Collections.singleton("java/sql/Connection"))) { super.visitClassContext(classContext); } }
@Override public void visitClassContext(ClassContext classContext) { if(hasInterestingClass(classContext.getJavaClass().getConstantPool(), Collections.singleton("java/lang/Math"))) { super.visitClassContext(classContext); } }
@Override public void visitClassContext(ClassContext classContext) { if(hasInterestingClass(classContext.getJavaClass().getConstantPool(), Collections.singleton("java/lang/Thread"))) { super.visitClassContext(classContext); } }
@Override public void visitClassContext(ClassContext classContext) { if(hasInterestingClass(classContext.getJavaClass().getConstantPool(), Collections.singleton("java/io/ObjectOutputStream"))) { super.visitClassContext(classContext); } }
@Override public void visitClassContext(ClassContext classContext) { if(hasInterestingClass(classContext.getJavaClass().getConstantPool(), Collections.singleton("java/util/concurrent/ConcurrentHashMap"))) { super.visitClassContext(classContext); } }
@Override public void visitClassContext(ClassContext classContext) { if(hasInterestingClass(classContext.getJavaClass().getConstantPool(), Collections.singleton("java/sql/ResultSet"))) { super.visitClassContext(classContext); } }
@Override public void visitClassContext(ClassContext classContext) { if(hasInterestingMethod(classContext.getJavaClass().getConstantPool(), methods)) { super.visitClassContext(classContext); } }
@Override public void visitClassContext(ClassContext classContext) { this.hasInterestingMethodCalls = hasInterestingMethod(classContext.getJavaClass().getConstantPool(), methods); super.visitClassContext(classContext); }
@Override public void visitClassContext(ClassContext classContext) { if(hasInterestingMethod(classContext.getJavaClass().getConstantPool(), methods)) { super.visitClassContext(classContext); } }
@Override public void visitClassContext(ClassContext classContext) { if(hasInterestingConstant(classContext.getJavaClass().getConstantPool())) { super.visitClassContext(classContext); } }
@Override public void visitClassContext(ClassContext classContext) { if(hasInterestingMethod(classContext.getJavaClass().getConstantPool(), methods)) { super.visitClassContext(classContext); } }
public boolean isCaught(ClassContext classContext, Method method, UnconditionalValueDerefSet entryFact, ValueNumber paramVN) { boolean caught = true; Set<Location> dereferenceSites = entryFact.getDerefLocationSet(paramVN); if (dereferenceSites != null && !dereferenceSites.isEmpty()) { ConstantPool cp = classContext.getJavaClass().getConstantPool(); for(Location loc : dereferenceSites) { if (!FindNullDeref.catchesNull(cp, method.getCode(), loc)) { caught = false; } } } return caught; }
@Override public void visit(ConstantClass obj) { @SlashedClassName String className = obj.getBytes(javaClass.getConstantPool()); if (className.indexOf('[') >= 0) { ClassParser.extractReferencedClassesFromSignature(referencedClassSet, className); } else if (ClassName.isValidClassName(className)) { referencedClassSet.add(DescriptorFactory.instance().getClassDescriptor(className)); } }
@Override public void visitClassContext(ClassContext classContext) { if (hasInterestingMethod(classContext.getJavaClass().getConstantPool(), methods)) { classContext.getJavaClass().accept(this); } }
@Override public void visitClassContext(ClassContext classContext) { if (collectionClass != null && hasInterestingMethod(classContext.getJavaClass().getConstantPool(), methods)) { classContext.getJavaClass().accept(this); } }
boolean inExplictCatchNullBlock(Location loc) { int pc = loc.getHandle().getPosition(); int catchSize = Util.getSizeOfSurroundingTryBlock(classContext.getJavaClass().getConstantPool(), method.getCode(), "java/lang/NullPointerException", pc); if (catchSize < Integer.MAX_VALUE) { return true; } return false; }
/** * The detector is only meaningful for Java5 class libraries. * * @param classContext * the context object that holds the JavaClass parsed */ @Override public void visitClassContext(ClassContext classContext) { int majorVersion = classContext.getJavaClass().getMajor(); if (majorVersion >= Const.MAJOR_1_5 && hasInterestingMethod(classContext.getJavaClass().getConstantPool(), methods)) { super.visitClassContext(classContext); } }