Правило CppCheck не показывает #define, комментарий - PullRequest
0 голосов
/ 16 октября 2019

Я создаю пользовательское правило для cppCheck. Когда я создаю правило, вроде не разрешать #define в проекте. Но --rule =. + Не показывать #define в моем тестовом проекте. Есть ли опция или флаг для cppcheck, чтобы показать #define в моем коде?

мой файл правил:

<?xml version="1.0"?>
<rule version="1">
       <pattern>#define</pattern>
</rule>

мой пример:

#define TEST 1

int main() {
    int a = TEST;
    return 0;
}

1 Ответ

0 голосов
/ 17 октября 2019

В документе writing-rules-2.pdf в https://sourceforge.net/projects/cppcheck/files/Articles/ говорится: «Данные Cppcheck предварительно обработаны. Комментариев нет, #define, #include и т. Д.»

В качестве альтернативы вы можете создатьXML-дамп с использованием cppcheck --dump yourfile.c и последующая обработка дампа, например, скриптом Python. Строка #define TEST 1 вашего примера является частью разделов rawtokens и directivelist. Несколько аддонов Cppcheck делают это таким образом (например, аддон Python MISRA-C). Смотрите каталог дополнений Cppcheck на GitHub. В этом каталоге также есть вспомогательный скрипт Python cppcheckdata.py, который читает файл дампа и создает списки объектов для токенов, функций и т. Д.

...