Włączanie analizy pokrycia kodu z poziomu skryptu Ant

Aby zweryfikować, czy budowany kod spełnia określone kryteria akceptacji jego pokrycia, można włączyć tę funkcję z poziomu skryptu Ant. Aby to zrobić, należy wykonać następujące czynności:

Można również wyświetlać wyniki pokrycia kodu w środowisku roboczym.

Konfigurowanie skryptu Ant w celu włączenia analizy pokrycia kodu

Aby skonfigurować skrypt Ant w celu włączenia analizy pokrycia kodu, dodaj następujący łańcuch do zmiennej środowiskowej CLASSPATH:
<katalog_instalacyjny>/plugins/com.ibm.rational.llc.engine_1.0.0.<numer_wersji>
Następnie zdefiniuj nowe zadanie w pliku budowania. Na przykład:

<taskdef name="instrument" classname="com.ibm.rational.llc.engine.instrumentation.anttask.InstrumentationTask" classpath="${katalog_instalacyjny}/plugins/com.ibm.rational.llc.engine_1.0.0.<numer_wersji>"/>

Format zadania instrumentacji to:

<instrument buildPath="" baseLineFile="" saveBackups="" outputDir=""/>

gdzie:

buildPath:
Określa pliki, dla których będą zbierane dane o pokryciu kodu. Ścieżka budowania może odwoływać się do nazwy pliku klasy, nazwy pliku JAR lub nazwy katalogu. Jest ona definiowana tak jak każde inne odwołanie do ścieżki w środowisku Ant.


baseLineFile:
Określa ścieżkę, w której zapisany jest plik linii bazowej. Jest to plik, względem którego porównywany jest instrumentowany kod i dla którego generowane są statystyki pokrycia kodu. Stanowi on również dane wejściowe dla zadania generowania raportu środowiska Ant.


saveBackups:
Określa, czy zmienić nazwy oryginalnych plików JAR i plików klas, dodając do nazw rozszerzenie *.bak. Ustawienie właściwości saveBackups na wartość true spowoduje wygenerowanie plików kopii zapasowej. Ustawienie jej na wartość false spowoduje nadpisanie (a więc utratę) oryginalnych plików.
Uwaga: Właściwość saveBackups jest opcjonalna, a jej wartość domyślna to false.


outputDir:
Określa miejsce, w którym zostaną zapisane instrumentowane pliki. Domyślnie są one zapisywane w tym samym położeniu, co pliki oryginalne.

Przykład 1

W następującym przykładzie dane dotyczące pokrycia kodu są zbierane dla wszystkich plików w katalogu bin/, plik linii bazowej jest zapisany w położeniu blfile.coveragedata, nie są generowane kopie zapasowe plików, a pliki po instrumentacji są zapisywane w katalogu coverageData_files.

<instrument saveBackups="false" baseLineFile="blfile.coveragedata" buildPath="bin/" outputDir="coverageData_files"/>

Przykład 2

W następującym przykładzie dane dotyczące pokrycia kodu są zbierane dla wszystkich plików w katalogu bin przywoływanym za pomocą identyfikatora build.Dir, plik linii bazowej jest zapisany w położeniu blfile.coveragedata i generowana jest kopia zapasowa wszystkich plików.

<path id="build.Dir"> <pathelement location="bin"/> </path>
<instrument saveBackups="true" baseLineFile="blfile.coveragedata" buildPathRef="build.Dir" />

Przykład 3

W następującym przykładzie dane dotyczące pokrycia kodu są zbierane dla wszystkich plików w katalogu bin/, plik linii bazowej jest zapisany w położeniu blfile.coveragedata i generowana jest kopia zapasowa wszystkich plików.

<instrument saveBackups="true" baseLineFile="blfile.coveragedata"> <buildPath> <pathelement location="bin"/> </buildPath> </instrument>

Przykład 4

W następującym przykładzie dane dotyczące pokrycia kodu są włączone dla wszystkich podkatalogów katalogu bin/ zawierających w nazwie łańcuch com, a wykluczone są pliki z podkatalogów zawierających w nazwie łańcuch Test. Tworzone są kopie zapasowe wszystkich plików objętych analizą pokrycia kodu, a plik linii bazowej jest zapisany w położeniu blfile.coveragedata.

<instrument saveBackups="true" baseLineFile="blfile.coveragedata"> <buildPath> <fileset dir="bin"> <exclude name="**/*Test*"/> <include name="**/*com*/*"> </fileset> </buildPath> </instrument>

Przykład 5

W następującym przykładzie dane dotyczące pokrycia kodu są włączone dla wszystkich podkatalogów katalogu bin2/ oraz katalogu bin/, ale w przypadku tego katalogu z wyjątkiem podkatalogów zawierających w nazwie łańcuch Test. Tworzone są kopie zapasowe wszystkich plików objętych analizą pokrycia kodu, a plik linii bazowej jest zapisany w położeniu blfile.coveragedata.

<instrument saveBackups="true" baseLineFile="blfile.coveragedata"> <buildPath> <fileset dir="bin"> <exclude name="**/*Test*"/> </fileset> </buildPath> <buildPath> <pathelement location="bin2"/> </buildPath> </instrument>

Uruchomianie skryptu Ant

Po skonfigurowaniu skryptu Ant do włączenia analizy pokrycia kodu można uruchomić ten skrypt z wiesza komend Ant lub z poziomu środowiska roboczego.

Uruchamianie z poziomu wiersza komend

Aby uruchomić skrypt Ant z poziomu wiersza komend:

  1. Ustaw zmienną środowiskową JAVA_HOME na katalog, w którym zainstalowane jest środowisko JDK.
  2. Upewnij się, że zmienna środowiskowa CLASSPATH zawiera pełną ścieżkę oraz nazwę pliku probekit.jar. Plik probekit.jar znajduje się w podfolderze org.eclipse.hyades.probekit folderu wtyczek, który ma najwyższy numer wersji i najnowszy znacznik czasu, w posiadanej instalacji produktu.
  3. Upewnij się, że zmienna środowiskowa CLASSPATH zawiera zmienną JAVA_HOME (ścieżkę do instalacji środowiska Java, np. JAVA_HOME/bin/java).
  4. Upewnij się, że zmienna środowiskowa PATH zawiera pełną ścieżkę do odpowiedniego dla używanej platformy podfolderu w folderze org.eclipse.hyades.probekit. Na przykład:
  5. Ustaw zmienną LLC_PLUGIN na wartość ścieżki do folderu wtyczek:
    set LLC_PLUGIN=<katalog_instalacyjny>\plugins

Przykład

ant -lib=<katalog_instalacyjny>\plugins\org.eclipse.hyades.probekit_<wersja>\probekit.jar myTarget

Uruchamianie z poziomu środowiska roboczego

Aby uruchomić skrypt Ant z poziomu środowiska roboczego:

Generowanie statystyk pokrycia kodu

Upewnij się, że ścieżka klasy zawiera następującą pozycję:
<katalog_instalacyjny>\plugins\com.ibm.rational.llc.engine_1.0.0.<numer_wersji>

Aby wygenerować statystyki pokrycia kodu z poziomu wiersza komend, z katalogu nadrzędnego względem kodu uruchom komendę:

java -Dcoverage.out.file=C:\coverage_report\coverage_data.coveragedata com.ibm.rational.llc.example

Uwaga: Może być konieczne ustawienie używanego środowiska Java, tak aby było zgodne ze środowiskiem instalacji produktu.

Generowanie raportów z pokrycia kodu

Aby wygenerować raport, korzystając ze środowiska Ant:
Pobierz Mechanizm raportowania środowiska BIRT i rozpakuj jego zawartość. Ustaw następujące zmienne środowiskowe:

Na przykład:
<path id="lib.path"> <pathelement location="${env.LLC_COMMON_PLUGIN}"/> <pathelement location="${env.LLC_REPORT_PLUGIN}"/> <fileset dir="${env.BIRT_HOME}/lib" includes="*.jar"/> </path>

Zdefiniuj nowe zadanie w pliku budowania na potrzeby generowania raportu z pokrycia kodu, na przykład:

<taskdef name="code-coverage-report" classname="com.ibm.rational.llc.report.birt.adapters.ant.ReportGenerationTask" classpathref="lib.path"/>

Format zadania generowania raportu z pokrycia kodu to:

<code-coverage-report outputDir="" coverageDataFile="" baseLineFiles=""> <filters> <filter type="" value=""/> </filters> <configurations> <configuration name="" value=""/> </configurations> </code-coverage-report>

gdzie:

outputDir:
Określa miejsce, w którym zostaną zapisane pliki wynikowe raportu.


coverageDataFile:
Określa co najmniej jeden plik danych pokrycia kodu, na podstawie którego zostanie wygenerowany raport. Są one definiowane tak jak każde inne odwołanie do ścieżki w środowisku Ant.


baseLineFiles:
Określa co najmniej jeden plik linii bazowej, który został wygenerowany w ramach zadania instrumentacji. Są one definiowane tak jak każde inne odwołanie do ścieżki w środowisku Ant.


filters:
Opcjonalne: Używane na potrzeby filtrowania wyników raportu.


filter:
type: Typ filtru do zastosowania w raporcie.

value: Wartość filtru do zastosowania w raporcie.
Dostępne filtry:

Configurations:
Opcjonalne: Używane do określania różnych konfiguracji obliczeń.


Configuration:
name: Nazwa konfiguracji.

value: Wartość konfiguracji.
Dostępne konfiguracje:

Przykład 1

W następującym przykładzie generowanie raportu odbywa się na podstawie danych coverage-data/coverage.coveragedata, plikiem linii bazowej jest coverage-data/blfile.coveragedata, raport jest zapisywany w położeniu coverage-reports i stosowany jest filtr line_coverage_threshold z wartością progową 80%. Z obliczeń pokrycia kodu wykluczone są konstruktory domyślne.

<code-coverage-report outputDir="coverage-reports/" coverageDataFile="coverage-data/coverage.coveragedata" baseLineFiles="coverage-data/blfile.coveragedata"> <filters> <filter type="line_coverage_threshold" value="80"/> </filters> <configurations> <configuration name="excludeDefaultConstructor" value="true"/> </configurations> </code-coverage-report>

Przykład 2

W następującym przykładzie generowanie raportu odbywa się na podstawie dwóch plików danych coverage1.coveragedata i coverage2.coveragedata , plikami linii bazowej są blfile1.coveragedata i blfile2.coveragedata, a raport jest zapisywany w położeniu coverage-reports. Domyślnie konstruktory domyślne są włączane do obliczeń pokrycia kodu.

<code-coverage-report outputDir="coverage-reports/" coverageDataFile="coverage-data/coverage1.coveragedata;coverage-data/coverage2.coveragedata" baseLineFiles="coverage-data/blfile1.coveragedata;coverage-data/blfile2.coveragedata"> </code-coverage-report>

Wyświetlanie wyników pokrycia kodu w środowisku roboczym

Aby wyświetlić wyniki pokrycia kodu ze skryptu Ant w środowisku roboczym:

Wyłączanie analizy pokrycia kodu

Aby wyłączyć klasy instrumentowane w ramach zadania Ant, ponownie skompiluj projekt lub zastąp pliki .class plikami .class.bak (o ile opcja saveBackups była włączona).

Pojęcia pokrewne
Indykatory pokrycia kodu

Czynności pokrewne
Włączanie analizy pokrycia kodu
Konfigurowanie poziomów i filtrów pokrycia kodu
Konfigurowanie indykatorów pokrycia kodu
Analizowanie raportów z pokrycia kodu