Строки кода как функция определений препроцессора - PullRequest
1 голос
/ 28 апреля 2011

Проект, над которым я работаю (в C ), имеет много разделов кода, которые могут быть включены или пропущены в зависимости от конфигурации во время компиляции с использованием директив препроцессора.

Мне интересно оценить, сколько строк кода различных конфигураций добавляют в мой основной проект или вычитают из него.Другими словами, я хотел бы написать где-нибудь несколько строк #define и #undef и понять, как это влияет на счетчик LOC.

Я не знаком со счетчиками LOC,но из беглого поиска не похоже, что большинство легкодоступных инструментов делают это.Я предполагаю, что это не сложная проблема, а просто довольно необычная метрика для измерения.

Существует ли существующий инструмент, который бы делал то, что я ищу, или какой-то простой способ сделать это сам?Исключение из комментариев и пустых строк было бы очень полезно.

Ответы [ 2 ]

6 голосов
/ 28 апреля 2011

Запустите его через препроцессор.Например, в 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.
0 голосов
/ 28 апреля 2011

Вы можете получить выходные данные препроцессора от вашего компилятора, но это может иметь другие нежелательные побочные эффекты, такие как расширение сложных многострочных макросов и добавление к количеству LOC способами, которые вы не ожидали.

Почему бы не написать свой собственный простой препроцессор и использовать свои собственные директивы include / exclude? Вы можете сделать их тривиально простыми для анализа, а затем передать свой код через этот препроцессор, прежде чем отправлять его на полнофункциональный счетчик LOC, такой как CLOC.

...