Probemålspecifikationer

En målspecifikation angiver de klasser og metoder, som proben skal anvendes på.

Det er valgfrit, om du vil angive en målspecifikation.Når der ikke er angivet nogen målspecifikation, anvendes proben på alle de klasser, der behandles af instrumenteringsprogrammet.

Med målspecifikationerne kan du oprette regler for filtrering, så du kan inkludere eller udelukke metoder fra instrumenteringen ud fra mønstre, der skal svare til pakken, klassen og metodenavnet plus metodens signatur. Mønstrene kan indeholde jokertegn, hvor en stjerne (*) matcher et eller flere tegn.

Hvis målets mønster af jokertegn matcher en metodes pakke, klasse, navn og signatur, bestemmer egenskaben type, om metoden er instrumenteret (include) eller ikke (exclude). Hvis mønstrene ikke matcher en metodes pakke, klasse og signatur, er metoden som standard instrumenteret.

Målet indeholder følgende egenskaber:
Egenskab Beskrivelse
type Påkrævet. Egenskaben type bestemmer, om en probe skal anvendes på en målmetode. Angiv include for at anvende proben på de klasser og metoder, som matcher mønstret af jokertegn, exclude for at udelukke dem.
package Valgfrit. Angiv jokertegn i et mønster, der matcher pakkedelen af klassenavnet. Eksempel: java.util* matcher alle klasser i pakken java.util og de tilhørende underpakker. Hvis der ikke angives noget, er standardværdien *.
className Valgfrit. Angiv jokertegn i et mønster, der matcher klassenavne. Hvis der ikke angives noget, er standardværdien *.
method Valgfrit. Angiv jokertegn i et mønster, der matcher metodenavne. Hvis der ikke angives noget, er standardværdien *.
signature Valgfrit. Angiv jokertegn i et mønster, der matcher signaturen for en metode. (signature er den streng, der repræsenterer metodens argumenter og returtype). Brug det interne Java-format til metodesignaturer. Eksempel: (Ljava/lang/Object;)D er signaturen for en metode, som bruger et objekt som en parameter og returnerer en dobbelt. Dette mønster af jokertegn kan bruges til at skelne blandt overbelastede metoder. Hvis der ikke angives noget, er standardværdien *.

Bemærkninger:

  • En probe kan have flere målspecifikationer, der indeholder efter hinanden følgende målregler. Hvis en probe kun skal anvendes på visse metoder, skal du først angive de metoder, du vil inkludere, og derefter tilføje en afsluttende målspecifikation package=* className=* method=* signature=* type=exclude.
  • De pakke- og klassenavne, du angiver, kontrolleres også i forhold til pakke- og klassenavne på alle de grænseflader, klassen implementerer. For eksempel implementeres grænsefladen java.util.Map ved hjælp af java.util.HashMap. Hvis en probe målrettes mod pakken java.util, klassenavnet Map og metodenavnet size, vil proben blive anvendt på java.util.HashMap.size(), og på size-metoden i forbindelse med alle de andre klasser, der implementerer grænsefladen for tilknytning vha. mapping.
  • Ved sammenligning af mønstre tages overtagne relationer ikke med i betragtning. Hvis klassen Derived udvider klassen Base, og en probe er målrettet mod Base.run(), vil proben ikke automatisk blive anvendt på Derived.run().
  • Hvis pakkemønstret i en målspecifikation er et enkelt punktum (.), repræsenterer det den globale, unavngivne Java-pakke. Derfor kan du målrette klasser eksplicit i den globale pakke.
  • Kaldstedprober matcher målmønstre og -regler med en kaldt metodes pakke, klasse, navn og signatur. Sammenligningen foretages med den kaldte metode, som den var kendt på kompileringstidspunktet. Det vil sige med de statisk kendte klasse- og metodenavne, ikke de faktiske metoder, som bliver kaldt på grund af overtagne og virtuelle funktioner. Hvis kaldet foretages via en reference til en grænseflade, skal grænsefladens navn matche.
Eksempel:

Hvis du vil angive et mål, skal du vælge Mål i delvinduet med træstrukturen på siden Prober, klikke på Tilføj og derefter på Redigér i redigeringsdelvinduet.

I dette eksempel anvendes proben kun på metoder, hvis navne begynder med Get i klasser, hvis navne slutter med Proxy i pakken com.example. Målindgange af typen include og exclude. I målindgangen exclude bruges jokertegnet stjerne (*) til at udelukke alt, i målindgangen include angives præcist de metoder, der skal målrettes. Alle andre klasser og metoder er udelukket fra instrumentering.