Class MemberUtils

java.lang.Object
edu.umd.cs.findbugs.bytecode.MemberUtils

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

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

    Constructors
    Modifier
    Constructor
    Description
    private
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static boolean
    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
     
    private static boolean
    isGeneratedMethod(org.apache.bcel.classfile.FieldOrMethod m)
     
    private static boolean
    isGeneratedMethod(org.apache.bcel.generic.FieldGenOrMethodGen m)
     
    static boolean
    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
    Checks if the given method was user-generated.
    static boolean
    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 Object

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

    • GENERATED_TYPE_SUFFIX

      private static final 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:
    • GENERATED_NAME_SUFFIX

      private static final String GENERATED_NAME_SUFFIX
      See Also:
  • Constructor Details

    • MemberUtils

      private MemberUtils()
  • Method Details

    • 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)
    • isGenerated

      private static boolean isGenerated(AnnotatedObject o)
    • 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:
    • 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: