2010-05-20 4 views
4

J'ai réussi à mettre en place un projet autotools où les tests sont compilés avec des instruments afin que je puisse obtenir un rapport de couverture de test.Autotools invocation automatique de lcov après 'make check'

Je peux obtenir le rapport en exécutant lcov dans le répertoire source après un 'make check' réussi. Je suis maintenant confronté au problème que je veux automatiser cette étape. Je voudrais ajouter ceci pour «faire un contrôle» ou pour en faire un objectif distinct «faire une vérification de couverture». Idéalement, je voudrais analyser le résultat et échouer si la couverture tombe en dessous d'un certain pourcentage. Le problème est que je n'arrive pas à comprendre comment ajouter une cible personnalisée.

Le plus proche que j'ai eu a été de trouver this exemple autotools config, mais je ne vois pas où dans ce projet l'objectif 'make lcov' est ajouté. Je ne peux voir que des drapeaux de configuration dans m4/auxdevel.m4.

Des conseils?

Répondre

6

Vous pouvez apparemment ajouter des étapes supplémentaires aux cibles dans votre Makefile.am, c'est ce que j'ai fini par (inspiré par # http://www.enlightenment.org/svn/e/trunk/ewl/Makefile. h):

#http://www.enlightenment.org/svn/e/trunk/ewl/Makefile.am 
if ENABLE_COV 
cov-reset: 
    @rm -fr coverage 
    @find . -name "*.gcda" -exec rm {} \; 
    @lcov --directory . --zerocounters 

cov-report: 
    @mkdir -p coverage 
    @lcov --compat-libtool --directory . --capture --output-file coverage/app.info 
    @genhtml -o coverage/ coverage/app.info 

cov: 
    @make cov-report 

clean-local: 
    @make cov-reset 

check: 
    @make cov 

endif  

le '@make cov' sous contrôle ajoutera la cible 'cov' par défaut 'make check' cible.