Написание определенной проверки Clang
Я пытаюсь реализовать свою маленькую пользовательскую проверку, например, пытаясь пройтись по этому уроку (который немного устарел).
У меня есть несколько проблем:
- После того, как я клонировал репозитории, реализовал проверку и запустил cmake, цели сборки отличаются от учебника
- После сборки и создания проекта я даже не знаю, что мне следует запускать, чтобы выполнить мою проверку в файле или в проекте.
Спасибо вперед за вашу помощь!
3 ответа
Я решил проблему цели сборки, которая заключалась в том, что цель check-clang-tools отсутствовала. В структуре файла cmake, на llvm/tools/clang/tools
уровень, в CMakeLists.txt
там была пропущенная строка, которую я должен добавить: add_clang_subdirectory(clang-tools-extra)
Решение проблемы исполнения:
- Убедитесь, что
somedir/llvm/build/bin
добавлен в вашPATH
- Тогда вам нужно выполнить
llvm/tools/clang/tools/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py
fileyouwanttocheck.cpp -checks='-*,your-check'
или же
llvm/tools/clang/tools/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py
project_folder_you_want_to_check -checks='-*,your-check'
Что ж, вместо использования учебника, который, как вы признаете, устарел, как насчет использования учебника, который является частью официальной документации?
http://clang.llvm.org/extra/clang-tidy/
что я должен запустить, чтобы выполнить мою проверку в файле или в проекте.
Запустите исполняемый файл clang-tidy с правильными параметрами (для получения более подробной информации см. Вышеупомянутую документацию)
$ clang-tidy test.cpp -checks=-*,your-custom-check-name
-*
отключает все проверки по умолчанию, так что это будет запускать только пользовательские проверки.
Я знаю, что этот вопрос старый, но я только что столкнулся с той же проблемой и хотел опубликовать свое исправление:
- Перейдите к своему
build_ninja
каталог. - Бегать
cmake -DLLVM_ENABLE_PROJECTS=clang;clang-tools-extra -GNinja ..\llvm
(Это инструктируетcmake
построить обаclang
и ) - Бегать
ninja check-clang-tools
(При этом выполняются все тесты дляclang-tools-extra
)