Objet d'analyse Target

L'objet d'analyse Target représente une spécification des classes et des méthodes auxquelles le composant d'analyse est appliqué.

L'objet Target est facultatif. Si aucun objet Target n'est indiqué, le composant d'analyse s'applique à toutes les classes traitées par le moteur d'instrumentation.

L'objet Target permet de créer des règles de filtrage afin d'inclure ou d'exclure des méthodes de l'instrumentation en fonction des masques que respecte le nom, le package et la classe de la méthode, ainsi que sa signature. Les masques peuvent comporter des caractères génériques, "*" correspondant à zéro ou plusieurs caractères.

Si les masques génériques d'un objet Target correspondent au package, à la classe, au nom et à la signature de la méthode, la propriété type détermine si cette méthode est instrumentée (include) ou non (exclude). Si les masques ne correspondent pas au package, à la classe, au nom et à la signature d'une méthode, celle-ci est par défaut instrumentée.

L'objet Targetinclut les propriétés suivantes :
Propriété Description
type Obligatoire. La propriété type détermine si un composant d'analyse est ou non appliqué à une méthode cible. Entrez include pour appliquer le composant d'analyse aux classes et méthodes correspondant aux masques génériques, ou exclude pour les exclure.
package Facultatif. Indiquez un masque générique à comparer avec la partie du package des noms de classes. Par exemple : java.util* correspondra à chaque classe dans le package java.util et ses sous-packages. Sans indication particulière, la valeur par défaut est *.
className Facultatif. Indiquez un masque générique à comparer avec les noms de classes. Sans indication particulière, la valeur par défaut est *.
method Facultatif. Indiquez un masque générique à comparer avec les noms de méthodes. Sans indication particulière, la valeur par défaut est *.
signature Facultatif. Indiquez un masque générique à comparer avec une signature de méthode, à savoir la chaîne représentant les arguments et le type de retour de la méthode. Il s'agit du format interne Java pour les signatures de méthodes. Par exemple : (Ljava/lang/Object;)D est la signature d'une méthode qui prend un objet comme paramètre et renvoie un double. Le masque générique peut servir à distinguer plusieurs méthodes surchargées. Sans indication particulière, la valeur par défaut est *.

Remarques :

  • Un composant d'analyse peut comporter plusieurs objets Target contenant une série de règles de ciblage. Pour cibler uniquement les méthodes indiquées, ajoutez un objet Target final spécifiant package=* className=* method=* signature=* type=exclude après l'objet Target pour les méthodes concernées.
  • Les noms de packages et de classes indiqués dans un objet Target sont également comparés à ceux de toutes les interfaces implémentées par une classe. Par exemple, java.util.HashMap implémente l'interface java.util.Map. Si une composant d'analyse cible le package java.util, le nom de classe Map et le nom de méthode size, il sera appliqué à java.util.HashMap.size() et à la méthode size de toute classe implémentant l'interface Map.
  • La concordance de masques ne prend pas en compte les relations d'héritage : si la classe Derived étend la classe Base et si le composant d'analyse cible Base.run(), celui-ci ne s'appliquera pas automatiquement à Derived.run().
  • Si le masque de package dans un objet Target se limite à un point ("."), il représente la package Java global sans nom. Vous pouvez ainsi cibler des classes dans ce package. Par exemple :
    <target type="include" package="." class="SomeClass" method="*" />
    <target type="exclude" package="*" class="*" method="*" />
    Avec ces deux règles de ciblage, le composant d'analyse cible la classe SomeClass dans le package global tout en excluant le reste des classes. Selon ces règles, une classe nommée SomeClass et figurant dans un autre package est exclue.
  • Les composants d'analyse sites d'appels comparent des masques et des règles de ciblage au package, à la classe, au nom et à la signature d'une méthode appelée. La concordance est effectuée par rapport à la méthode appelée et connue au moment de la compilation, à savoir les noms de classe et de méthode connus de façons statistique et non les méthodes réelles qui seront appelées en raison des fonctions d'héritage et virtuelles. Si l'appel est réalisé via une interférence d'interface, le nom de celle-ci doit correspondre.
Exemple
<target
  type="include"
  package="com.example"
  className="*Proxy"
  method="Get*"
/>

Figurant dans
Objet d'analyse

Rubrique parent : Référence Probekit

Copyright IBM Corporation et autres 2000, 2004.