Отключите или включите предупреждения для проверки cpp с помощью файла конфигурации

#c #configuration-files #cppcheck #clang-tidy

Вопрос:

С помощью статического анализатора clang-tidy я могу хранить файл ( .clang-tidy ) в корне проекта с предупреждениями, которые я хочу активировать или деактивировать. clang-tidy будет искать этот файл (насколько я знаю) и использовать параметры, определенные там. Это избавляет меня от жесткого кодирования длинных командных строк в файлах CMake или Makefile.

Можно ли сделать то же самое со cppcheck статическим анализатором?

В настоящее время у меня есть эта очень длинная командная строка, жестко закодированная:

 cppcheck --max-ctu-depth=3 --enable=all --inline-suppr --suppress=*:*thrust/complex* --suppress=missingInclude --suppress=syntaxError --suppress=unmatchedSuppression --suppress=preprocessorErrorDirective --language=c   --std=c  14 --error-exitcode=666
 

Это пример .clang-tidy файла конфигурации, который я храню в корне проекта:

 ---
Checks: '
    *,
    -readability-magic-numbers,
    -modernize-use-nodiscard,
    -altera-struct-pack-align,
    -cert-err58-cpp,
    -cppcoreguidelines-avoid-non-const-global-variables,
    -cppcoreguidelines-macro-usage,
    -cppcoreguidelines-pro-bounds-array-to-pointer-decay,
    -cppcoreguidelines-pro-type-vararg,
    -cppcoreguidelines-avoid-magic-numbers,
    -fuchsia-default-arguments-calls,
    -fuchsia-trailing-return,
    -fuchsia-statically-constructed-objects,
    -fuchsia-overloaded-operator,
    -hicpp-vararg,
    -hicpp-no-array-decay,
    -llvm-header-guard,
    -llvmlibc-restrict-system-libc-headers,
    -llvmlibc-implementation-in-namespace,
    -llvmlibc-callee-namespace
'
WarningsAsErrors: '*'
HeaderFilterRegex: '.'
AnalyzeTemporaryDtors: false
FormatStyle: file
...
 

Ответ №1:

Вы можете сохранить конфигурацию в *.cppcheck файле, а затем использовать параметр --project командной строки для запуска проверки. См. раздел Проект графического интерфейса вручную — Cppcheck.

cppcheck файлы обычно генерируются CppCheckGUI через Файл -> Новый файл проекта. Точный синтаксис не задокументирован, но в основном это просто XML-файл, и он выглядит довольно простым, если вы хотите создать файл напрямую, без использования графического интерфейса.

Пример test.cppcheck файла:

 <?xml version="1.0" encoding="UTF-8"?>
<project version="1">
    <builddir>test2-cppcheck-build-dir</builddir>
    <platform>Unspecified</platform>
    <analyze-all-vs-configs>false</analyze-all-vs-configs>
    <check-headers>true</check-headers>
    <check-unused-templates>false</check-unused-templates>
    <max-ctu-depth>10</max-ctu-depth>
    <exclude>
        <path name="WINDOWS/"/>
    </exclude>
    <suppressions>
        <suppression>IOWithoutPositioning</suppression>
    </suppressions>
</project>
 

Комментарии:

1. Я попытался сгенерировать xml из графического интерфейса, но не смог даже выбрать исключения в графическом интерфейсе, чтобы сохранить их в xml. У вас есть пример xml-файла?

2. Добавлен образец. Вы можете добавить редактирование файла .cppcheck через графический интерфейс, перейдя в Файл — Редактировать файл проекта.