Class MutableStaticFields

    • Field Detail

      • COLLECTION_SUPERCLASSES

        private static final java.util.Set<java.lang.String> COLLECTION_SUPERCLASSES
      • MUTABLE_COLLECTION_CLASSES

        private static final java.util.Set<java.lang.String> MUTABLE_COLLECTION_CLASSES
      • MUTABLE_COLLECTION_METHODS

        private static final java.util.Map<java.lang.String,​java.util.Map<java.lang.String,​MutableStaticFields.AllowedParameter>> MUTABLE_COLLECTION_METHODS
      • seen

        java.util.LinkedList<XField> seen
      • publicClass

        boolean publicClass
      • mutableCollectionJustCreated

        boolean mutableCollectionJustCreated
      • zeroOnTOS

        boolean zeroOnTOS
      • emptyArrayOnTOS

        boolean emptyArrayOnTOS
      • inStaticInitializer

        boolean inStaticInitializer
      • packageName

        java.lang.String packageName
      • readAnywhere

        java.util.Set<XField> readAnywhere
      • unsafeValue

        java.util.Set<XField> unsafeValue
      • mutableCollection

        java.util.Set<XField> mutableCollection
      • notFinal

        java.util.Set<XField> notFinal
      • outsidePackage

        java.util.Set<XField> outsidePackage
      • needsRefactoringToBeFinal

        java.util.Set<XField> needsRefactoringToBeFinal
      • writtenInMethod

        java.util.Set<XField> writtenInMethod
      • writtenTwiceInMethod

        java.util.Set<XField> writtenTwiceInMethod
      • isEclipseNLS

        private boolean isEclipseNLS
        Eclipse uses reflection to initialize NLS message bundles. Classes which using this mechanism are usually extending org.eclipse.osgi.util.NLS class and contains lots of public static String fields which are used as message Constants. Unfortunately these fields cannot be final, so FB reports tons of warnings for such Eclipse classes.
    • Constructor Detail

      • MutableStaticFields

        public MutableStaticFields​(BugReporter bugReporter)
    • Method Detail

      • extractPackage

        static java.lang.String extractPackage​(java.lang.String c)
      • visit

        public void visit​(org.apache.bcel.classfile.JavaClass obj)
        Overrides:
        visit in class BetterVisitor
      • visit

        public void visit​(org.apache.bcel.classfile.Method obj)
        Overrides:
        visit in class BetterVisitor
      • visit

        public void visit​(org.apache.bcel.classfile.Code obj)
        Overrides:
        visit in class DismantleBytecode
      • isCollection

        private boolean isCollection​(java.lang.String signature)
      • interesting

        private boolean interesting​(XField f)
      • visit

        public void visit​(org.apache.bcel.classfile.Field obj)
        Overrides:
        visit in class BetterVisitor
      • report

        public void report()
        Description copied from interface: Detector
        This method is called after all classes to be visited. It should be used by any detectors which accumulate information over all visited classes to generate results.
        Specified by:
        report in interface Detector
        Overrides:
        report in class BytecodeScanningDetector