类 CodeLocation

java.lang.Object
proguard.analysis.datastructure.Location
proguard.analysis.datastructure.CodeLocation
所有已实现的接口:
Comparable<Location>

public class CodeLocation extends Location
Represents a unique location in the bytecode. It comprises the Clazz and Member where it is contained, the offset therein and the corresponding line number in the source file (Location.UNKNOWN_LINE if it is unknown). Consider the following pseudo-bytecode example which contains code location comments:

 public class Test
 {
     // class "Test", member "field", line 3, offset 0
     public String field;

     public String toString()
     {
         // class "Test", member "toString", line 6, offset 0
         aload_0
         // class "Test", member "toString", line 6, offset 1
         getfield #1 &lt;Test.field : Ljava/lang/String;&gt;
         // class "Test", member "toString", line 6, offset 4
         areturn
     }
 }

 
  • Inside methods: Like each location, instructions inside methods have a line number. But as there may be several expressions on the same line, to correctly identify each instruction we also need their bytecode offset. E.g. the getfield instruction inside toString() has the offset 1.
  • Fields: In this case Test#field. A field location has a line number (3 in this example) but no offset, as this concept is only applicable to methods.
  • 字段详细资料

    • clazz

      public final Clazz clazz
    • member

      public final Member member
    • offset

      public final int offset
    • signature

      public final Signature signature
  • 构造器详细资料

    • CodeLocation

      public CodeLocation(Clazz clazz, Member member, int offset)
      Create a code location with an unknown (Location.UNKNOWN_LINE) line number.
    • CodeLocation

      public CodeLocation(Clazz clazz, Member member, int offset, int line)
  • 方法详细资料

    • getExternalClassName

      public String getExternalClassName()
    • getMemberName

      public String getMemberName()
    • getName

      public String getName()
      从类复制的说明: Location
      Returns the name of the location, e.g., the signature of a CodeLocation, or the filename of a FileLocation
      指定者:
      getName 在类中 Location
    • toString

      public String toString()
      覆盖:
      toString 在类中 Object
    • equals

      public boolean equals(Object o)
      覆盖:
      equals 在类中 Object
    • hashCode

      public int hashCode()
      覆盖:
      hashCode 在类中 Object
    • compareTo

      public int compareTo(Location o)