2010-07-02 13 views
8

Ho gli stessi file sorgente (C e Obj-C) che vengono compilati in due destinazioni: l'eseguibile del test dell'unità e il prodotto effettivo (che quindi viene sottoposto a test di integrazione). I due obiettivi si sviluppano in luoghi diversi, quindi i file oggetto, i file .gcno e .gcda sono separati. Non tutti i file sorgente sono compilati nel test unitario, quindi non tutti gli oggetti vi saranno presenti. Tutti i file sorgente sono compilati nella build del prodotto.Con gcov, è possibile unire in file .gcda?

C'è un modo per combinare i due gruppi di file .gcda per ottenere la copertura totale per i test di unità e di integrazione (come vengono eseguiti sulla build del prodotto)?

Sto usando lcov.

Mac OS X 10.6, GCC 4.0

Grazie!

risposta

4

Dato che si utilizza lcov, si dovrebbe essere in grado di convertire i file gcov .gcda in file lcov e unirli a lcov --add-tracefile.

Dalla pagina di manuale: Aggiungere il contenuto di tracefile. Specificare più tracefile utilizzando l'opzione -a per combinare i dati di copertura contenuti in questi file sommando i conteggi di esecuzione per la corrispondenza delle combinazioni test e nome file.

5

Finalmente sono riuscito a risolvere il mio problema per mezzo di lcov.

Fondamentalmente quello che ho fatto è il seguente:

  • compilare l'applicazione con le bandiere -fprofile-arcs -ftest-coverage --coverage
  • Distribuire la copia della domanda per ciascun nodo.
  • Eseguire l'applicazione in ciascun nodo in parallelo. (Questo passaggio genera nella directory dell'applicazione nell'ospite accesso alle informazioni di copertura)
  • Let lcov fare il suo lavoro:
    • lcov --directory src/ --capture --output-file coverage_reports/app.info
  • generare l'output HTML:
    • genhtml -o coverage_reports/ coverage_reports/app.info

Spero che questo possa essere d'aiuto a qualcuno.

+0

Wow, grazie per aver risposto. Ho avuto 2 lavori molto diversi tra porre la domanda e ora. Spero che questo aiuti qualcuno. – Joe

0

Unisco da lcov multi -d parametri come di seguito. Funziona.

lcov -c -d ./tmp/ -d ./tmp1/ -o ./tmp/coverage.info 
Problemi correlati