edu.umd.cs.findbugs

Class SourceLineAnnotation

    • Constructor Detail

      • SourceLineAnnotation

        public SourceLineAnnotation(@Nonnull@DottedClassName
                            String className,
                            @Nonnull
                            String sourceFile,
                            int startLine,
                            int endLine,
                            int startBytecode,
                            int endBytecode)
        Constructor.
        Parameters:
        className - the class to which the line number(s) refer
        sourceFile - the name of the source file
        startLine - the first line (inclusive)
        endLine - the ending line (inclusive)
        startBytecode - the first bytecode offset (inclusive)
        endBytecode - the end bytecode offset (inclusive)
    • Method Detail

      • createUnknown

        public static SourceLineAnnotation createUnknown(@DottedClassName
                                         String className,
                                         String sourceFile)
        Factory method to create an unknown source line annotation.
        Parameters:
        className - the class name
        sourceFile - the source file name
        Returns:
        the SourceLineAnnotation
      • createUnknown

        public static SourceLineAnnotation createUnknown(@DottedClassName
                                         String className)
        Factory method to create an unknown source line annotation. This variant looks up the source filename automatically based on the class using best effort.
        Parameters:
        className - the class name
        Returns:
        the SourceLineAnnotation
      • createReallyUnknown

        public static SourceLineAnnotation createReallyUnknown(@DottedClassName
                                               String className)
        Factory method to create an unknown source line annotation. This doesn't use the analysis context.
        Parameters:
        className - the class name
        Returns:
        the SourceLineAnnotation
      • createUnknown

        @Nonnull
        public static SourceLineAnnotation createUnknown(@DottedClassName
                                                 String className,
                                                 String sourceFile,
                                                 int startBytecode,
                                                 int endBytecode)
        Factory method to create an unknown source line annotation. This variant is used when bytecode offsets are known, but not source lines.
        Parameters:
        className - the class name
        sourceFile - the source file name
        Returns:
        the SourceLineAnnotation
      • fromVisitedMethod

        public static SourceLineAnnotation fromVisitedMethod(PreorderVisitor visitor)
        Factory method for creating a source line annotation describing an entire method.
        Parameters:
        visitor - a BetterVisitor which is visiting the method
        Returns:
        the SourceLineAnnotation
      • fromVisitedMethod

        public static SourceLineAnnotation fromVisitedMethod(org.apache.bcel.generic.MethodGen methodGen,
                                             String sourceFile)
        Factory method for creating a source line annotation describing an entire method.
        Parameters:
        methodGen - the method being visited
        Returns:
        the SourceLineAnnotation, or null if we do not have line number information for the method
      • forEntireMethod

        public static SourceLineAnnotation forEntireMethod(@DottedClassName
                                           String className,
                                           String sourceFile,
                                           org.apache.bcel.classfile.LineNumberTable lineNumberTable,
                                           int codeSize)
        Create a SourceLineAnnotation covering an entire method.
        Parameters:
        className - name of the class the method is in
        sourceFile - source file containing the method
        lineNumberTable - the method's LineNumberTable
        codeSize - size in bytes of the method's code
        Returns:
        a SourceLineAnnotation covering the entire method
      • forEntireMethod

        public static SourceLineAnnotation forEntireMethod(org.apache.bcel.classfile.JavaClass javaClass,
                                           @CheckForNull
                                           org.apache.bcel.classfile.Method method)
        Create a SourceLineAnnotation covering an entire method.
        Parameters:
        javaClass - JavaClass containing the method
        method - the method
        Returns:
        a SourceLineAnnotation for the entire method
      • forEntireMethod

        public static SourceLineAnnotation forEntireMethod(org.apache.bcel.classfile.JavaClass javaClass,
                                           XMethod xmethod)
        Create a SourceLineAnnotation covering an entire method.
        Parameters:
        javaClass - JavaClass containing the method
        xmethod - the method
        Returns:
        a SourceLineAnnotation for the entire method
      • forFirstLineOfMethod

        public static SourceLineAnnotation forFirstLineOfMethod(MethodDescriptor methodDescriptor)
        Make a best-effort attempt to create a SourceLineAnnotation for the first line of a method.
        Parameters:
        methodDescriptor - a method
        Returns:
        SourceLineAnnotation describing the first line of the method (insofar as we can actually figure that out from the bytecode)
      • fromVisitedInstruction

        public static SourceLineAnnotation fromVisitedInstruction(BytecodeScanningDetector visitor,
                                                  int pc)
        Factory method for creating a source line annotation describing the source line number for the instruction being visited by given visitor.
        Parameters:
        visitor - a BetterVisitor which is visiting the method
        pc - the bytecode offset of the instruction in the method
        Returns:
        the SourceLineAnnotation, or null if we do not have line number information for the instruction
      • fromVisitedInstruction

        public static SourceLineAnnotation fromVisitedInstruction(ClassContext classContext,
                                                  PreorderVisitor visitor,
                                                  int pc)
        Factory method for creating a source line annotation describing the source line number for the instruction being visited by given visitor.
        Parameters:
        classContext - the ClassContext
        visitor - a BetterVisitor which is visiting the method
        pc - the bytecode offset of the instruction in the method
        Returns:
        the SourceLineAnnotation, or null if we do not have line number information for the instruction
      • fromVisitedInstruction

        public static SourceLineAnnotation fromVisitedInstruction(ClassContext classContext,
                                                  org.apache.bcel.classfile.Method method,
                                                  Location loc)
        Create from Method and Location in a visited class.
        Parameters:
        classContext - ClassContext of visited class
        method - Method in visited class
        loc - Location in visited class
        Returns:
        SourceLineAnnotation describing visited Location
      • fromVisitedInstruction

        public static SourceLineAnnotation fromVisitedInstruction(ClassContext classContext,
                                                  org.apache.bcel.classfile.Method method,
                                                  org.apache.bcel.generic.InstructionHandle handle)
        Create from Method and InstructionHandle in a visited class.
        Parameters:
        classContext - ClassContext of visited class
        method - Method in visited class
        handle - InstructionHandle in visited class
        Returns:
        SourceLineAnnotation describing visited instruction
      • fromVisitedInstruction

        public static SourceLineAnnotation fromVisitedInstruction(MethodDescriptor methodDescriptor,
                                                  Location location)
        Create from MethodDescriptor and Location of visited instruction.
        Parameters:
        methodDescriptor - MethodDescriptor identifying analyzed method
        location - Location of instruction within analyed method
        Returns:
        SourceLineAnnotation describing visited instruction
      • fromVisitedInstruction

        public static SourceLineAnnotation fromVisitedInstruction(ClassContext classContext,
                                                  org.apache.bcel.classfile.Method method,
                                                  int pc)
        Create from Method and bytecode offset in a visited class.
        Parameters:
        classContext - ClassContext of visited class
        method - Method in visited class
        pc - bytecode offset in visited method
        Returns:
        SourceLineAnnotation describing visited instruction
      • fromVisitedInstruction

        public static SourceLineAnnotation fromVisitedInstruction(org.apache.bcel.classfile.JavaClass jclass,
                                                  org.apache.bcel.classfile.Method method,
                                                  int pc)
        Create from Method and bytecode offset in a visited class.
        Parameters:
        jclass - JavaClass of visited class
        method - Method in visited class
        pc - bytecode offset in visited method
        Returns:
        SourceLineAnnotation describing visited instruction
      • fromVisitedInstructionRange

        public static SourceLineAnnotation fromVisitedInstructionRange(BytecodeScanningDetector visitor,
                                                       int startPC,
                                                       int endPC)
        Factory method for creating a source line annotation describing the source line numbers for a range of instructions in the method being visited by the given visitor.
        Parameters:
        visitor - a BetterVisitor which is visiting the method
        startPC - the bytecode offset of the start instruction in the range
        endPC - the bytecode offset of the end instruction in the range
        Returns:
        the SourceLineAnnotation, or null if we do not have line number information for the instruction
      • fromVisitedInstructionRange

        @Nonnull
        public static SourceLineAnnotation fromVisitedInstructionRange(ClassContext classContext,
                                                               PreorderVisitor visitor,
                                                               int startPC,
                                                               int endPC)
        Factory method for creating a source line annotation describing the source line numbers for a range of instructions in the method being visited by the given visitor.
        Parameters:
        classContext - the ClassContext
        visitor - a BetterVisitor which is visiting the method
        startPC - the bytecode offset of the start instruction in the range
        endPC - the bytecode offset of the end instruction in the range
        Returns:
        the SourceLineAnnotation, or null if we do not have line number information for the instruction
      • fromVisitedInstruction

        public static SourceLineAnnotation fromVisitedInstruction(BytecodeScanningDetector visitor)
        Factory method for creating a source line annotation describing the source line number for the instruction being visited by given visitor.
        Parameters:
        visitor - a DismantleBytecode visitor which is visiting the method
        Returns:
        the SourceLineAnnotation, or null if we do not have line number information for the instruction
      • fromVisitedInstruction

        @Nonnull
        public static SourceLineAnnotation fromVisitedInstruction(ClassContext classContext,
                                                          org.apache.bcel.generic.MethodGen methodGen,
                                                          String sourceFile,
                                                          @Nonnull
                                                          org.apache.bcel.generic.InstructionHandle handle)
        Factory method for creating a source line annotation describing the source line number for a visited instruction.
        Parameters:
        classContext - the ClassContext
        methodGen - the MethodGen object representing the method
        handle - the InstructionHandle containing the visited instruction
        Returns:
        the SourceLineAnnotation, or null if we do not have line number information for the instruction
      • fromVisitedInstructionRange

        public static SourceLineAnnotation fromVisitedInstructionRange(ClassContext classContext,
                                                       org.apache.bcel.generic.MethodGen methodGen,
                                                       String sourceFile,
                                                       org.apache.bcel.generic.InstructionHandle start,
                                                       org.apache.bcel.generic.InstructionHandle end)
        Factory method for creating a source line annotation describing the source line numbers for a range of instruction in a method.
        Parameters:
        classContext - theClassContext
        methodGen - the method
        start - the start instruction
        end - the end instruction (inclusive)
      • getSourceFile

        @Nonnull
        public String getSourceFile()
        Get the source file name.
      • isSourceFileKnown

        public boolean isSourceFileKnown()
        Is the source file known?
      • setSourceFile

        public void setSourceFile(String sourceFile)
        Set the source file name.
        Parameters:
        sourceFile - the source file name
      • getSimpleClassName

        public String getSimpleClassName()
        Get the simple class name (the part of the name after the dot)
      • getPackageName

        public String getPackageName()
      • getStartLine

        public int getStartLine()
        Get the start line (inclusive).
      • getEndLine

        public int getEndLine()
        Get the ending line (inclusive).
      • getStartBytecode

        public int getStartBytecode()
        Get start bytecode (inclusive).
      • getEndBytecode

        public int getEndBytecode()
        Get end bytecode (inclusive).
      • isUnknown

        public boolean isUnknown()
        Is this an unknown source line annotation?
      • format

        public String format(String key,
                    ClassAnnotation primaryClass)
        Description copied from interface: BugAnnotation
        Format the annotation as a String. The given key specifies additional information about how the annotation should be formatted. If the key is empty, then the "default" format will be used.
        Specified by:
        format in interface BugAnnotation
        Parameters:
        key - how the annotation should be formatted
        primaryClass - The primary class for the bug; some bug annotation format msgs are simplified in relation to that class.
      • getDescription

        public String getDescription()
        Description copied from interface: BugAnnotation
        Get a description of this bug annotation. The description is a key for the FindBugsAnnotationDescriptions resource bundle.
        Specified by:
        getDescription in interface BugAnnotation
      • setDescription

        public void setDescription(String description)
        Description copied from interface: BugAnnotation
        Set a description of this bug annotation. The description is a key for the FindBugsAnnotationDescriptions resource bundle.
        Specified by:
        setDescription in interface BugAnnotation
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • generateRelativeSource

        public static void generateRelativeSource(File relativeSourceBase,
                                  Project project)
      • clearGenerateRelativeSource

        public static void clearGenerateRelativeSource()
      • getSourcePath

        public String getSourcePath()
      • setSynthetic

        public void setSynthetic(boolean synthetic)
      • isSynthetic

        public boolean isSynthetic()
      • isSignificant

        public boolean isSignificant()
        Description copied from interface: BugAnnotation
        Is this annotation used to compute instance hashes or match bug instances across versions
        Specified by:
        isSignificant in interface BugAnnotation
        Returns:
        true if significant

Copyright © 2003–2015. All rights reserved.