Я пытаюсь выполнить анализ 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. Я знаю, что мог бы упомянуть все тестовые каталоги отдельно (что работает, я проверял), но количество модулей слишком велико, чтобы делать это для многих анализов разумно.
Это возможно?
Я установил Cppcheck, чтобы сделать некоторые тесты, и кажется, -i
реализация немного помешала. Однако мне удалось добиться того, что вы хотите.
Решение: использование -itest\
вместо -itest
(это было в Windows; возможно, Linux нужен -itest/
)
Обоснование: в моих тестах, -itest
работал только если был .\test\
каталог, в этом случае даже .\a\test\a.cpp
был исключен. С -itest\
Однако такое исключение имело место независимо от наличия .\test\
каталог.
Это похоже на ошибку, которую разработчики должны отсеять, но, тем временем, вы можете добиться успеха, используя вышеуказанный обходной путь.
Я бы использовал что-то вроде:
cppcheck /code/module_1/src /code/module_2/src /code/module_3/src
Это поздний ответ на старый вопрос, но, возможно, это поможет другим опоздавшим, таким как я.
Отказ от ответственности: Этот ответ для Windows.
Кажется как будто v1.79 исправил проблему ОП. Следующий синтаксис командной строки работал для меня:
cppcheck -itest code
В этом примере «-itest» отсеивает любое вхождение каталога «test», как первоначально (и правильно) предполагалось OP. Кроме того, папка с кодом находится рядом с файлом cppcheck.exe. Это будет корнем рекурсивного сканирования исходного кода.