2015-06-10 14 views
7

Desidero utilizzare gli strumenti di copertura del codice (lcov) nel mio progetto cmake. Ho letto l'esempio qui https://github.com/bilke/cmake-modules/blob/master/CodeCoverage.cmake I test sono stati aggiunti nel mio progetto utilizzando la funzione cmake 'add_test()'.Come eseguire la copertura del codice in cmake

Voglio creare un target personalizzato, qualcosa chiamato 'test_coverage', che quando invocato per l'esecuzione dovrebbe eseguire tutti i test, raccogliere i dati di copertura e generare l'html (usando genhtml) in una directory 'code_coverage'.

C'è un modo per ottenere l'elenco di tutti i test nel mio progetto e i relativi percorsi di directory, in modo che nel target personalizzato 'test_coverage' potrei eseguire ogni test individualmente e raccogliere i suoi dati di copertura?

+0

Dalla tua descrizione presumo tu abbia già letto [Guida dettagliata sull'uso di gcov con CMake/CDash?] (Http://stackoverflow.com/questions/13116488/detailed-guide-on-using-gcov-with-cmake -cdash). Ma hai visto, ad es. https://github.com/stepcode/stepcode/blob/master/lcov.cmake? 'CTest' sa/può estrarre la lista di test nella directory di output binario di CMake e con la sua modalità di script' ctest -S ... 'è possibile automatizzare l'intera build, testare e raccogliere il processo di dati di copertura. – Florian

+1

Potrebbe anche essere utile [Come eseguire ctest dopo aver costruito il mio progetto con cmake] (http://stackoverflow.com/questions/15115075/how-to-run-ctest-after-building-my-project-with-cmake) – Florian

+0

@Florian Non vedo una chiamata ctest_coverage nell'esempio lcov.cmake? Inoltre, stai dicendo che puoi eseguire l'analisi della copertura senza uno script (-S)? Puoi indicare un esempio di come farlo? Sono interessato all'analisi della copertura di tutti gli obiettivi del test in forma aggregata. –

risposta

0

È possibile eseguire 'ctest -VV' dalla riga di comando e se tutti i test sono stati creati utilizzando add_test, tutti verranno eseguiti.

Se si desidera un obiettivo di generazione personalizzata per fare lo stesso, è possibile utilizzare questo codice:

add_custom_target(run_tests 
    COMMAND "ctest -VV") 

Ho un sacco di codice cmake per la copertura del codice e test di unità per mostrare, ma non è così ha senso copiare/incollare qui ancora perché sembra che tu stia appena iniziando.

Problemi correlati