protected StringBuilder appendErasedDescription(final StringBuilder sb) { StringBuilder s = sb; for (final Modifier modifier : Flags.asModifierSet(getModifiers())) { s.append(modifier.toString()); s.append(' '); } s = getFieldType().getRawType().appendErasedDescription(s); s.append(' '); s.append(getName()); return s; }
protected StringBuilder appendErasedDescription(final StringBuilder sb) { StringBuilder s = sb; for (final Modifier modifier : Flags.asModifierSet(getModifiers())) { s.append(modifier.toString()); s.append(' '); } s = getFieldType().getRawType().appendErasedDescription(s); s.append(' '); s.append(getName()); return s; }
protected StringBuilder appendErasedDescription(final StringBuilder sb) { StringBuilder s = sb; for (final Modifier modifier : Flags.asModifierSet(getModifiers())) { s.append(modifier.toString()); s.append(' '); } s = getFieldType().getRawType().appendErasedDescription(s); s.append(' '); s.append(getName()); return s; }
protected StringBuilder appendDescription(final StringBuilder sb) { StringBuilder s = sb; for (final Modifier modifier : Flags.asModifierSet(getModifiers())) { s.append(modifier.toString()); s.append(' '); } final TypeReference fieldType = getFieldType(); if (fieldType.isGenericParameter()) { s.append(fieldType.getName()); } else { s = fieldType.appendBriefDescription(s); } s.append(' '); s.append(getName()); return s; }
protected StringBuilder appendSimpleDescription(final StringBuilder sb) { StringBuilder s = sb; for (final Modifier modifier : Flags.asModifierSet(getModifiers())) { s.append(modifier.toString()); s.append(' '); } final TypeReference fieldType = getFieldType(); if (fieldType.isGenericParameter()) { s.append(fieldType.getName()); } else { s = fieldType.appendSimpleDescription(s); } s.append(' '); s.append(getName()); return s; }
protected StringBuilder appendDescription(final StringBuilder sb) { StringBuilder s = sb; for (final Modifier modifier : Flags.asModifierSet(getModifiers())) { s.append(modifier.toString()); s.append(' '); } final TypeReference fieldType = getFieldType(); if (fieldType.isGenericParameter()) { s.append(fieldType.getName()); } else { s = fieldType.appendBriefDescription(s); } s.append(' '); s.append(getName()); return s; }
protected StringBuilder appendBriefDescription(final StringBuilder sb) { StringBuilder s = sb; for (final Modifier modifier : Flags.asModifierSet(getModifiers())) { s.append(modifier.toString()); s.append(' '); } final TypeReference fieldType = getFieldType(); if (fieldType.isGenericParameter()) { s.append(fieldType.getName()); } else { s = fieldType.appendBriefDescription(s); } s.append(' '); s.append(getName()); return s; }
protected StringBuilder appendBriefDescription(final StringBuilder sb) { StringBuilder s = sb; for (final Modifier modifier : Flags.asModifierSet(getModifiers())) { s.append(modifier.toString()); s.append(' '); } final TypeReference fieldType = getFieldType(); if (fieldType.isGenericParameter()) { s.append(fieldType.getName()); } else { s = fieldType.appendBriefDescription(s); } s.append(' '); s.append(getName()); return s; }
protected StringBuilder appendSimpleDescription(final StringBuilder sb) { StringBuilder s = sb; for (final Modifier modifier : Flags.asModifierSet(getModifiers())) { s.append(modifier.toString()); s.append(' '); } final TypeReference fieldType = getFieldType(); if (fieldType.isGenericParameter()) { s.append(fieldType.getName()); } else { s = fieldType.appendSimpleDescription(s); } s.append(' '); s.append(getName()); return s; }
protected StringBuilder appendDescription(final StringBuilder sb) { StringBuilder s = sb; for (final Modifier modifier : Flags.asModifierSet(getModifiers())) { s.append(modifier.toString()); s.append(' '); } final TypeReference fieldType = getFieldType(); if (fieldType.isGenericParameter()) { s.append(fieldType.getName()); } else { s = fieldType.appendBriefDescription(s); } s.append(' '); s.append(getName()); return s; }
protected StringBuilder appendBriefDescription(final StringBuilder sb) { StringBuilder s = sb; for (final Modifier modifier : Flags.asModifierSet(getModifiers())) { s.append(modifier.toString()); s.append(' '); } final TypeReference fieldType = getFieldType(); if (fieldType.isGenericParameter()) { s.append(fieldType.getName()); } else { s = fieldType.appendBriefDescription(s); } s.append(' '); s.append(getName()); return s; }
protected StringBuilder appendSimpleDescription(final StringBuilder sb) { StringBuilder s = sb; for (final Modifier modifier : Flags.asModifierSet(getModifiers())) { s.append(modifier.toString()); s.append(' '); } final TypeReference fieldType = getFieldType(); if (fieldType.isGenericParameter()) { s.append(fieldType.getName()); } else { s = fieldType.appendSimpleDescription(s); } s.append(' '); s.append(getName()); return s; }
private int computePriority(FieldDefinition field, MethodDefinition md, NodeChain parents) { int priority = 0; JvmType type = field.getFieldType().getSimpleType(); if (type != JvmType.Long && type != JvmType.Double) priority += 10; if (Flags.testAny(md.getFlags(), Flags.SYNCHRONIZED) || parents.isSynchronized()) priority += 30; return priority; }
static FieldDefinition getField(final List<FieldDefinition> candidates, final FieldReference reference) { for (int i = 0, n = candidates.size(); i < n; i++) { final FieldDefinition candidate = candidates.get(i); if (StringComparator.Ordinal.equals(candidate.getName(), reference.getName())) { final TypeReference referenceType = reference.getFieldType(); final TypeReference candidateType = candidate.getFieldType(); if (areEquivalent(candidateType, referenceType)) { return candidate; } final TypeReference rawCandidateType = MetadataHelper.eraseRecursive(candidateType); final TypeReference rawReferenceType = MetadataHelper.eraseRecursive(referenceType); if ((rawCandidateType != candidateType || rawReferenceType != referenceType) && areEquivalent(rawCandidateType, rawReferenceType)) { return candidate; } } } return null; }
@FieldVisitor public void visitField(FieldDefinition fd, FieldContext fc) { if(fd.getName().equals("serialVersionUID")) { if(!fd.isFinal()) { fc.report("SerialVersionUidNotFinal", 0); } if(!fd.isStatic()) { fc.report("SerialVersionUidNotStatic", 0); } if(fd.getFieldType().getSimpleType() == JvmType.Integer) { fc.report("SerialVersionUidNotLong", 0); } } } }
@FieldVisitor public void checkField(FieldDefinition fd, FieldStats fs, FieldContext fc) { if(fd.getFieldType().isArray() && Flags.testAny(fd.getFlags(), Flags.VOLATILE)) { int priority = 0; int flags = fs.getFlags(fd); if(!Flags.testAny(flags, FieldStats.UNRESOLVED)) { if(!Flags.testAny(flags, FieldStats.WRITE_NONNULL)) return; // will be reported as unwritten if(Flags.testAny(flags, FieldStats.WRITE_CLASS | FieldStats.WRITE_PACKAGE | FieldStats.WRITE_OUTSIDE)) { priority += 20; } } fc.report("VolatileArray", priority, Roles.REPLACEMENT_CLASS.create(getAtomicArrayReplacement(fd .getFieldType().getElementType().getSimpleType()))); } }
private static boolean isSwitchMapField(final FieldReference field) { if (field == null) { return false; } final FieldDefinition definition = field instanceof FieldDefinition ? (FieldDefinition) field : field.resolve(); return definition != null && definition.isSynthetic() && definition.isStatic() && definition.isPrivate() && StringUtilities.startsWith(definition.getName(), "$SWITCH_TABLE$") && MetadataResolver.areEquivalent(BuiltinTypes.Integer.makeArrayType(), definition.getFieldType()); }
private static boolean isSwitchMapField(final FieldReference field) { if (field == null) { return false; } final FieldDefinition definition = field instanceof FieldDefinition ? (FieldDefinition) field : field.resolve(); return definition != null && definition.isSynthetic() && definition.isStatic() && definition.isPrivate() && StringUtilities.startsWith(definition.getName(), "$SWITCH_TABLE$") && MetadataResolver.areEquivalent(BuiltinTypes.Integer.makeArrayType(), definition.getFieldType()); }
private static boolean isSwitchMapField(final FieldReference field) { if (field == null) { return false; } final FieldDefinition definition = field instanceof FieldDefinition ? (FieldDefinition) field : field.resolve(); return definition != null && definition.isSynthetic() && definition.isStatic() && definition.isPrivate() && StringUtilities.startsWith(definition.getName(), "$SWITCH_TABLE$") && MetadataResolver.areEquivalent(BuiltinTypes.Integer.makeArrayType(), definition.getFieldType()); }
@FieldVisitor public void visitField(FieldDefinition fd, FieldContext fc, TypeDefinition td) { if((fd.isPublic() || fd.isProtected()) && (td.isPublic() || td.isProtected()) && fd.isStatic() && !fd.isEnumConstant()) { TypeReference fieldType = fd.getFieldType(); if(!isNotThreadSafe(fieldType)) return; fc.report("StaticNotThreadSafeField", AccessLevel.of(fd).select(0, 20, 100, 100), Roles.FIELD_TYPE.create(fieldType)); } }