public void sawOpcode(int seen) { if (DEBUG) { System.out.println(getPC() + " " + Const.getOpcodeName(seen)); if (m != null && "java.util.concurrent.ConcurrentHashMap".equals(m.getClassName()) && "containsKey".equals(m.getName())) { lastQuestionableCheckTarget = getBranchTarget(); if (seen == Const.IFEQ) { priority = LOW_PRIORITY; lastQuestionableCheckTarget = getBranchTarget(); if (seen == Const.IFNULL) { priority = LOW_PRIORITY; if ("java.util.concurrent.ConcurrentHashMap".equals(getDottedClassConstantOperand())) { String methodName = getNameConstantOperand(); XClass xClass = getXClassOperand(); if (xClass != null && "put".equals(methodName)) { if ((getPC() < lastQuestionableCheckTarget) && (lastQuestionableCheckTarget != -1)) { bugReporter.reportBug(new BugInstance(this, "AT_OPERATION_SEQUENCE_ON_CONCURRENT_ABSTRACTION", priority) .addClassAndMethod(this).addType(xClass.getClassDescriptor()).addCalledMethod(this)
@Override public void visitClassContext(ClassContext classContext) { if(hasInterestingClass(classContext.getJavaClass().getConstantPool(), Collections.singleton("java/util/concurrent/ConcurrentHashMap"))) { super.visitClassContext(classContext); } }
public void sawOpcode(int seen) { if (DEBUG) { System.out.println(getPC() + " " + OPCODE_NAMES[seen]); if (m != null && "java.util.concurrent.ConcurrentHashMap".equals(m.getClassName()) && "containsKey".equals(m.getName())) { lastQuestionableCheckTarget = getBranchTarget(); if (seen == IFEQ) { priority = LOW_PRIORITY; lastQuestionableCheckTarget = getBranchTarget(); if (seen == IFNULL) { priority = LOW_PRIORITY; if ("java.util.concurrent.ConcurrentHashMap".equals(getDottedClassConstantOperand())) { String methodName = getNameConstantOperand(); XClass xClass = getXClassOperand(); if (xClass != null && "put".equals(methodName)) { if ((getPC() < lastQuestionableCheckTarget) && (lastQuestionableCheckTarget != -1)) { bugReporter.reportBug(new BugInstance(this, "AT_OPERATION_SEQUENCE_ON_CONCURRENT_ABSTRACTION", priority) .addClassAndMethod(this).addType(xClass.getClassDescriptor()).addCalledMethod(this)
@Override public void visitClassContext(ClassContext classContext) { if(hasInterestingClass(classContext.getJavaClass().getConstantPool(), Collections.singleton("java/util/concurrent/ConcurrentHashMap"))) { super.visitClassContext(classContext); } }