Class MemberUtils


  • public final class MemberUtils
    extends java.lang.Object
    Utility to analyze class members.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static java.lang.String GENERATED_NAME_SUFFIX  
      private static java.lang.String GENERATED_TYPE_SUFFIX
      This will capture annotations such as org.immutables.value.Generated or lombok.Generated.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private MemberUtils()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static boolean couldBeLambda​(XMethod m)
      Checks if the method could be a lambda.
      static boolean couldBeLambda​(org.apache.bcel.classfile.Method m)
      Checks if the method could be a lambda.
      static boolean couldBeLambda​(org.apache.bcel.generic.MethodGen m)
      Checks if the method could be a lambda.
      private static boolean internalIsSynthetic​(org.apache.bcel.classfile.FieldOrMethod m)  
      private static boolean internalIsSynthetic​(org.apache.bcel.generic.FieldGenOrMethodGen m)  
      private static boolean isGenerated​(AnnotatedObject o)  
      private static boolean isGeneratedMethod​(org.apache.bcel.classfile.FieldOrMethod m)  
      private static boolean isGeneratedMethod​(org.apache.bcel.generic.FieldGenOrMethodGen m)  
      static boolean isMainMethod​(XMethod method)
      Checks if the given method is a main method.
      static boolean isMainMethod​(org.apache.bcel.classfile.Method method)
      Checks if the given method is a main method.
      static boolean isUserGenerated​(ClassMember m)
      Checks if the given method was user-generated.
      static boolean isUserGenerated​(XClass c)
      Checks if the given class was user-generated, classes annotated with annotations such as Immutables' Generated are not considered user-generated.
      static boolean isUserGenerated​(org.apache.bcel.classfile.FieldOrMethod m)
      Checks if the given method was user-generated.
      static boolean isUserGenerated​(org.apache.bcel.generic.FieldGenOrMethodGen m)
      Checks if the given method was user-generated.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • GENERATED_TYPE_SUFFIX

        private static final java.lang.String GENERATED_TYPE_SUFFIX
        This will capture annotations such as org.immutables.value.Generated or lombok.Generated. Note that javax.annotation.Generated, javax.annotation.processing.Generated only have source retention and are not visible to SpotBugs.
        See Also:
        Constant Field Values
      • GENERATED_NAME_SUFFIX

        private static final java.lang.String GENERATED_NAME_SUFFIX
        See Also:
        Constant Field Values
    • Constructor Detail

      • MemberUtils

        private MemberUtils()
    • Method Detail

      • internalIsSynthetic

        private static boolean internalIsSynthetic​(org.apache.bcel.classfile.FieldOrMethod m)
      • internalIsSynthetic

        private static boolean internalIsSynthetic​(org.apache.bcel.generic.FieldGenOrMethodGen m)
      • isGeneratedMethod

        private static boolean isGeneratedMethod​(org.apache.bcel.classfile.FieldOrMethod m)
      • isGeneratedMethod

        private static boolean isGeneratedMethod​(org.apache.bcel.generic.FieldGenOrMethodGen m)
      • couldBeLambda

        public static boolean couldBeLambda​(org.apache.bcel.classfile.Method m)
        Checks if the method could be a lambda. Notice this is a best-check, since once compiled lambda methods are not univocally distinguishable.
        Parameters:
        m - The method to check if it's a lambda
        Returns:
        True if this could be a lambda, false otherwise
      • couldBeLambda

        public static boolean couldBeLambda​(XMethod m)
        Checks if the method could be a lambda. Notice this is a best-check, since once compiled lambda methods are not univocally distinguishable.
        Parameters:
        m - The method to check if it's a lambda
        Returns:
        True if this could be a lambda, false otherwise
      • couldBeLambda

        public static boolean couldBeLambda​(org.apache.bcel.generic.MethodGen m)
        Checks if the method could be a lambda. Notice this is a best-check, since once compiled lambda methods are not univocally distinguishable.
        Parameters:
        m - The method to check if it's a lambda
        Returns:
        True if this could be a lambda, false otherwise
      • isUserGenerated

        public static boolean isUserGenerated​(org.apache.bcel.classfile.FieldOrMethod m)
        Checks if the given method was user-generated. This takes into account for instance lambda methods, that even though they are marked as "synthetic", they are user-generated, and therefore interesting to analysis. Methods annotated with annotations such as Lombok's Generated are not considered user-generated.
        Parameters:
        m - The field or method to check.
        Returns:
        True if the given member is user generated, false otherwise.
      • isUserGenerated

        public static boolean isUserGenerated​(ClassMember m)
        Checks if the given method was user-generated. This takes into account for instance lambda methods, that even though they are marked as "synthetic", they are user-generated, and therefore interesting to analysis. Methods annotated with annotations such as Lombok's Generated are not considered user-generated.
        Parameters:
        m - The field or method to check.
        Returns:
        True if the given member is user generated, false otherwise.
      • isUserGenerated

        public static boolean isUserGenerated​(org.apache.bcel.generic.FieldGenOrMethodGen m)
        Checks if the given method was user-generated. This takes into account for instance lambda methods, that even though they are marked as "synthetic", they are user-generated, and therefore interesting to analysis. Methods annotated with annotations such as Lombok's Generated are not considered user-generated.
        Parameters:
        m - The field or method to check.
        Returns:
        True if the given member is user generated, false otherwise.
      • isUserGenerated

        public static boolean isUserGenerated​(XClass c)
        Checks if the given class was user-generated, classes annotated with annotations such as Immutables' Generated are not considered user-generated.
        Parameters:
        c - The class to check.
        Returns:
        True if the given class is user generated, false otherwise.
      • isMainMethod

        public static boolean isMainMethod​(org.apache.bcel.classfile.Method method)
        Checks if the given method is a main method. It takes into account the changes introduced in JEP 445. A main method has non-private access, is named "main", returns void, and has a single string array argument or has no arguments.
        Parameters:
        method - The method to check
        Returns:
        true if the method is a main method, false otherwise
        See Also:
        JEP 445: Unnamed Classes and Instance Main Methods
      • isMainMethod

        public static boolean isMainMethod​(XMethod method)
        Checks if the given method is a main method. It takes into account the changes introduced in JEP 445. A main method has non-private access, is named "main", returns void, and has a single string array argument or has no arguments.
        Parameters:
        method - The method to check
        Returns:
        true if the method is a main method, false otherwise
        See Also:
        JEP 445: Unnamed Classes and Instance Main Methods