edu.umd.cs.findbugs
Class MethodAnnotation

java.lang.Object
  extended by edu.umd.cs.findbugs.PackageMemberAnnotation
      extended by edu.umd.cs.findbugs.MethodAnnotation
All Implemented Interfaces:
BugAnnotation, XMLWriteable, XMLWriteableWithMessages, java.io.Serializable, java.lang.Cloneable, java.lang.Comparable<BugAnnotation>

public class MethodAnnotation
extends PackageMemberAnnotation

A BugAnnotation specifying a particular method in a particular class. A MethodAnnotation may (optionally) have a SourceLineAnnotation directly embedded inside it to indicate the range of source lines where the method is defined.

Author:
David Hovemeyer
See Also:
BugAnnotation, Serialized Form

Field Summary
 
Fields inherited from class edu.umd.cs.findbugs.PackageMemberAnnotation
className, description, sourceFileName, sourceLines
 
Fields inherited from interface edu.umd.cs.findbugs.BugAnnotation
MESSAGE_TAG
 
Constructor Summary
MethodAnnotation(java.lang.String className, java.lang.String methodName, java.lang.String methodSig, boolean isStatic)
          Constructor.
 
Method Summary
 void accept(BugAnnotationVisitor visitor)
          Accept a BugAnnotationVisitor.
 int compareTo(BugAnnotation o)
           
 boolean equals(java.lang.Object o)
           
protected  java.lang.String formatPackageMember(java.lang.String key)
          Do default and subclass-specific formatting.
static MethodAnnotation fromCalledMethod(DismantleBytecode visitor)
          Factory method to create a MethodAnnotation from a method called by the instruction the given visitor is currently visiting.
static MethodAnnotation fromCalledMethod(java.lang.String className, java.lang.String methodName, java.lang.String methodSig, boolean isStatic)
          Create a MethodAnnotation from a method that is not directly accessible.
static MethodAnnotation fromForeignMethod(java.lang.String className, java.lang.String methodName, java.lang.String methodSig, boolean isStatic)
           
static MethodAnnotation fromVisitedMethod(PreorderVisitor visitor)
          Factory method to create a MethodAnnotation from the method the given visitor is currently visiting.
static MethodAnnotation fromXMethod(XMethod xmethod)
          Create a MethodAnnotation from an XMethod.
 java.lang.String getFullMethod()
          Get the "full" method name.
 java.lang.String getMethodName()
          Get the method name.
 java.lang.String getMethodSignature()
          Get the method type signature.
 java.lang.String getNameInClass()
          Get the "full" method name.
 int hashCode()
           
 boolean isStatic()
          Return whether or not the method is static.
 XMethod toXMethod()
          Convert to an XMethod.
 void writeXML(XMLOutput xmlOutput)
          Write this object to given XMLOutput.
 void writeXML(XMLOutput xmlOutput, boolean addMessages)
           
 
Methods inherited from class edu.umd.cs.findbugs.PackageMemberAnnotation
clone, format, getClassName, getDescription, getPackageName, getSourceFileName, getSourceLines, setDescription, setSourceLines, shorten, toString
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

MethodAnnotation

public MethodAnnotation(java.lang.String className,
                        java.lang.String methodName,
                        java.lang.String methodSig,
                        boolean isStatic)
Constructor.

Parameters:
className - the name of the class containing the method
methodName - the name of the method
methodSig - the Java type signature of the method
isStatic - true if the method is static, false if not
Method Detail

fromVisitedMethod

public static MethodAnnotation fromVisitedMethod(PreorderVisitor visitor)
Factory method to create a MethodAnnotation from the method the given visitor is currently visiting.

Parameters:
visitor - the BetterVisitor currently visiting the method

fromCalledMethod

public static MethodAnnotation fromCalledMethod(DismantleBytecode visitor)
Factory method to create a MethodAnnotation from a method called by the instruction the given visitor is currently visiting.

Parameters:
visitor - the visitor
Returns:
the MethodAnnotation representing the called method

fromForeignMethod

public static MethodAnnotation fromForeignMethod(java.lang.String className,
                                                 java.lang.String methodName,
                                                 java.lang.String methodSig,
                                                 boolean isStatic)

fromCalledMethod

public static MethodAnnotation fromCalledMethod(java.lang.String className,
                                                java.lang.String methodName,
                                                java.lang.String methodSig,
                                                boolean isStatic)
Create a MethodAnnotation from a method that is not directly accessible. We will use the repository to try to find its class in order to populate the information as fully as possible.

Parameters:
className - class containing called method
methodName - name of called method
methodSig - signature of called method
isStatic - true if called method is static
Returns:
the MethodAnnotation for the called method

fromXMethod

public static MethodAnnotation fromXMethod(XMethod xmethod)
Create a MethodAnnotation from an XMethod.

Parameters:
xmethod - the XMethod
Returns:
the MethodAnnotation

getMethodName

public java.lang.String getMethodName()
Get the method name.


getMethodSignature

public java.lang.String getMethodSignature()
Get the method type signature.


isStatic

public boolean isStatic()
Return whether or not the method is static.

Returns:
true if the method is static, false otherwise

toXMethod

public XMethod toXMethod()
Convert to an XMethod.

Returns:
an XMethod specifying the same method as this MethodAnnotation

accept

public void accept(BugAnnotationVisitor visitor)
Description copied from interface: BugAnnotation
Accept a BugAnnotationVisitor.

Parameters:
visitor - the visitor to accept

formatPackageMember

protected java.lang.String formatPackageMember(java.lang.String key)
Description copied from class: PackageMemberAnnotation
Do default and subclass-specific formatting.

Specified by:
formatPackageMember in class PackageMemberAnnotation
Parameters:
key - the key specifying how to do the formatting

getNameInClass

public java.lang.String getNameInClass()
Get the "full" method name. This is a format which looks sort of like a method signature that would appear in Java source code.


getFullMethod

public java.lang.String getFullMethod()
Get the "full" method name. This is a format which looks sort of like a method signature that would appear in Java source code.


hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object

equals

public boolean equals(java.lang.Object o)
Overrides:
equals in class java.lang.Object

compareTo

public int compareTo(BugAnnotation o)

writeXML

public void writeXML(XMLOutput xmlOutput)
              throws java.io.IOException
Description copied from interface: XMLWriteable
Write this object to given XMLOutput.

Parameters:
xmlOutput - the XMLOutput for the document
Throws:
java.io.IOException

writeXML

public void writeXML(XMLOutput xmlOutput,
                     boolean addMessages)
              throws java.io.IOException
Throws:
java.io.IOException