public void killLoadsWithSimilarName(String className, String methodName) { if (!REDUNDANT_LOAD_ELIMINATION) { return; } String packageName = extractPackageName(className); HashSet<AvailableLoad> killMe = new HashSet<>(); for (AvailableLoad availableLoad : getAvailableLoadMap().keySet()) { XField field = availableLoad.getField(); String fieldPackageName = extractPackageName(field.getClassName()); if (packageName.equals(fieldPackageName) && field.isStatic() && methodName.toLowerCase().indexOf(field.getName().toLowerCase()) >= 0) { killMe.add(availableLoad); } } killAvailableLoads(killMe); }
/** * Add a field annotation for an XField. * * @param xfield * the XField * @return this object */ @Nonnull public BugInstance addOptionalField(@CheckForNull XField xfield) { if (xfield == null) { return this; } return addField(xfield.getClassName(), xfield.getName(), xfield.getSignature(), xfield.isStatic()); }
/** * Add a field annotation for an XField. * * @param xfield * the XField * @return this object */ @Nonnull public BugInstance addField(XField xfield) { return addField(xfield.getClassName(), xfield.getName(), xfield.getSignature(), xfield.isStatic()); }
String className = f.getClassName(); String fieldSig = f.getSignature(); String fieldName = f.getName(); boolean couldBeFinal = !isFinal && !notFinal.contains(f);
public static FieldAnnotation fromXField(XField fieldDescriptor) { return new FieldAnnotation(fieldDescriptor.getClassName(), fieldDescriptor.getName(), fieldDescriptor.getSignature(), fieldDescriptor.getSourceSignature(), fieldDescriptor.isStatic()); }
if (f.getName().startsWith("this$")) { return NullnessAnnotation.NONNULL;
if(field.getClassName().endsWith("SecurityBypasser$AllHosts$") && field.getName().equals("MODULE$")) { bugReporter.reportBug(new BugInstance(this, WEAK_HOSTNAME_VERIFIER_TYPE, Priorities.NORMAL_PRIORITY) // .addClass(this).addMethod(this).addSourceLine(this)); else if(field.getClassName().endsWith("SecurityBypasser$AllTM$") && field.getName().equals("MODULE$")) { bugReporter.reportBug(new BugInstance(this, WEAK_TRUST_MANAGER_TYPE, Priorities.NORMAL_PRIORITY) // .addClass(this).addMethod(this).addSourceLine(this));
if ("java.util.logging.Level".equals(field.getClassName()) && "SEVERE".equals(field.getName()) || "org.apache.log4j.Level".equals(field.getClassName()) && ("ERROR".equals(field.getName()) || "FATAL".equals(field.getName()))) { getFrame().toExceptionValues(); if (field.getName().startsWith("class$")) { produce(IsNullValue.nonNullValue()); return;
Set<String> fieldNamesSet = new HashSet<>(); for (XField f : data.writtenNonNullFields) { fieldNamesSet.add(f.getName()); for (Iterator<XField> i = declaredFields.iterator(); i.hasNext();) { XField f = i.next(); if (f.isSynthetic() && !f.getName().startsWith("this$") || f.getName().startsWith("_")) { i.remove(); nullOnlyFieldNames.add(f.getName()); classContainingNullOnlyFields.add(f.getClassDescriptor()); int increment = 3; } else if (nullOnlyFieldNames.getCount(f.getName()) > 8) { assumeReflective.add(f); } else if (classContainingNullOnlyFields.getCount(f.getClassDescriptor()) > 4) { assumeReflective.add(f); } else if (classContainingNullOnlyFields.getCount(f.getClassDescriptor()) > 2 && f.getName().length() == 1) { assumeReflective.add(f); System.out.println(" : " + data.assumedNonNull.containsKey(f)); System.out.println(" : " + data.fieldsOfSerializableOrNativeClassed.contains(f)); System.out.println(" : " + fieldNamesSet.contains(f.getName())); System.out.println(" : " + data.abstractClasses.contains(f.getClassName())); System.out.println(" : " + data.hasNonAbstractSubClass.contains(f.getClassName())); String fieldName = f.getName(); String className = f.getClassName(); int lastDollar = Math.max(className.lastIndexOf('$'), className.lastIndexOf('+'));
if (xfield.getName().startsWith("class$") || xfield.getName().startsWith("array$")) { if (DEBUG) { System.out.println("Ignoring field " + xfield.getName()); if (!signature.startsWith("[") && !signature.startsWith("L")) { if (DEBUG) { System.out.println("Ignoring non-reference field " + xfield.getName());
OpcodeStack.Item valuePut = getStack().getStackItem(0); checkWriteToStaticFromInstanceMethod: if (f.getName().indexOf("class$") != 0) { int priority = LOW_PRIORITY; if (f.isReferenceType()) { || f.getName().indexOf('$') >= 0) { priority++; if (f.getName().indexOf("DEBUG") >= 0 || f.getName().indexOf("VERBOSE") >= 0 && "Z".equals(f.getSignature())) { priority++; priority++;
return; if (f.isSynthetic() || f.getName().startsWith("this$")) { return;
} else { for (XField f : c.getXFields()) { if (f.getName().equals(local.getName()) && (f.isStatic() || !getMethod().isStatic())) { bugReporter.reportBug(new BugInstance(this, "SA_LOCAL_SELF_ASSIGNMENT_INSTEAD_OF_FIELD", priority).addClassAndMethod(this).add(local).addField(f)
xfield = XFactory.getExactXField(instanceClassName, xfield.getName(), xfield.getSignature(), xfield.isStatic());
final XJavaDoc xJavaDoc = XDocletTagSupport.getXJavaDoc(); final XClass xClass = xJavaDoc.getXClass(clazz.getCanonicalName()); // iterate over all fields in the angebot class and... for (Object field : xClass.getFields(true)) { final XField xfield = (XField) field; // ... check if it contains the corresponding field, ... if (xfield.getName().contains(fieldNameToLookFor)) { return xfield; } }
private Object sawGetStatic(Object userObject) { XField field = getXFieldOperand(); if (field != null) { String fieldName = field.getName(); if (fieldSpecialObjects.containsKey(fieldName)) { return fieldName; } } return userObject; }
private void processInvokeVirtual() { String className = getClassConstantOperand(); if (className.startsWith("java/util/") && className.endsWith("List")) { XField field = getFieldFromStack(stack, getSigConstantOperand()); if (field != null) { String fieldName = field.getName(); fieldsReported.remove(fieldName); } } }
/** * Add a field annotation for an XField. * * @param xfield * the XField * @return this object */ @Nonnull public BugInstance addField(XField xfield) { return addField(xfield.getClassName(), xfield.getName(), xfield.getSignature(), xfield.isStatic()); }