private BugInstance addClassFieldAndAccess(BugInstance instance, XField f) { if (data.writtenNonNullFields.contains(f) && data.readFields.contains(f)) { throw new IllegalArgumentException("No information for fields that are both read and written nonnull"); } instance.addClass(f.getClassName()).addField(f); if (data.fieldAccess.containsKey(f)) { instance.add(data.fieldAccess.get(f)); } return instance; }
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()); }
@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); } }
String className = f.getClassName(); String fieldSig = f.getSignature(); String fieldName = f.getName();
public static FieldAnnotation fromXField(XField fieldDescriptor) { return new FieldAnnotation(fieldDescriptor.getClassName(), fieldDescriptor.getName(), fieldDescriptor.getSignature(), fieldDescriptor.getSourceSignature(), fieldDescriptor.isStatic()); }
className = ((XField) o).getClassName(); kind = Target.FIELD; } else if (o instanceof String) {
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));
int score2 = 0; int priority = bug.getPriority(); if (unreadFields.classesScanned.contains(rb.maskedField.getClassName())) { if (unreadFields.getReadFields().contains(rb.maskedField)) { score1++;
String className = f.getClassName(); Set<ProgramPoint> assumedNonnullAt = data.assumedNonNull.get(f); notInitializedUses.add(className, assumedNonnullAt.size()); String className = f.getClassName(); if (notInitializedUses.getCount(className) >= 8) { continue; 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())); System.out.println(" : " + f.isResolved()); priority++; if (data.abstractClasses.contains(f.getClassName())) { priority++; if (!data.hasNonAbstractSubClass.contains(f.getClassName())) { priority++; String className = f.getClassName(); int lastDollar = Math.max(className.lastIndexOf('$'), className.lastIndexOf('+')); boolean isAnonymousInnerClass = (lastDollar > 0) && (lastDollar < className.length() - 1)
if (!access.getField().getClassName().equals(dottedClassConstantOperand)) { return;
continue; boolean notThreadSafe = jcipAnotationDatabase.hasClassAnnotation(xfield.getClassName(), "NotThreadSafe"); if (notThreadSafe) { continue; guardedByThis = false; boolean threadSafe = jcipAnotationDatabase.hasClassAnnotation(xfield.getClassName(), "ThreadSafe"); if (stats.isServletField()) { bugInstance = new BugInstance(this, "MSF_MUTABLE_SERVLET_FIELD", Priorities.NORMAL_PRIORITY).addClass( xfield.getClassName()).addField(xfield); } else { bugInstance = new BugInstance(this, guardedByThis ? "IS_FIELD_NOT_GUARDED" : "IS2_INCONSISTENT_SYNC", Priorities.NORMAL_PRIORITY).addClass(xfield.getClassName()).addField(xfield).addInt(printFreq) .describe(IntAnnotation.INT_SYNC_PERCENT);
if (Const.STATIC_INITIALIZER_NAME.equals(getMethodName()) && field.getClassName().equals(getDottedClassName())) { return;
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 (!instanceClassName.equals(xfield.getClassName())) { xfield = XFactory.getExactXField(instanceClassName, xfield.getName(), xfield.getSignature(), xfield.isStatic());
private BugInstance addClassFieldAndAccess(BugInstance instance, XField f) { if (data.writtenNonNullFields.contains(f) && data.readFields.contains(f)) { throw new IllegalArgumentException("No information for fields that are both read and written nonnull"); } instance.addClass(f.getClassName()).addField(f); if (data.fieldAccess.containsKey(f)) { instance.add(data.fieldAccess.get(f)); } return instance; }
/** * 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()); }
public static FieldAnnotation fromXField(XField fieldDescriptor) { return new FieldAnnotation(fieldDescriptor.getClassName(), fieldDescriptor.getName(), fieldDescriptor.getSignature(), fieldDescriptor.getSourceSignature(), fieldDescriptor.isStatic()); }