Как заставить Visual Studio использовать файл конфигурации .clang-tidy при вызове clang-tidy?

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?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
60
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Страницы свойств предназначены для прямой установки проверок clang-tidy (а не пути к файлу .clang-tidy). Visual Studio должна автоматически обнаруживать файл .clang-tidy в вашей рабочей области, если он находится в той же или родительской папке ваших исходных файлов.

«пока он находится в той же или родительской папке ваших исходных файлов» - это именно проблема при сборке из исходного кода (CMake).

Elad Maimoni 18.02.2023 23:00

Кажется, что 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=.*" 
)

Другие вопросы по теме