#c #c-preprocessor #code-metrics
#c #c-препроцессор #код-метрики
Вопрос:
Проект, над которым я работаю (на C), содержит множество разделов кода, которые могут быть включены или опущены в зависимости от конфигурации во время компиляции, используя директивы препроцессора.
Мне интересно оценить, сколько строк кода различные конфигурации добавляют к моему основному проекту или вычитают из него. Другими словами, я хотел бы написать где-нибудь несколько строк #define
и #undef
и получить представление о том, что это делает с количеством LOC.
Я не знаком со счетчиками LOC, но при беглом поиске кажется, что большинство легкодоступных инструментов этого не делают. Я предполагаю, что это не сложная проблема, а просто довольно необычный показатель для измерения.
Существует ли существующий инструмент, который делал бы то, что я ищу, или какой-то простой способ сделать это самостоятельно? Исключение комментариев и пустых строк также было бы очень полезным.
Ответ №1:
Запустите его через препроцессор. Например, в gcc используйте опцию -E
, я полагаю, чтобы получить именно тот вид вывода, который вам кажется нужным.
-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.
Комментарии:
1. Круто! Я не знал, что смогу это сделать. Как говорит Джейсон, могут быть некоторые странные дополнения к препроцессору, но для меня это было бы хорошим простым началом.
Ответ №2:
Вы могли бы получить выходные данные препроцессора из вашего компилятора, но это может иметь другие нежелательные побочные эффекты, такие как расширение сложных многострочных макросов и добавление к количеству LOC способами, которых вы не ожидали.
Почему бы не написать свой собственный простой препроцессор и использовать свои собственные директивы include / exclude? Вы можете сделать их тривиально простыми для разбора, а затем передать свой код через этот препроцессор, прежде чем отправлять его в полнофункциональный счетчик LOC, такой как CLOC.