探针目标规范

目标规范指示应应用探针的类和方法。

注: 除了将目标规范定义为探针的一部分之外,还可以在从“概要分析”对话框启动概要分析时设置过滤器。有关使用这两种方法的技巧,请阅读探针目标和过滤器

目标规范是可选的。当未指定目标时,将把探针应用于由检测引擎处理的所有类。

目标规范允许您创建过滤规则,以便根据与包名、类名、方法名以及方法特征符相匹配的模式来确定检测操作是包括还是排除方法。这些模式可以包含通配符,其中“*”代表零个或多个字符。

如果规则的通配符模式与方法的包名、类名、方法名和方法特征符相匹配,则 Target Type 属性将确定是检测(include)还是不检测(exclude)该方法。如果这些模式与方法的包名、类名、方法名和方法特征符不匹配,则检查下一条规则。在规则列表的末尾,有一条隐式的“全部包括”规则,以便检测尚未显式排除的任何方法。

目标包含下列属性:
属性 描述
Target Type 此属性是必需的。Target Type 属性确定是否已将探针应用于目标方法。选择 Include 以将探针应用于与通配符模式相匹配的类和方法,或者选择 Exclude 以排除与这些模式相匹配的类和方法。
Package name pattern 可选。指定通配符模式以便与类名的包部分相匹配。例如:java.util* 将与 java.util 包及其子包中的每个类相匹配。如果未指定,则缺省值为 *
Class name pattern 可选。指定通配符模式以与类名相匹配。如果未指定,则缺省值为 *
Method name pattern 可选。指定通配符模式以与方法名相匹配。如果未指定,则缺省值为 *
Method signature pattern 可选。指定通配符模式以便与方法的特征符相匹配。(特征符是用来表示方法的自变量和返回类型的字符串。)使用方法特征符的 Java™ 内部格式。例如:(Ljava/lang/Object;)D 是一个方法特征符,它将 Object 作为参数并返回双精度浮点数。可以使用该通配符模式来区分重载的方法。如果未指定,则缺省值为 *

注意:

  • 一个探针可以具有多个包含连续的确定目标规则的目标规范。要将一个探针只应用于某些方法,则首先应指定您想要包括的方法,然后添加最终目标规范 :package=* className=* method=* signature=* type=exclude
  • 还将针对类实现的任何接口的包名和类名来检查您指定的包名和类名。例如,java.util.HashMap 实现 java.util.Map 接口。如果探针以 java.util 包、类名 Map 和方法名 size 作为目标,则将把探针应用于 java.util.HashMap.size(),以及所有其它实现 Map 接口的类的 size 方法。
  • 模式匹配不会考虑继承关系。如果 Derived 类扩展 Base 类,并且探针以 Base.run() 作为目标,则该探针不会自动应用于 Derived.run()
  • 如果目标规范中的包模式是单个句点字符(“.”),则它表示未命名的全局 Java 包。这使您能够显式地以全局包中的类为目标。
  • 调用位置探针将目标模式和规则与被调用方法的包名、类名、方法名和方法特征符相匹配。匹配操作是针对编译时已知的被调用的方法来完成的;即,针对静态已知的类名和方法名,而不是因继承和虚函数而将调用的实际方法。如果调用是通过接口引用完成的,则该接口名称必须匹配。
示例:

要指定探针的目标规则的列表,在“探针”页面的树窗格中选择目标,并单击编辑窗格中的添加,然后单击编辑

类型为“包括”和“排除”的目标条目;“排除”目标条目使用星号通配符来排除每个对象;而“包括”条目指定要作为目标的精确方法。

此示例只将探针应用于下列方法:这些方法的名称要以 Get 开头,并且该方法所在的类的名称要以 Proxy 结尾且该类位于 com.example 包中。将不会检测所有其它类和方法。

反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.