clang-tidy
2022-08-25 14:59Освоил clang-tidy в качестве инструмента для чистки кода на Си++. Господи, до чего же тормозная штука. И интерфейс сделан в худших традициях. Но пользы от неё много, однако.
Предварительно надо сконфигурить и собрать проект в каталоге build (с помощью cmake). Обязательно указать для cmake флаг -DCMAKE_EXPORT_COMPILE_COMMANDS=ON. Он нужен, чтобы образовался файл build/compile_commands.json со списком команд компиляции. Он нужен для clang-tidy.
Вот так выглядит вызов этой хрени. Ужас просто.
Флаг --line-filter отключает проверку для файлов, сгенерённых посредством Bison. В них слишком много проблем, исправлять которые я не намерен.
Предварительно надо сконфигурить и собрать проект в каталоге build (с помощью cmake). Обязательно указать для cmake флаг -DCMAKE_EXPORT_COMPILE_COMMANDS=ON. Он нужен, чтобы образовался файл build/compile_commands.json со списком команд компиляции. Он нужен для clang-tidy.
Вот так выглядит вызов этой хрени. Ужас просто.
clang-tidy -p=build --checks=-*,bugprone-*,cert-*,clang-analyzer-*,cppcoreguidelines-*,misc-*,modernize-*,performance-*,portability-*,readability-*,-bugprone-easily-swappable-parameters,-bugprone-reserved-identifier,-cert-dcl37-c,-cert-dcl51-cpp,-clang-analyzer-deadcode.DeadStores,-cppcoreguidelines-avoid-c-arrays,-cppcoreguidelines-avoid-magic-numbers,-cppcoreguidelines-init-variables,-cppcoreguidelines-macro-usage,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-cppcoreguidelines-pro-bounds-constant-array-index,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-type-cstyle-cast,-cppcoreguidelines-pro-type-union-access,-cppcoreguidelines-pro-type-vararg,-modernize-avoid-c-arrays,,-modernize-deprecated-headers,-modernize-return-braced-init-list,-modernize-use-trailing-return-type,-modernize-use-using,-performance-move-const-arg,-readability-braces-around-statements,-readability-function-cognitive-complexity,-readability-identifier-length,-readability-implicit-bool-conversion,-readability-magic-numbers,-readability-redundant-access-specifiers,-cppcoreguidelines-avoid-goto,-cert-env33-c,-cert-err58-cpp,-bugprone-exception-escape --header-filter=. --warnings-as-errors=* --export-fixes=tidy-fixes.yaml --use-color --line-filter="[{'name':'grammar.hpp','lines':[[9999999,9999999]]},{'name':'grammar.cpp','lines':[[9999999,9999999]]},{'name':'location.hh','lines':[[9999999,9999999]]},{'name':'.h'},{'name':'.cpp'}]" src1.cpp src2.cpp ... srcN.cppФлаг --checks задаёт список правил, которые проверять или не проверять. Пришлось долго подбирать под свой проект.
Флаг --line-filter отключает проверку для файлов, сгенерённых посредством Bison. В них слишком много проблем, исправлять которые я не намерен.
