C'è un modo per focalizzare i rapporti sulla copertura del codice lcov in una o due directory?

StackOverflow https://stackoverflow.com/questions/837639

  •  10-07-2019
  •  | 
  •  

Domanda

Di recente ho iniziato a utilizzare lcov per visualizzare la copertura del mio codice. È un ottimo strumento.

Una cosa che sto notando è che genera rapporti sulla copertura del codice per tutti i file che sto usando, inclusi quelli che non mi interessano. Ad esempio, mi darà rapporti sulla copertura del codice per boost e mysql ++ file.

Esiste un modo semplice per forzare lcov a generare rapporti di copertura solo per file specifici?

Ho provato ad usare il parametro -k in questo modo:

/usr/bin/lcov -q -c -i -b . -d .obj -k src/ -k include/ -o app_base.info

{run unit tests now}

/usr/bin/lcov -q -c -b . -d .obj -k src/ -k include/ -o app_test.info
/usr/bin/lcov -q -a app_base.info -a app_test.info -o app_total.info
/usr/bin/genhtml -q -o lcov_output_directory app_total.info

(Significa che voglio solo i file di copertura per le directory " include " e " src ").

Tuttavia, questo non sembra funzionare. Il rapporto mi mostra ancora tutti i file estranei. Eventuali suggerimenti sono molto apprezzati. Grazie!

È stato utile?

Soluzione

lcov supporta un argomento della riga di comando --remove per fare esattamente quello che stai chiedendo.

Altri suggerimenti

Ho usato il flag --no-external insieme al flag --directory per escludere file indesiderati.

La definizione di esterno dall'uomo:

  

I file di origine esterni sono file che non si trovano in una delle directory specificate da --directory o --base-directory.

Quindi il mio comando era simile al seguente:

$ lcov  --directory src -c -o report.info --no-external
Capturing coverage data from src
Found gcov version: 4.2.1
Scanning src for .gcda files ...
Found 4 data files in src
Processing src/C####.gcda
  ignoring data for external file /usr/include/c++/4.2.1/bits/allocator.h

Un possibile approccio è quello di vincolare quali file vengono compilati con i flag di copertura (-fprofile-arcs -ftest-coverage). Se non vuoi progettare il tuo file system make in modo che sia selettivo su quali file sono creati con la strumentazione di prova, il seguente trucco potrebbe funzionare per te:

  • Crea la tua applicazione senza strumentazione.
  • Rimuovi i file .o per il sorgente che vuoi strumentare
  • Attiva la strumentazione e ricostruisci. Solo i file oggetto eliminati verranno ricostruiti con la strumentazione.
  • Esegui lcov

Ciò dovrebbe comportare solo le aree target che emettono artefatti gcov, che sono consumati ciecamente dagli script di lcov.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top