Specifiche di destinazione probe

Le specifiche di destinazione indicano le classi e i metodi a cui applicare il probe.

La specifica della destinazione è facoltativa. Quando non si specifica alcuna destinazione, il probe verrà applicato a tutte le classi che sono state elaborate dal motore di strumentazione.

La specifica della destinazione consente di creare regole filtro per includere o escludere metodi dalla strumentazione sulla base di modelli che vengono confrontati con il nome di un pacchetto, di una classe e di un metodo e, infine, con la firma del metodo. I modelli possono contenere caratteri jolly, dove "*" corrisponde a zero o più caratteri.

Se i modelli con caratteri jolly di una destinazione corrispondono a un pacchetto, una classe, un nome oppure ad una firma del metodo, la proprietà type determina se il metodo viene dotato di probe (include) o meno (exclude). Se i modelli non corrispondono al pacchetto, alla classe, al nome e alla firma del metodo, per impostazione predefinita, il metodo viene dotato di probe.

La destinazione presenta le seguenti proprietà:
Proprietà Descrizione
type Obbligatoria. La proprietà type determina se un probe viene applicato o meno a un metodo di destinazione. Specificare include per applicare il probe a classi e metodi che corrispondono ai modelli con caratteri jolly exclude per escluderli.
package Facoltativa. Specificare un modello con carattere jolly da confrontare con la parte relativa al pacchetto dei nomi delle classi. Ad esempio: java.util* corrisponde a tutte le classi nel pacchetto java.util e ai relativi sottopacchetti. Se non specificato, il valore predefinito è *.
className Facoltativa. Specifica un modello con carattere jolly da confrontare con i nomi delle classi. Se non specificato, il valore predefinito è *.
method Facoltativa. Specificare un modello con carattere jolly da confrontare con i nomi dei metodi. Se non specificato, il valore predefinito è *.
signature Facoltativa. Specificare un modello con carattere jolly da confrontare con la firma dei metodi. La firma è la stringa che rappresenta gli argomenti del metodo e il tipo di ritorno. Utilizzare il formato interno Java per le firme dei metodi. Ad esempio: (Ljava/lang/Object;)D è la firma di metodo che accetta un Object come parametro e che restituisce un tipo double. Questo modello con carattere jolly può essere utilizzato per distinguere i metodi sovraccaricati. Se non specificato, il valore predefinito è *.

Note:

  • Un probe può disporre di più destinazioni che contengono regole di destinazione consecutive. Per applicare un probe solo a determinati metodi, specificare innanzitutto i metodi che si desidera includere, quindi aggiungere una specifica di destinazione finale package=* className=* method=* signature=* type=exclude.
  • I nomi della classe e del pacchetto specificati vengono confrontati anche con il nome della classe e con quello del pacchetto di qualunque interfaccia implementata da una classe. Ad esempio, java.util.HashMap implementa l'interfaccia java.util.Map. Se un probe destina il pacchetto java.util, il nome della classe Map e il nome del metodo size, il probe verrà applicato a java.util.HashMap.size() e al metodo size di tutte le altre classi che implementano l'interfaccia Map.
  • Il modello corrispondente non considera le relazioni di ereditarietà. Se la classe Derived estende la classe Base e un probe ha come destinazione Base.run(), il probe non verrà automaticamente applicato a Derived.run().
  • Se il modello del pacchetto in una specifica di destinazione è a singolo punto ("."), rappresenta l'intero pacchetto Java, senza nome. In tal modo, è possibile destinare esplicitamente le classi nell'intero pacchetto.
  • I probe callsite confrontano i modelli e le regole di destinazione con il pacchetto, la classe, il nome e la firma di un metodo richiamato. Il confronto viene eseguito con il metodo richiamato così come era noto al momento della compilazione, ossia con i nomi della classe e del metodo noti in maniera statica, non con i metodi reali che verranno richiamati a causa delle funzioni di ereditarietà e virtuali. Se la chiamata viene effettuata attraverso un riferimento dell'interfaccia, il nome dell'interfaccia deve corrispondere.
Esempio:

Per specificare una destinazione, selezionare Destinazione nella struttura ad albero della pagina Probe, scegliere Aggiungi, quindi Modifica nel riquadro di editazione.

Questo esempio applica il probe solo ai metodi i cui nomi iniziano con Get nelle classi i cui nomi terminano con Proxy nel pacchetto com.example. Voci di destinazione di tipo include ed exclude; la voce di destinazione exclude utilizza i caratteri jolly asterisco per escludere qualsiasi elemento; le voci include specificano i metodi esatti da utilizzare come destinazione. Tutti gli altri metodi e classi sono esclusi dalla strumentazione.