2011-04-28 1 views
1

Un projet sur lequel je travaille (dans C) comporte de nombreuses sections de code pouvant être incluses ou omises en fonction de la configuration lors de la compilation, à l'aide de directives de préprocesseur.Lignes de code en fonction des définitions de préprocesseur

Je suis intéressé par l'estimation du nombre de lignes de code que différentes configurations ajoutent ou soustraient à mon projet principal. En d'autres termes, je voudrais écrire quelques lignes #define et #undef quelque part, et avoir une idée de ce que cela fait au compte LOC.

Je ne connais pas les compteurs LOC, mais d'après une recherche rapide, il ne semble pas que la plupart des outils facilement disponibles le permettent. Je suppose que ce n'est pas un problème difficile, mais juste un métrique plutôt rare à mesurer.

Y at-il un outil existant qui ferait ce que je cherchais, ou un moyen facile de le faire moi-même? Exclure les commentaires et les lignes vides serait également un grand avantage.

Répondre

6

Exécutez-le via un préprocesseur. Par exemple, sous gcc, utilisez l'option -E, je crois, pour obtenir le type de sortie que vous semblez vouloir.

-E Stop after the preprocessing stage; do not run the compiler proper. 
     The output is in the form of preprocessed source code, which is sent 
     to the standard output. 
+0

Cool! Je ne savais pas que je pouvais faire ça. Comme Jason le dit, il pourrait y avoir quelques additions bizarres de préprocesseur, mais ce serait un bon début simple pour moi. – Ziv

0

Vous pouvez obtenir la sortie de préprocesseur de votre compilateur, mais cela pourrait avoir d'autres effets secondaires indésirables, comme l'expansion complexes macros multi-lignes, et en ajoutant au nombre de LOC de façon que vous ne l'avez pas attendre. Pourquoi ne pas écrire votre propre pré-processeur et utiliser vos propres directives d'inclusion/exclusion? Vous pouvez les rendre trivialement simples à analyser, puis rediriger votre code via ce pré-processeur avant de l'envoyer à un compteur LOC complet comme CLOC.

Questions connexes