C'è un modo per focalizzare i rapporti sulla copertura del codice lcov in una o due directory?
-
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!
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.