Probemålspesifikasjoner

En målspesifikasjon oppgir klassene og metodene som proben skal tas i bruk for.

Målspesifikasjonen er valgfri. Hvis det ikke er oppgitt noe mål, blir proben tatt i bruk for alle klasser som blir behandlet av instrumenteringsmotoren.

Med målspesifikasjonen kan du opprette filtreringsregler som inkluderer eller ekskluderer metoder fra instrumentering, basert på mønstre som sammenliknes med pakken, klassen og metodenavnene, samt metodens signatur. Mønstrene kan inneholde jokertegn, der "*" samsvarer med ingen eller flere tegn.

Hvis jokertegnmønstrene til et mål samsvarer med en metodes pakke, klasse, navn og signatur, bestemmer type-egenskapen om metoden blir (include) eller ikke blir (exclude) instrumentert. Hvis mønstrene ikke samsvarer med en metodes pakke, klasse, navn eller signatur, er standardverdien at metoden blir instrumentert.

Målet inkluderer følgende egenskaper:
Egenskap Beskrivelse
type Obligatorisk. Egenskapen type bestemmer om en probe blir tatt i bruk for en målmetode. Oppgi include for å ta i bruk proben for klasser og metoder som samsvarer med jokertegnmønstrene, exclude for å ekskludere dem.
package Valgfri. Oppgi et jokertegnmønster som skal sammenliknes med pakkedelen av klassenavn.For eksempel: java.util* samsvarer med alle klassene i java.util-pakken og underpakkene. Hvis du ikke oppgir noe, brukes standardverdien *.
className Valgfri. Oppgi et jokertegnmønster som skal sammenliknes med klassenavn. Hvis du ikke oppgir noe, brukes standardverdien *.
method Valgfri. Oppgi et jokertegnmønster som skal sammenliknes med metodenavn. Hvis du ikke oppgir noe, brukes standardverdien *.
signature Valgfri. Oppgi et jokertegnmønster som skal sammenliknes med metodens signatur. (Signaturen er strengen som representerer argumentene og returtypen til metoden.) Bruk det interne Java-formatet til metodesignaturer. For eksempel: (Ljava/lang/Object;)D er signaturen til en metode som tar et objekt som en parameter og returnerer en dobbel. Jokertegnmønsteret kan brukes til å skille mellom overbelastede metoder. Hvis du ikke oppgir noe, brukes standardverdien *.

Merk:

  • En probe kan ha flere målspesifikasjoner som inneholder suksessive målregler. Hvis du vil at en probe bare skal tas i bruk for bestemte metoder, må du først oppgi metodene som du vil inkludere, og deretter legge til den endelige målspesifikasjonen package=* className=* method=* signature=* type=exclude.
  • Pakke- og klassenavn du oppgir, blir også kontrollert mot pakke- og klassenavnene til eventuelle grensesnitt som en klasse implementerer. For eksempel implementerer java.util.HashMap grensesnittet java.util.Map. Hvis en probe har pakken java.util, klassenavnet Map og metodenavnet size som mål, blir proben tatt i bruk for java.util.HashMap.size(), og for size-metoden til alle andre klasser som implementerer Map-grensesnittet.
  • Mønstersammenlikningen tar ikke hensyn til forhold knyttet til arv. Hvis klassen Derived utvider klassen Base, og en probe har Base.run() som mål, blir ikke proben automatisk brukt i Derived.run().
  • Hvis pakkemønsteret i en målspesifikasjon er et punktum ("."), representerer det en global Java-pakke uten navn. Dermed kan du eksplisitt utpeke klasser i den globale pakken.
  • Kallsted-prober sammenlikner målmønstre og regler med pakken, klassen, navnet og signaturen til en kalt metode. Sammenlikningen blir gjort med den kalte metoden slik den var på kompileringstidspunktet, det vil si med de statistisk kjente klasse- og metodenavnene, ikke de faktiske metodene som blir kalt som et resultat av arv og virtuelle funksjoner. Hvis kallet blir gjort via en grensesnittreferanse, må grensesnittnavnet samsvare.
Eksempel:

Hvis du skal oppgi et mål, velger du Mål i treruten på siden Prober og klikker på Legg til, og deretter på Rediger i redigeringsruten.

I dette eksempelet blir proben bare brukt i metoder som har navn som begynner med Get i klasser som har navn som slutter med Proxy i pakken com.example. Måloppføringer av typen include (inkluder) og exclude (ekskluder). Måloppføringen exclude bruker jokertegn for å ekskludere alt, include-oppføringen oppgir de nøyaktige metodene som brukes som mål. Alle andre klasser og metoder blir ekskludert fra instrumentering.