Refine search
@Override public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) { if ((access & Opcodes.ACC_STATIC) != 0 && (access & Opcodes.ACC_FINAL) != 0 && (access & Opcodes.ACC_PUBLIC) != 0 && !name.equals(name.toUpperCase())) { bugReporter.reportBug(new BugInstance(this, "NM_FIELD_NAMING_CONVENTION", Priorities.LOW_PRIORITY).addClass(this) .addField(this.name, name, desc, access)); } return null; }
public BugInstance makeWarning(String bugPattern, Object descriptor, int priority, ClassDescriptor cd) { BugInstance bug = new BugInstance(this, bugPattern, priority).addClass(cd); if (descriptor instanceof FieldDescriptor) { bug.addField((FieldDescriptor)descriptor); } else if (descriptor instanceof MethodDescriptor) { bug.addMethod((MethodDescriptor)descriptor); } else if (descriptor instanceof ClassDescriptor) { bug.addClass((ClassDescriptor)descriptor); } if (DEBUG) { System.out.println("Reporting " + bug); } return bug; }
@Override public void report() { for (Map.Entry<String, SortedSet<String>> e : map.entrySet()) { Set<String> occursIn = e.getValue(); if (occursIn.size() == 1) { continue; } XField field = definition.get(e.getKey()); if (field == null) { continue; } Integer length = stringSize.get(e.getKey()); int overhead = length * (occursIn.size() - 1); if (overhead < 3 * SIZE_OF_HUGE_CONSTANT) { continue; } String className = field.getClassName(); BugInstance bug = new BugInstance(this, "HSC_HUGE_SHARED_STRING_CONSTANT", overhead > 20 * SIZE_OF_HUGE_CONSTANT ? HIGH_PRIORITY : (overhead > 8 * SIZE_OF_HUGE_CONSTANT ? NORMAL_PRIORITY : LOW_PRIORITY)).addClass(className) .addField(field).addInt(length).addInt(occursIn.size()).describe(IntAnnotation.INT_OCCURRENCES); for (String c : occursIn) { if (!c.equals(className)) { bug.addClass(c); } } bugReporter.reportBug(bug); } }
@Override public void visit(Field field) { if (!field.isStatic()) { return; } String signature = field.getSignature(); if (signature.startsWith("Ljava/util/") && !"Ljava/util/regex/Pattern;".equals(signature) && !"Ljava/util/logging/Logger;".equals(signature) && !"Ljava/util/BitSet;".equals(signature) && !"Ljava/util/ResourceBundle;".equals(signature) && !"Ljava/util/Comparator;".equals(signature) && getXField().getAnnotation(ConstantAnnotation) == null) { boolean flagged = analysisContextContained(getXClass()); bugReporter.reportBug(new BugInstance(this, "TESTING", flagged ? NORMAL_PRIORITY : LOW_PRIORITY).addClass(this).addField(this).addType(signature)); } } @Override
@Override public void visit(Field obj) { if (isReservedName(obj.getName())) { BugInstance bug = new BugInstance(this, "NM_FUTURE_KEYWORD_USED_AS_MEMBER_IDENTIFIER", isVisible(obj) ? HIGH_PRIORITY : NORMAL_PRIORITY).addClass(this).addField(this); bugReporter.reportBug(bug); } }
@Override public void visit(Code code) { boolean interesting = Const.CONSTRUCTOR_NAME.equals(getMethodName()) || Const.STATIC_INITIALIZER_NAME.equals(getMethodName()); if (!interesting) { return; } secondaryConstructor = false; HashSet<XField> needToInitialize = getMethod().isStatic() ? nonnullStaticFields : nonnullFields; if (needToInitialize.isEmpty()) { return; } // initialize any variables we want to initialize for the method super.visit(code); // make callbacks to sawOpcode for all opcodes if (!secondaryConstructor && !initializedFields.containsAll(needToInitialize)) { int priority = Priorities.NORMAL_PRIORITY; if (needToInitialize.size() - initializedFields.size() == 1 && needToInitialize.size() > 1) { priority = Priorities.HIGH_PRIORITY; } for (XField f : needToInitialize) { if (initializedFields.contains(f)) { continue; } BugInstance b = new BugInstance(this, "NP_NONNULL_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR", priority) .addClassAndMethod(this).addField(f); bugReporter.reportBug(b); } } initializedFields.clear(); }
BugInstance bug = new BugInstance(this, bugType, priority).addClass(className).addField(f); SourceLineAnnotation firstPC = firstFieldUse.get(f); if (firstPC != null) {
@Override public void report() { Subtypes2 subtypes2 = AnalysisContext.currentAnalysisContext().getSubtypes2(); for (XField f : AnalysisContext.currentXFactory().allFields()) { if (isVolatileArray(f) && subtypes2.isApplicationClass(f.getClassDescriptor())) { int priority = LOW_PRIORITY; if (initializationWrites.contains(f) && !otherWrites.contains(f)) { priority = NORMAL_PRIORITY; } bugReporter.reportBug(new BugInstance(this, "VO_VOLATILE_REFERENCE_TO_ARRAY", priority).addClass( f.getClassDescriptor()).addField(f)); } } }
@Override public void visitField(Field obj) { if (obj.isProtected()) { bugReporter.reportBug(new BugInstance(this, "CI_CONFUSED_INHERITANCE", LOW_PRIORITY).addClass(cls).addField( new FieldAnnotation(cls.getClassName(), obj.getName(), obj.getSignature(), obj.isStatic()))); } }
bugReporter.reportBug(new BugInstance(this, "SE_TRANSIENT_FIELD_NOT_RESTORED", priority).addClass(getThisClass()) .addField(fieldX)); priority++; bugReporter.reportBug(new BugInstance(this, "SE_NO_SUITABLE_CONSTRUCTOR", priority).addClass(getThisClass() .getClassName())); bugReporter.reportBug(new BugInstance(this, "SE_NO_SUITABLE_CONSTRUCTOR_FOR_EXTERNALIZATION", directlyImplementsExternalizable ? HIGH_PRIORITY : NORMAL_PRIORITY).addClass(getThisClass().getClassName()));
if (fields != null && fields.contains(f)) { warningGiven.add(f); BugInstance bug = new BugInstance(this, "SI_INSTANCE_BEFORE_FINALS_ASSIGNED", NORMAL_PRIORITY).addClassAndMethod(this); if (i.field != null) { bug.addField(i.field).describe(FieldAnnotation.STORED_ROLE);
private void checkStackValue(int arg) { Item item = getStack().getStackItem(arg); if(item.getXField() == currentDoubleCheckField) { bugReporter.reportBug(new BugInstance(this, "DC_PARTIALLY_CONSTRUCTED", NORMAL_PRIORITY).addClassAndMethod(this) .addField(currentDoubleCheckField).describe("FIELD_ON").addSourceLine(this).addSourceLine(this, assignPC) .describe("SOURCE_LINE_STORED")); stage++; } } }
private void analyzeField(Field field, JavaClass javaClass) { for (AnnotationEntry annotation : field.getAnnotationEntries()) { if (ANNOTATION_TYPES.contains(annotation.getAnnotationType()) || annotation.getAnnotationType().contains("JsonTypeInfo")) { for (ElementValuePair elementValuePair : annotation.getElementValuePairs()) { if ("use".equals((elementValuePair.getNameString())) && VULNERABLE_USE_NAMES.contains(elementValuePair.getValue().stringifyValue())) { bugReporter.reportBug(new BugInstance(this, DESERIALIZATION_TYPE, HIGH_PRIORITY) .addClass(javaClass) .addString(javaClass.getClassName() + " on field " + field.getName() + " of type " + field.getType() + " annotated with " + annotation.toShortString()) .addField(FieldAnnotation.fromBCELField(javaClass, field)) .addString("") ); } } } } }
fieldWarningList.add(new BugInstance(this, "SE_BAD_FIELD_STORE", priority) .addClass(getThisClass().getClassName()).addField(f).addType(genSig) .describe("TYPE_FOUND").addSourceLine(this));
case ADD: if (seen == Const.PUTFIELD && incrementField.equals(getXFieldOperand())) { bugReporter.reportBug(new BugInstance(this, "VO_VOLATILE_INCREMENT", "J".equals(incrementField.getSignature()) ? Priorities.HIGH_PRIORITY : Priorities.NORMAL_PRIORITY) .addClassAndMethod(this).addField(incrementField).addSourceLine(this));
@Override public void visit(Field field) { ConstantValue value = field.getConstantValue(); if (value == null) { return; } Constant c = getConstantPool().getConstant(value.getConstantValueIndex()); if (testingEnabled && c instanceof ConstantLong && ((ConstantLong)c).getBytes() == MICROS_PER_DAY_OVERFLOWED_AS_INT) { bugReporter.reportBug( new BugInstance(this, "TESTING", HIGH_PRIORITY).addClass(this).addField(this) .addString("Did you mean MICROS_PER_DAY") .addInt(MICROS_PER_DAY_OVERFLOWED_AS_INT) .describe(IntAnnotation.INT_VALUE)); } } @Override
FieldAnnotation fa = FieldAnnotation.fromBCELField(getDottedClassName(), f); if (true || var.getStartPC() > 0) { bugReporter.reportBug(new BugInstance(this, "MF_METHOD_MASKS_FIELD", LOW_PRIORITY) .addClassAndMethod(this).addField(fa).addSourceLine(this, var.getStartPC() - 1));
BugInstance bug = new BugInstance(this, "MF_CLASS_MASKS_FIELD", priority).addClass(this).addField(fa) .describe("FIELD_MASKING").addField(maskedFieldAnnotation).describe("FIELD_MASKED"); rememberedBugs.add(new RememberedBug(bug, fa, maskedFieldAnnotation));
@Override public void sawOpcode(int seen) { if(skip) { return; } if(isBranch(seen) || seen == Const.ATHROW || isReturn(seen)) { skip = true; } if(seen == Const.PUTFIELD) { XField xField = getXFieldOperand(); if(xField != null && xField.getClassDescriptor().getClassName().equals(getClassName())) { Item val = getStack().getStackItem(0); if(val.isInitialParameter()) { reporter.reportBug(new BugInstance("ME_ENUM_FIELD_SETTER", NORMAL_PRIORITY).addClassAndMethod(this).addField(xField) .addSourceLine(this)); } } } } }
BugInstance bug = new BugInstance(this, "IMA_INEFFICIENT_MEMBER_ACCESS", LOW_PRIORITY).addClassAndMethod(this) .addSourceLine(this); if(access != null) { bug.addField(access.getField());