vak: (Default)
[personal profile] vak
Освоил clang-tidy в качестве инструмента для чистки кода на Си++. Господи, до чего же тормозная штука. И интерфейс сделан в худших традициях. Но пользы от неё много, однако.

Предварительно надо сконфигурить и собрать проект в каталоге 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. В них слишком много проблем, исправлять которые я не намерен.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org