uniquetruth / remote-debug-agent

a useful java agent for integration testing
Apache License 2.0
71 stars 25 forks source link

关于如果屏蔽调用链中的get ,set 方法 #4

Closed yang-yao closed 2 years ago

yang-yao commented 2 years ago

你好,目前测试来看调用链数据很大,想屏蔽掉其中的get,set方法 ,目前有2个方案 1,通过excludes指定包来排除,但是这些方法分布在项目中到处都有,可能需要写很多,比如, excludes=/domain//:/entity//:/model//:/bean//:/dto//:/do//:/vo//:/bo//:/Param.*:/DTO.:/Dt0.:/DO.:/VO.:*/BO.* 这样怎么看都显得不太灵活, 2,把有@data注解的类全部排除,也比较麻烦 请问在这里有些什么好的方案吗

uniquetruth commented 2 years ago

includes和excludes是支持正则表达式的,你的pojo类的存放没有统一的包命名吗?如果有的话应该是可以用一个或几个正则囊括的。
如果实在不行,只能拿到调用链数据后,你自己想办法删除get、set方法了,json字符串的操作应该是比较容易的。

你提到了@Data注解,你们是使用了lombok来自动生成源代码了吧?这给我提了个醒,我会升级一个版本,以支持在excludes参数中使用注解来指定范围,所以你也可以稍微等几天再试试看

uniquetruth commented 2 years ago

看了一下lombok的api,发现data注解的生命周期是source,所以探针是读不到它的,我之前的想法行不通。
你可以随便给我一个有data注解的类编译出来的class吗?我可以研究看看它自动生成的方法有什么特征。

yang-yao commented 2 years ago

pojo类的存放没有统一的包命名,分散在项目里,有的在domain目录下面 有的在entity,有的在dto,vo,bo 甚至param

uniquetruth commented 2 years ago

这样有一些信息我看不到。你可以这样,javap -c -v -p 有data注解的类.class >a.log,然后将a.log的内容贴上来。多行代码请用```(3个`)包围起来↓。
``` a.log的内容 ```

yang-yao commented 2 years ago
Classfile /Users/yy/Downloads/MethodInfo.class
  Last modified 2022-8-4; size 4417 bytes
  MD5 checksum c3405de7f62a8c57d5a9cdde7b8b763e
  Compiled from "MethodInfo.java"
public class org.jacoco.core.common.domain.MethodInfo implements java.io.Serializable
  minor version: 0
  major version: 52
  flags: ACC_PUBLIC, ACC_SUPER
Constant pool:
    #1 = Class              #108          // java/lang/StringBuilder
    #2 = Methodref          #1.#109       // java/lang/StringBuilder."<init>":()V
    #3 = Methodref          #110.#111     // org/jacoco/core/common/domain/ClassInfo.getAsmClassName:()Ljava/lang/String;
    #4 = Methodref          #1.#112       // java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
    #5 = String             #113          // .
    #6 = Methodref          #16.#114      // org/jacoco/core/common/domain/MethodInfo.getMethodName:()Ljava/lang/String;
    #7 = Methodref          #16.#115      // org/jacoco/core/common/domain/MethodInfo.getParams:()Ljava/lang/String;
    #8 = Methodref          #1.#116       // java/lang/StringBuilder.toString:()Ljava/lang/String;
    #9 = Class              #117          // org/jacoco/core/common/domain/MethodInfo$MethodInfoBuilder
   #10 = Methodref          #9.#109       // org/jacoco/core/common/domain/MethodInfo$MethodInfoBuilder."<init>":()V
   #11 = Fieldref           #16.#118      // org/jacoco/core/common/domain/MethodInfo.methodName:Ljava/lang/String;
   #12 = Fieldref           #16.#119      // org/jacoco/core/common/domain/MethodInfo.md5:Ljava/lang/String;
   #13 = Fieldref           #16.#120      // org/jacoco/core/common/domain/MethodInfo.diffType:Lorg/jacoco/core/common/enums/DiffResultTypeEnum;
   #14 = Fieldref           #16.#121      // org/jacoco/core/common/domain/MethodInfo.methodUri:Ljava/lang/String;
   #15 = Fieldref           #16.#122      // org/jacoco/core/common/domain/MethodInfo.params:Ljava/lang/String;
   #16 = Class              #123          // org/jacoco/core/common/domain/MethodInfo
   #17 = Methodref          #16.#124      // org/jacoco/core/common/domain/MethodInfo.canEqual:(Ljava/lang/Object;)Z
   #18 = Methodref          #31.#125      // java/lang/Object.equals:(Ljava/lang/Object;)Z
   #19 = Methodref          #16.#126      // org/jacoco/core/common/domain/MethodInfo.getMd5:()Ljava/lang/String;
   #20 = Methodref          #16.#127      // org/jacoco/core/common/domain/MethodInfo.getDiffType:()Lorg/jacoco/core/common/enums/DiffResultTypeEnum;
   #21 = Methodref          #16.#128      // org/jacoco/core/common/domain/MethodInfo.getMethodUri:()Ljava/lang/String;
   #22 = Methodref          #31.#129      // java/lang/Object.hashCode:()I
   #23 = String             #130          // MethodInfo(methodName=
   #24 = String             #131          // , md5=
   #25 = String             #132          // , diffType=
   #26 = Methodref          #1.#133       // java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
   #27 = String             #134          // , methodUri=
   #28 = String             #135          // , params=
   #29 = String             #136          // )
   #30 = Methodref          #31.#109      // java/lang/Object."<init>":()V
   #31 = Class              #137          // java/lang/Object
   #32 = Class              #138          // java/io/Serializable
   #33 = Utf8               MethodInfoBuilder
   #34 = Utf8               InnerClasses
   #35 = Utf8               serialVersionUID
   #36 = Utf8               J
   #37 = Utf8               ConstantValue
   #38 = Long               1l
   #40 = Utf8               methodName
   #41 = Utf8               Ljava/lang/String;
   #42 = Utf8               md5
   #43 = Utf8               diffType
   #44 = Utf8               Lorg/jacoco/core/common/enums/DiffResultTypeEnum;
   #45 = Utf8               methodUri
   #46 = Utf8               params
   #47 = Utf8               getMethodUri
   #48 = Utf8               (Lorg/jacoco/core/common/domain/ClassInfo;)Ljava/lang/String;
   #49 = Utf8               Code
   #50 = Utf8               LineNumberTable
   #51 = Utf8               LocalVariableTable
   #52 = Utf8               this
   #53 = Utf8               Lorg/jacoco/core/common/domain/MethodInfo;
   #54 = Utf8               classInfo
   #55 = Utf8               Lorg/jacoco/core/common/domain/ClassInfo;
   #56 = Utf8               (Ljava/lang/String;)Ljava/lang/String;
   #57 = Utf8               asmClassNmae
   #58 = Utf8               builder
   #59 = Utf8               ()Lorg/jacoco/core/common/domain/MethodInfo$MethodInfoBuilder;
   #60 = Utf8               getMethodName
   #61 = Utf8               ()Ljava/lang/String;
   #62 = Utf8               getMd5
   #63 = Utf8               getDiffType
   #64 = Utf8               ()Lorg/jacoco/core/common/enums/DiffResultTypeEnum;
   #65 = Utf8               getParams
   #66 = Utf8               setMethodName
   #67 = Utf8               (Ljava/lang/String;)V
   #68 = Utf8               setMd5
   #69 = Utf8               setDiffType
   #70 = Utf8               (Lorg/jacoco/core/common/enums/DiffResultTypeEnum;)V
   #71 = Utf8               setMethodUri
   #72 = Utf8               setParams
   #73 = Utf8               equals
   #74 = Utf8               (Ljava/lang/Object;)Z
   #75 = Utf8               o
   #76 = Utf8               Ljava/lang/Object;
   #77 = Utf8               other
   #78 = Utf8               this$methodName
   #79 = Utf8               other$methodName
   #80 = Utf8               this$md5
   #81 = Utf8               other$md5
   #82 = Utf8               this$diffType
   #83 = Utf8               other$diffType
   #84 = Utf8               this$methodUri
   #85 = Utf8               other$methodUri
   #86 = Utf8               this$params
   #87 = Utf8               other$params
   #88 = Utf8               StackMapTable
   #89 = Class              #123          // org/jacoco/core/common/domain/MethodInfo
   #90 = Class              #137          // java/lang/Object
   #91 = Utf8               canEqual
   #92 = Utf8               hashCode
   #93 = Utf8               ()I
   #94 = Utf8               PRIME
   #95 = Utf8               I
   #96 = Utf8               result
   #97 = Utf8               $methodName
   #98 = Utf8               $md5
   #99 = Utf8               $diffType
  #100 = Utf8               $methodUri
  #101 = Utf8               $params
  #102 = Utf8               toString
  #103 = Utf8               <init>
  #104 = Utf8               ()V
  #105 = Utf8               (Ljava/lang/String;Ljava/lang/String;Lorg/jacoco/core/common/enums/DiffResultTypeEnum;Ljava/lang/String;Ljava/lang/String;)V
  #106 = Utf8               SourceFile
  #107 = Utf8               MethodInfo.java
  #108 = Utf8               java/lang/StringBuilder
  #109 = NameAndType        #103:#104     // "<init>":()V
  #110 = Class              #139          // org/jacoco/core/common/domain/ClassInfo
  #111 = NameAndType        #140:#61      // getAsmClassName:()Ljava/lang/String;
  #112 = NameAndType        #141:#142     // append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
  #113 = Utf8               .
  #114 = NameAndType        #60:#61       // getMethodName:()Ljava/lang/String;
  #115 = NameAndType        #65:#61       // getParams:()Ljava/lang/String;
  #116 = NameAndType        #102:#61      // toString:()Ljava/lang/String;
  #117 = Utf8               org/jacoco/core/common/domain/MethodInfo$MethodInfoBuilder
  #118 = NameAndType        #40:#41       // methodName:Ljava/lang/String;
  #119 = NameAndType        #42:#41       // md5:Ljava/lang/String;
  #120 = NameAndType        #43:#44       // diffType:Lorg/jacoco/core/common/enums/DiffResultTypeEnum;
  #121 = NameAndType        #45:#41       // methodUri:Ljava/lang/String;
  #122 = NameAndType        #46:#41       // params:Ljava/lang/String;
  #123 = Utf8               org/jacoco/core/common/domain/MethodInfo
  #124 = NameAndType        #91:#74       // canEqual:(Ljava/lang/Object;)Z
  #125 = NameAndType        #73:#74       // equals:(Ljava/lang/Object;)Z
  #126 = NameAndType        #62:#61       // getMd5:()Ljava/lang/String;
  #127 = NameAndType        #63:#64       // getDiffType:()Lorg/jacoco/core/common/enums/DiffResultTypeEnum;
  #128 = NameAndType        #47:#61       // getMethodUri:()Ljava/lang/String;
  #129 = NameAndType        #92:#93       // hashCode:()I
  #130 = Utf8               MethodInfo(methodName=
  #131 = Utf8               , md5=
  #132 = Utf8               , diffType=
  #133 = NameAndType        #141:#143     // append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
  #134 = Utf8               , methodUri=
  #135 = Utf8               , params=
  #136 = Utf8               )
  #137 = Utf8               java/lang/Object
  #138 = Utf8               java/io/Serializable
  #139 = Utf8               org/jacoco/core/common/domain/ClassInfo
  #140 = Utf8               getAsmClassName
  #141 = Utf8               append
  #142 = Utf8               (Ljava/lang/String;)Ljava/lang/StringBuilder;
  #143 = Utf8               (Ljava/lang/Object;)Ljava/lang/StringBuilder;
{
  private static final long serialVersionUID;
    descriptor: J
    flags: ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: long 1l

  private java.lang.String methodName;
    descriptor: Ljava/lang/String;
    flags: ACC_PRIVATE

  private java.lang.String md5;
    descriptor: Ljava/lang/String;
    flags: ACC_PRIVATE

  private org.jacoco.core.common.enums.DiffResultTypeEnum diffType;
    descriptor: Lorg/jacoco/core/common/enums/DiffResultTypeEnum;
    flags: ACC_PRIVATE

  private java.lang.String methodUri;
    descriptor: Ljava/lang/String;
    flags: ACC_PRIVATE

  private java.lang.String params;
    descriptor: Ljava/lang/String;
    flags: ACC_PRIVATE

  public java.lang.String getMethodUri(org.jacoco.core.common.domain.ClassInfo);
    descriptor: (Lorg/jacoco/core/common/domain/ClassInfo;)Ljava/lang/String;
    flags: ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
         0: new           #1                  // class java/lang/StringBuilder
         3: dup
         4: invokespecial #2                  // Method java/lang/StringBuilder."<init>":()V
         7: aload_1
         8: invokevirtual #3                  // Method org/jacoco/core/common/domain/ClassInfo.getAsmClassName:()Ljava/lang/String;
        11: invokevirtual #4                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        14: ldc           #5                  // String .
        16: invokevirtual #4                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        19: aload_0
        20: invokevirtual #6                  // Method getMethodName:()Ljava/lang/String;
        23: invokevirtual #4                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        26: aload_0
        27: invokevirtual #7                  // Method getParams:()Ljava/lang/String;
        30: invokevirtual #4                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        33: invokevirtual #8                  // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
        36: areturn
      LineNumberTable:
        line 41: 0
        line 42: 27
        line 41: 36
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0      37     0  this   Lorg/jacoco/core/common/domain/MethodInfo;
            0      37     1 classInfo   Lorg/jacoco/core/common/domain/ClassInfo;

  public java.lang.String getMethodUri(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
         0: new           #1                  // class java/lang/StringBuilder
         3: dup
         4: invokespecial #2                  // Method java/lang/StringBuilder."<init>":()V
         7: aload_1
         8: invokevirtual #4                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        11: ldc           #5                  // String .
        13: invokevirtual #4                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        16: aload_0
        17: invokevirtual #6                  // Method getMethodName:()Ljava/lang/String;
        20: invokevirtual #4                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        23: aload_0
        24: invokevirtual #7                  // Method getParams:()Ljava/lang/String;
        27: invokevirtual #4                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        30: invokevirtual #8                  // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
        33: areturn
      LineNumberTable:
        line 46: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0      34     0  this   Lorg/jacoco/core/common/domain/MethodInfo;
            0      34     1 asmClassNmae   Ljava/lang/String;

  public static org.jacoco.core.common.domain.MethodInfo$MethodInfoBuilder builder();
    descriptor: ()Lorg/jacoco/core/common/domain/MethodInfo$MethodInfoBuilder;
    flags: ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: new           #9                  // class org/jacoco/core/common/domain/MethodInfo$MethodInfoBuilder
         3: dup
         4: invokespecial #10                 // Method org/jacoco/core/common/domain/MethodInfo$MethodInfoBuilder."<init>":()V
         7: areturn
      LineNumberTable:
        line 28: 0

  public java.lang.String getMethodName();
    descriptor: ()Ljava/lang/String;
    flags: ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
         0: aload_0
         1: getfield      #11                 // Field methodName:Ljava/lang/String;
         4: areturn
      LineNumberTable:
        line 34: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0       5     0  this   Lorg/jacoco/core/common/domain/MethodInfo;

  public java.lang.String getMd5();
    descriptor: ()Ljava/lang/String;
    flags: ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
         0: aload_0
         1: getfield      #12                 // Field md5:Ljava/lang/String;
         4: areturn
      LineNumberTable:
        line 35: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0       5     0  this   Lorg/jacoco/core/common/domain/MethodInfo;

  public org.jacoco.core.common.enums.DiffResultTypeEnum getDiffType();
    descriptor: ()Lorg/jacoco/core/common/enums/DiffResultTypeEnum;
    flags: ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
         0: aload_0
         1: getfield      #13                 // Field diffType:Lorg/jacoco/core/common/enums/DiffResultTypeEnum;
         4: areturn
      LineNumberTable:
        line 36: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0       5     0  this   Lorg/jacoco/core/common/domain/MethodInfo;

  public java.lang.String getMethodUri();
    descriptor: ()Ljava/lang/String;
    flags: ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
         0: aload_0
         1: getfield      #14                 // Field methodUri:Ljava/lang/String;
         4: areturn
      LineNumberTable:
        line 37: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0       5     0  this   Lorg/jacoco/core/common/domain/MethodInfo;

  public java.lang.String getParams();
    descriptor: ()Ljava/lang/String;
    flags: ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
         0: aload_0
         1: getfield      #15                 // Field params:Ljava/lang/String;
         4: areturn
      LineNumberTable:
        line 38: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0       5     0  this   Lorg/jacoco/core/common/domain/MethodInfo;

  public void setMethodName(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
         0: aload_0
         1: aload_1
         2: putfield      #11                 // Field methodName:Ljava/lang/String;
         5: return
      LineNumberTable:
        line 27: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0       6     0  this   Lorg/jacoco/core/common/domain/MethodInfo;
            0       6     1 methodName   Ljava/lang/String;

  public void setMd5(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
         0: aload_0
         1: aload_1
         2: putfield      #12                 // Field md5:Ljava/lang/String;
         5: return
      LineNumberTable:
        line 27: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0       6     0  this   Lorg/jacoco/core/common/domain/MethodInfo;
            0       6     1   md5   Ljava/lang/String;

  public void setDiffType(org.jacoco.core.common.enums.DiffResultTypeEnum);
    descriptor: (Lorg/jacoco/core/common/enums/DiffResultTypeEnum;)V
    flags: ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
         0: aload_0
         1: aload_1
         2: putfield      #13                 // Field diffType:Lorg/jacoco/core/common/enums/DiffResultTypeEnum;
         5: return
      LineNumberTable:
        line 27: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0       6     0  this   Lorg/jacoco/core/common/domain/MethodInfo;
            0       6     1 diffType   Lorg/jacoco/core/common/enums/DiffResultTypeEnum;

  public void setMethodUri(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
         0: aload_0
         1: aload_1
         2: putfield      #14                 // Field methodUri:Ljava/lang/String;
         5: return
      LineNumberTable:
        line 27: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0       6     0  this   Lorg/jacoco/core/common/domain/MethodInfo;
            0       6     1 methodUri   Ljava/lang/String;

  public void setParams(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
         0: aload_0
         1: aload_1
         2: putfield      #15                 // Field params:Ljava/lang/String;
         5: return
      LineNumberTable:
        line 27: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0       6     0  this   Lorg/jacoco/core/common/domain/MethodInfo;
            0       6     1 params   Ljava/lang/String;

  public boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: ACC_PUBLIC
    Code:
      stack=2, locals=13, args_size=2
         0: aload_1
         1: aload_0
         2: if_acmpne     7
         5: iconst_1
         6: ireturn
         7: aload_1
         8: instanceof    #16                 // class org/jacoco/core/common/domain/MethodInfo
        11: ifne          16
        14: iconst_0
        15: ireturn
        16: aload_1
        17: checkcast     #16                 // class org/jacoco/core/common/domain/MethodInfo
        20: astore_2
        21: aload_2
        22: aload_0
        23: invokevirtual #17                 // Method canEqual:(Ljava/lang/Object;)Z
        26: ifne          31
        29: iconst_0
        30: ireturn
        31: aload_0
        32: invokevirtual #6                  // Method getMethodName:()Ljava/lang/String;
        35: astore_3
        36: aload_2
        37: invokevirtual #6                  // Method getMethodName:()Ljava/lang/String;
        40: astore        4
        42: aload_3
        43: ifnonnull     54
        46: aload         4
        48: ifnull        65
        51: goto          63
        54: aload_3
        55: aload         4
        57: invokevirtual #18                 // Method java/lang/Object.equals:(Ljava/lang/Object;)Z
        60: ifne          65
        63: iconst_0
        64: ireturn
        65: aload_0
        66: invokevirtual #19                 // Method getMd5:()Ljava/lang/String;
        69: astore        5
        71: aload_2
        72: invokevirtual #19                 // Method getMd5:()Ljava/lang/String;
        75: astore        6
        77: aload         5
        79: ifnonnull     90
        82: aload         6
        84: ifnull        102
        87: goto          100
        90: aload         5
        92: aload         6
        94: invokevirtual #18                 // Method java/lang/Object.equals:(Ljava/lang/Object;)Z
        97: ifne          102
       100: iconst_0
       101: ireturn
       102: aload_0
       103: invokevirtual #20                 // Method getDiffType:()Lorg/jacoco/core/common/enums/DiffResultTypeEnum;
       106: astore        7
       108: aload_2
       109: invokevirtual #20                 // Method getDiffType:()Lorg/jacoco/core/common/enums/DiffResultTypeEnum;
       112: astore        8
       114: aload         7
       116: ifnonnull     127
       119: aload         8
       121: ifnull        139
       124: goto          137
       127: aload         7
       129: aload         8
       131: invokevirtual #18                 // Method java/lang/Object.equals:(Ljava/lang/Object;)Z
       134: ifne          139
       137: iconst_0
       138: ireturn
       139: aload_0
       140: invokevirtual #21                 // Method getMethodUri:()Ljava/lang/String;
       143: astore        9
       145: aload_2
       146: invokevirtual #21                 // Method getMethodUri:()Ljava/lang/String;
       149: astore        10
       151: aload         9
       153: ifnonnull     164
       156: aload         10
       158: ifnull        176
       161: goto          174
       164: aload         9
       166: aload         10
       168: invokevirtual #18                 // Method java/lang/Object.equals:(Ljava/lang/Object;)Z
       171: ifne          176
       174: iconst_0
       175: ireturn
       176: aload_0
       177: invokevirtual #7                  // Method getParams:()Ljava/lang/String;
       180: astore        11
       182: aload_2
       183: invokevirtual #7                  // Method getParams:()Ljava/lang/String;
       186: astore        12
       188: aload         11
       190: ifnonnull     201
       193: aload         12
       195: ifnull        213
       198: goto          211
       201: aload         11
       203: aload         12
       205: invokevirtual #18                 // Method java/lang/Object.equals:(Ljava/lang/Object;)Z
       208: ifne          213
       211: iconst_0
       212: ireturn
       213: iconst_1
       214: ireturn
      LineNumberTable:
        line 27: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0     215     0  this   Lorg/jacoco/core/common/domain/MethodInfo;
            0     215     1     o   Ljava/lang/Object;
           21     194     2 other   Lorg/jacoco/core/common/domain/MethodInfo;
           36     179     3 this$methodName   Ljava/lang/Object;
           42     173     4 other$methodName   Ljava/lang/Object;
           71     144     5 this$md5   Ljava/lang/Object;
           77     138     6 other$md5   Ljava/lang/Object;
          108     107     7 this$diffType   Ljava/lang/Object;
          114     101     8 other$diffType   Ljava/lang/Object;
          145      70     9 this$methodUri   Ljava/lang/Object;
          151      64    10 other$methodUri   Ljava/lang/Object;
          182      33    11 this$params   Ljava/lang/Object;
          188      27    12 other$params   Ljava/lang/Object;
      StackMapTable: number_of_entries = 18
        frame_type = 7 /* same */
        frame_type = 8 /* same */
        frame_type = 252 /* append */
          offset_delta = 14
          locals = [ class org/jacoco/core/common/domain/MethodInfo ]
        frame_type = 253 /* append */
          offset_delta = 22
          locals = [ class java/lang/Object, class java/lang/Object ]
        frame_type = 8 /* same */
        frame_type = 1 /* same */
        frame_type = 253 /* append */
          offset_delta = 24
          locals = [ class java/lang/Object, class java/lang/Object ]
        frame_type = 9 /* same */
        frame_type = 1 /* same */
        frame_type = 253 /* append */
          offset_delta = 24
          locals = [ class java/lang/Object, class java/lang/Object ]
        frame_type = 9 /* same */
        frame_type = 1 /* same */
        frame_type = 253 /* append */
          offset_delta = 24
          locals = [ class java/lang/Object, class java/lang/Object ]
        frame_type = 9 /* same */
        frame_type = 1 /* same */
        frame_type = 253 /* append */
          offset_delta = 24
          locals = [ class java/lang/Object, class java/lang/Object ]
        frame_type = 9 /* same */
        frame_type = 1 /* same */

  protected boolean canEqual(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
         0: aload_1
         1: instanceof    #16                 // class org/jacoco/core/common/domain/MethodInfo
         4: ireturn
      LineNumberTable:
        line 27: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0       5     0  this   Lorg/jacoco/core/common/domain/MethodInfo;
            0       5     1 other   Ljava/lang/Object;

  public int hashCode();
    descriptor: ()I
    flags: ACC_PUBLIC
    Code:
      stack=2, locals=8, args_size=1
         0: bipush        59
         2: istore_1
         3: iconst_1
         4: istore_2
         5: aload_0
         6: invokevirtual #6                  // Method getMethodName:()Ljava/lang/String;
         9: astore_3
        10: iload_2
        11: bipush        59
        13: imul
        14: aload_3
        15: ifnonnull     23
        18: bipush        43
        20: goto          27
        23: aload_3
        24: invokevirtual #22                 // Method java/lang/Object.hashCode:()I
        27: iadd
        28: istore_2
        29: aload_0
        30: invokevirtual #19                 // Method getMd5:()Ljava/lang/String;
        33: astore        4
        35: iload_2
        36: bipush        59
        38: imul
        39: aload         4
        41: ifnonnull     49
        44: bipush        43
        46: goto          54
        49: aload         4
        51: invokevirtual #22                 // Method java/lang/Object.hashCode:()I
        54: iadd
        55: istore_2
        56: aload_0
        57: invokevirtual #20                 // Method getDiffType:()Lorg/jacoco/core/common/enums/DiffResultTypeEnum;
        60: astore        5
        62: iload_2
        63: bipush        59
        65: imul
        66: aload         5
        68: ifnonnull     76
        71: bipush        43
        73: goto          81
        76: aload         5
        78: invokevirtual #22                 // Method java/lang/Object.hashCode:()I
        81: iadd
        82: istore_2
        83: aload_0
        84: invokevirtual #21                 // Method getMethodUri:()Ljava/lang/String;
        87: astore        6
        89: iload_2
        90: bipush        59
        92: imul
        93: aload         6
        95: ifnonnull     103
        98: bipush        43
       100: goto          108
       103: aload         6
       105: invokevirtual #22                 // Method java/lang/Object.hashCode:()I
       108: iadd
       109: istore_2
       110: aload_0
       111: invokevirtual #7                  // Method getParams:()Ljava/lang/String;
       114: astore        7
       116: iload_2
       117: bipush        59
       119: imul
       120: aload         7
       122: ifnonnull     130
       125: bipush        43
       127: goto          135
       130: aload         7
       132: invokevirtual #22                 // Method java/lang/Object.hashCode:()I
       135: iadd
       136: istore_2
       137: iload_2
       138: ireturn
      LineNumberTable:
        line 27: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0     139     0  this   Lorg/jacoco/core/common/domain/MethodInfo;
            3     136     1 PRIME   I
            5     134     2 result   I
           10     129     3 $methodName   Ljava/lang/Object;
           35     104     4  $md5   Ljava/lang/Object;
           62      77     5 $diffType   Ljava/lang/Object;
           89      50     6 $methodUri   Ljava/lang/Object;
          116      23     7 $params   Ljava/lang/Object;
      StackMapTable: number_of_entries = 10
        frame_type = 255 /* full_frame */
          offset_delta = 23
          locals = [ class org/jacoco/core/common/domain/MethodInfo, int, int, class java/lang/Object ]
          stack = [ int ]
        frame_type = 255 /* full_frame */
          offset_delta = 3
          locals = [ class org/jacoco/core/common/domain/MethodInfo, int, int, class java/lang/Object ]
          stack = [ int, int ]
        frame_type = 255 /* full_frame */
          offset_delta = 21
          locals = [ class org/jacoco/core/common/domain/MethodInfo, int, int, class java/lang/Object, class java/lang/Object ]
          stack = [ int ]
        frame_type = 255 /* full_frame */
          offset_delta = 4
          locals = [ class org/jacoco/core/common/domain/MethodInfo, int, int, class java/lang/Object, class java/lang/Object ]
          stack = [ int, int ]
        frame_type = 255 /* full_frame */
          offset_delta = 21
          locals = [ class org/jacoco/core/common/domain/MethodInfo, int, int, class java/lang/Object, class java/lang/Object, class java/lang/Object ]
          stack = [ int ]
        frame_type = 255 /* full_frame */
          offset_delta = 4
          locals = [ class org/jacoco/core/common/domain/MethodInfo, int, int, class java/lang/Object, class java/lang/Object, class java/lang/Object ]
          stack = [ int, int ]
        frame_type = 255 /* full_frame */
          offset_delta = 21
          locals = [ class org/jacoco/core/common/domain/MethodInfo, int, int, class java/lang/Object, class java/lang/Object, class java/lang/Object, class java/lang/Object ]
          stack = [ int ]
        frame_type = 255 /* full_frame */
          offset_delta = 4
          locals = [ class org/jacoco/core/common/domain/MethodInfo, int, int, class java/lang/Object, class java/lang/Object, class java/lang/Object, class java/lang/Object ]
          stack = [ int, int ]
        frame_type = 255 /* full_frame */
          offset_delta = 21
          locals = [ class org/jacoco/core/common/domain/MethodInfo, int, int, class java/lang/Object, class java/lang/Object, class java/lang/Object, class java/lang/Object, class java/lang/Object ]
          stack = [ int ]
        frame_type = 255 /* full_frame */
          offset_delta = 4
          locals = [ class org/jacoco/core/common/domain/MethodInfo, int, int, class java/lang/Object, class java/lang/Object, class java/lang/Object, class java/lang/Object, class java/lang/Object ]
          stack = [ int, int ]

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
         0: new           #1                  // class java/lang/StringBuilder
         3: dup
         4: invokespecial #2                  // Method java/lang/StringBuilder."<init>":()V
         7: ldc           #23                 // String MethodInfo(methodName=
         9: invokevirtual #4                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        12: aload_0
        13: invokevirtual #6                  // Method getMethodName:()Ljava/lang/String;
        16: invokevirtual #4                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        19: ldc           #24                 // String , md5=
        21: invokevirtual #4                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        24: aload_0
        25: invokevirtual #19                 // Method getMd5:()Ljava/lang/String;
        28: invokevirtual #4                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        31: ldc           #25                 // String , diffType=
        33: invokevirtual #4                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        36: aload_0
        37: invokevirtual #20                 // Method getDiffType:()Lorg/jacoco/core/common/enums/DiffResultTypeEnum;
        40: invokevirtual #26                 // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        43: ldc           #27                 // String , methodUri=
        45: invokevirtual #4                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        48: aload_0
        49: invokevirtual #21                 // Method getMethodUri:()Ljava/lang/String;
        52: invokevirtual #4                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        55: ldc           #28                 // String , params=
        57: invokevirtual #4                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        60: aload_0
        61: invokevirtual #7                  // Method getParams:()Ljava/lang/String;
        64: invokevirtual #4                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        67: ldc           #29                 // String )
        69: invokevirtual #4                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        72: invokevirtual #8                  // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
        75: areturn
      LineNumberTable:
        line 27: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0      76     0  this   Lorg/jacoco/core/common/domain/MethodInfo;

  public org.jacoco.core.common.domain.MethodInfo();
    descriptor: ()V
    flags: ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
         0: aload_0
         1: invokespecial #30                 // Method java/lang/Object."<init>":()V
         4: return
      LineNumberTable:
        line 29: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0       5     0  this   Lorg/jacoco/core/common/domain/MethodInfo;

  public org.jacoco.core.common.domain.MethodInfo(java.lang.String, java.lang.String, org.jacoco.core.common.enums.DiffResultTypeEnum, java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Lorg/jacoco/core/common/enums/DiffResultTypeEnum;Ljava/lang/String;Ljava/lang/String;)V
    flags: ACC_PUBLIC
    Code:
      stack=2, locals=6, args_size=6
         0: aload_0
         1: invokespecial #30                 // Method java/lang/Object."<init>":()V
         4: aload_0
         5: aload_1
         6: putfield      #11                 // Field methodName:Ljava/lang/String;
         9: aload_0
        10: aload_2
        11: putfield      #12                 // Field md5:Ljava/lang/String;
        14: aload_0
        15: aload_3
        16: putfield      #13                 // Field diffType:Lorg/jacoco/core/common/enums/DiffResultTypeEnum;
        19: aload_0
        20: aload         4
        22: putfield      #14                 // Field methodUri:Ljava/lang/String;
        25: aload_0
        26: aload         5
        28: putfield      #15                 // Field params:Ljava/lang/String;
        31: return
      LineNumberTable:
        line 30: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0      32     0  this   Lorg/jacoco/core/common/domain/MethodInfo;
            0      32     1 methodName   Ljava/lang/String;
            0      32     2   md5   Ljava/lang/String;
            0      32     3 diffType   Lorg/jacoco/core/common/enums/DiffResultTypeEnum;
            0      32     4 methodUri   Ljava/lang/String;
            0      32     5 params   Ljava/lang/String;
}
SourceFile: "MethodInfo.java"
InnerClasses:
     public static #33= #9 of #16; //MethodInfoBuilder=class org/jacoco/core/common/domain/MethodInfo$MethodInfoBuilder of class org/jacoco/core/common/domain/MethodInfo
uniquetruth commented 2 years ago

看了一下,确实没有很合适的特征值能用来筛选此类的,所以应该只能在拿到调用链数据后再处理了。
另外我以后可能还是会增加按注解指定目标的功能,届时有需要的人就可以自己写一个runtime注解来用了

uniquetruth commented 2 years ago

新增了功能,支持在excludes参数中使用注解来指定例外范围,236975f357b36d620cb10c6cfb1e2a84a1467fbb
例如你的pojo类使用了注解MyAnno,则可以用excludes=@MyAnnoexcludes=@com.foo.bar.MyAnno来排除探针对其的监控。
需要注意的是,注解的生命周期必须为CLASS或RUNTIME,否则工具无法读取到该注解

yang-yao commented 2 years ago

爆赞,又多了一个方便排除不关心的数据的利器!