Visual Studio (Desktop) имеет аккуратную интеграцию. вы можете заставить VS вызывать clang-tidy со списком проверок. однако я не смог найти способ заставить его использовать существующий файл конфигурации .clang-tidy.
Документация намекает, что это возможно:
Конфигурация Clang-Tidy По умолчанию Clang-Tidy не устанавливает проверяет при включении. Посмотреть список проверок в командной строке версию, запустите clang-tidy -list-checks в командной строке разработчика. Вы можете настроить проверки, которые Clang-Tidy запускает внутри Visual Студия. В диалоговом окне Страницы свойств проекта откройте страницу Конфигурация. Страница «Свойства» > «Анализ кода» > «Clang-Tidy». Введите чеки для запуска свойство Clang-Tidy Checks. Хороший набор по умолчанию кланг-анализатор-*. Значение этого свойства предоставляется параметру --checks аргумент инструмента. Любая дополнительная конфигурация может быть включена в пользовательские файлы .clang-tidy. Для получения дополнительной информации см. Clang-Tidy документация на LLVM.org.
Это то, что я пытался сделать вручную через страницы свойств VS:
Но при запуске анализа файла это не работает.
Итак, как заставить Visual Studio использовать файл конфигурации .clang-tidy
при вызове clang-tidy?
Страницы свойств предназначены для прямой установки проверок clang-tidy (а не пути к файлу .clang-tidy). Visual Studio должна автоматически обнаруживать файл .clang-tidy в вашей рабочей области, если он находится в той же или родительской папке ваших исходных файлов.
Кажется, что Visual Studio может вызывать clang-tidy из каталога за пределами исходного дерева в тех случаях, когда сборка создается вне исходного кода (как это обычно происходит при использовании CMake).
Я нашел небольшой хак вокруг него. По сути, я обманываю Visual Studio, заставляя думать, что я даю ему список проверок, где на самом деле я даю ему путь к файлу конфигурации вместе с любыми аргументами, которые я хочу. (обратите внимание на лишние символы "
).
Это конечно хак. Но все же может служить кому-то.
Вот способ сделать это с помощью CMake:
set_target_properties(MyTarget PROPERTIES
VS_GLOBAL_RunCodeAnalysis false
# Use visual studio core guidelines
VS_GLOBAL_EnableMicrosoftCodeAnalysis false
#VS_GLOBAL_CodeAnalysisRuleSet ${CMAKE_CURRENT_SOURCE_DIR}/foo.ruleset
#VS_GLOBAL_CodeAnalysisRuleSet ${CMAKE_CURRENT_SOURCE_DIR}/foo.ruleset
# Use clangtidy
VS_GLOBAL_EnableClangTidyCodeAnalysis true
VS_GLOBAL_ClangTidyChecks "-* \"\"--config-file=${MY_CLANG_TIDY_CONFIG_PATH} --header-filter=.*"
)
«пока он находится в той же или родительской папке ваших исходных файлов» - это именно проблема при сборке из исходного кода (CMake).