Tcov
Utvecklare | Oracle Corporation |
---|---|
Operativ system | Solaris |
Plattform | SPARC |
Typ | Kodtäckning |
Licens | Gratis för nedladdning och användning enligt beskrivningen i produktlicensen för Sun Studio . |
Hemsida | developers.sun.com |
Tcov är ett verktyg för analys av källkodstäckning och profileringsverktyg för uttalande för påstående för programvara skriven i Fortran , C och C++ . Tcov genererar exakta antal gånger varje sats i ett program exekveras och annoterar källkod för att lägga till instrumentering. Det är ett standardverktyg som tillhandahålls kostnadsfritt med programvaran Sun Studio .
Verktyget tcov ger information om hur ofta ett program exekverar kodsegment. Den producerar en kopia av källfilen, kommenterad med exekveringsfrekvenser. Koden kan annoteras på grundblocknivå eller källlinjenivå. Eftersom satserna i ett basblock exekveras samma antal gånger, är antalet grundläggande blockexekverings lika med antalet gånger varje sats i blocket exekveras. Verktyget tcov producerar ingen tidsbaserad data.
Beskrivning
tcov producerar en testtäckningsanalys av ett kompilerat program . tcov tar källfiler som argument och producerar en kommenterad källlista. Varje grundläggande kodblock (eller varje rad om det specifika alternativet till tcov är specificerat) har prefixet antalet gånger det har exekverats; rader som inte har körts har prefixet "#####".
Verktyget tcov placerar också en sammanfattning i slutet av den kommenterade programlistan. Statistiken för de vanligaste exekverade grundblocken listas i ordning efter exekveringsfrekvens. Radnumret är numret på den första raden i blocket.
Det finns två implementeringar av tcov:
- Old Style täckningsanalys: I denna implementering, även känd som tcov original, skapar kompilatorn en täckningsdatafil med suffixet .d för varje objektfil. När programmet är klart uppdateras täckningsdatafilerna.
- Ny stiltäckningsanalys: I den här implementeringen, även känd som tcov enhanced, skapas inga ytterligare filer vid kompilering. Istället en katalog för att lagra profildata, och en enda täckningsdatafil som kallas tcovd skapas i den katalogen.
Förbättrad täckningsanalys övervinner några av bristerna i det ursprungliga analysverktyget, till exempel:
- Ger mer komplett stöd för C++.
- Stöder kod som finns i #include header-filer och korrigerar ett fel som skymmer täckningsnummer för mallklasser och funktioner.
- Effektivare körtid än den ursprungliga tcov-körtiden.
- Stöds för alla plattformar som kompilatorerna stöder.
Genomförande
För att generera kommenterad källkod krävs följande tre steg:
- Kodkompilering med lämplig kompilatoralternativ
- Programexekvering för att samla profildata
- tcov- kommandotkörning för att generera kommenterade filer
Varje efterföljande körning ackumulerar mer täckningsdata i profildatafilen. Data för varje objektfil nollställs första gången programmet körs efter omkompilering. Data för hela programmet nollställs genom att ta bort tcovd-filen.
Ovanstående steg förklaras för både original och förbättrad tcov nedan:
Old Style täckningsanalys
Källkoden är kompilerad med -xa alternativ för C-program och -a alternativ för Fortran och C++-program. Kompilatorn skapar en täckningsdatafil med suffixet .d för varje objektfil. Täckningsdatafilen skapas i den katalog som anges av miljövariabeln TCOVDIR . Om TCOVDIR inte är inställt skapas täckningsdatafilen i den aktuella katalogen. Ovanstående instrumenterade build körs och när programmet är klart uppdateras .d -filerna. Slutligen körs tcov-kommandot för att generera de kommenterade källfilerna. Syntaxen för tcov-kommandot är som följer:
tcov-alternativ käll-fil-lista
Här är källfilslista en lista över källkodens filnamn. För en lista med alternativ, Standardutgången för tcov är en uppsättning filer, var och en med suffixet .tcov , som kan ändras med alternativet -o filnamn.
Ett program kompilerat för kodtäckningsanalys kan köras flera gånger (med potentiellt varierande indata); tcov kan användas i programmet efter varje körning för att jämföra beteende.
Ny stiltäckningsanalys
Källkoden är kompilerad med alternativet -xprofile=tcov . Till skillnad från originalläget genererar förbättrad tcov inga filer vid kompilering. Ovanstående instrumenterade konstruktion körs och när programmet är klart skapas en katalog för att lagra profildata, och en enda täckningsdatafil som kallas tcovd skapas i den katalogen. tcovd innehåller informationen om radnumren och antalet exekveringar. Det är en vanlig textfil. Som standard skapas katalogen på den plats där programmet körs och den är uppkallad efter körbar fil och suffixet med .profile . Katalogen är också känd som profilhinken . Placeringen av profilhinken kan åsidosättas genom att ställa in miljövariabler SUN_PROFDATA_DIR eller SUN_PROFDATA . Slutligen körs tcov-kommandot för att generera de kommenterade källfilerna. Syntaxen för tcov-kommandot är densamma som för originalkommandot, förutom det obligatoriska -x -alternativet.
tcov options -x profilebucket källfil-lista
Den enda skillnaden i kommando från original tcov är det obligatoriska tillägget av -x dir- alternativet för att beteckna förbättrad tcov.
Exempel
Följande program, skrivet i programmeringsspråk C , går över heltal 1 till 9 och testar deras delbarhet med operatorn modul (%).
0
0
0
#include <stdio.h> int main ( void ) { int i ; for ( i = 1 ; i < 10 ; i ++ ) { if ( i % 3 == ) printf ( "%d är delbart med 3 \n " , i ); if ( i % 11 == ) printf ( "%d är delbart med 11 \n " , i ); } returnera ; }
För att möjliggöra täckningstestning måste programmet kompileras med följande alternativ:
för täckning av gammal stilkod ,
cc -xa cov.c
och för ny stilkodstäckning,
cc -xprofile=tcov -o cov cov.c
där cov.c är namnet på programfilen. Detta skapar en instrumenterad körbar fil som innehåller ytterligare instruktioner som registrerar antalet gånger varje rad i programmet exekveras. -o- alternativet används för att ställa in namnet på den körbara filen. Den körbara filen måste sedan köras för att skapa täckningsdata. Skapandet och platsen för denna fil är olika för kodanalys av gammal och ny stil. I gammal stilanalys uppdateras den här filen med filtillägget .d , skapad efter kompilering , antingen i TCOVDIR- katalogen eller den nuvarande, med täckningsdata. I ny stilanalys skapas täckningsdatafil, med namnet tcovd , i katalogen <körbart namn>.profile . Dessa data kan analyseras med hjälp av kommandot tcov och namnet på en källfil:
för täckning av gammal stilkod ,
tcov cov.c
och för ny stilkodstäckning,
tcov -x cov.profile cov.c
tilläggsargumentet i ny stilanalys är profilhink . Kommandot tcov producerar en kommenterad version av den ursprungliga källfilen , med filtillägget '.tcov', som innehåller räkningar av antalet gånger varje rad kördes:
0
0
0
#include <stdio.h> int main ( void ) { 1 int i ; 10 för ( i = 1 ; i < 10 ; i ++ ) { 9 if ( i % 3 == ) 3 printf ( " %d är delbart med 3 \n " , i ); 9 if ( i % 11 == ) ###### printf ("%d är delbart med 11\n", i); 9 } 1 retur ; 1 }
Verktyget tcov placerar också en sammanfattning i slutet av den kommenterade programlistan. Statistiken för de vanligaste exekverade grundblocken listas i ordning efter exekveringsfrekvens. Radnumret är numret på den första raden i blocket.
Kommandoradsalternativ
Tcov kommandoradsverktyg stöder följande alternativ när du genererar kommenterade filer från profildata:
- -a : Visa ett antal körningar för varje sats. Om det här alternativet inte är specificerat, visas antalet exekveringar endast för ledaren för ett kodblock .
- -n : Visa tabell över radnumren för de n mest frekvent körda satserna och deras exekveringsantal.
- -o filnamn : Direkt utdata till filnamn istället för fil.tcov . Detta alternativ kan användas för att styra utdata till standardutdata genom att ange - .
- -x dir : Detta stöds i ny stiltäckningsanalys. Om det här alternativet inte är specificerat, antas täckning av gammal stil tcov.
Se även
- Sun Studio , kompilatorsvit som tillhandahåller Tcov
- Gemensam utvecklings- och distributionslicens
- Kodtäckning
- Gcov , kodtäckningsverktyg från GCC