Как исключить тестовые пути из анализа cppcheck?

Я пытаюсь выполнить анализ cppcheck над моим кодом, который имеет следующую структуру файлов:

/code/module_1/src/a.cpp
/code/module_1/src/b.cpp
/code/module_1/test/c.cpp
/code/module_2/src/d.cpp
/code/module_2/src/e.cpp
/code/module_3/test/f.cpp

Я хотел бы провести анализ, исключая весь тестовый код. Возможно ли это с помощью команды типа «cppcheck -itest»? Это не работает для меня, хотя я думаю, что должно, согласно документы:

…Имя каталога соответствует всем частям пути.

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

Это возможно?

5

Решение

Я установил Cppcheck, чтобы сделать некоторые тесты, и кажется, -i реализация немного помешала. Однако мне удалось добиться того, что вы хотите.

Решение: использование -itest\ вместо -itest (это было в Windows; возможно, Linux нужен -itest/)

Обоснование: в моих тестах, -itest работал только если был .\test\ каталог, в этом случае даже .\a\test\a.cpp был исключен. С -itest\Однако такое исключение имело место независимо от наличия .\test\ каталог.

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

2

Другие решения

Я бы использовал что-то вроде:

cppcheck /code/module_1/src /code/module_2/src  /code/module_3/src
0

Это поздний ответ на старый вопрос, но, возможно, это поможет другим опоздавшим, таким как я.

Отказ от ответственности: Этот ответ для Windows.

Кажется как будто v1.79 исправил проблему ОП. Следующий синтаксис командной строки работал для меня:

cppcheck -itest code

В этом примере «-itest» отсеивает любое вхождение каталога «test», как первоначально (и правильно) предполагалось OP. Кроме того, папка с кодом находится рядом с файлом cppcheck.exe. Это будет корнем рекурсивного сканирования исходного кода.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector