Получение clang-tidy для исправления файлов заголовков

Я в процессе перемещения проекта, который сейчас компилируется с помощью gcc, чтобы clang, и имеют кучу предупреждений, которые gcc не сгенерировал (-Winconsistent-missing-override). clang-tidy работает для исправления этих ошибок в файлах *.cpp, однако он не касается файлов hpp, потому что команда компиляции не найдена в базе данных (как и следовало ожидать).

Я использую ninja для создания проекта и ninja -t compdb cc cxx > .build/compile_commands.json для создания базы данных компиляции. Я пробовал работать:

clang-tidy-3.6 -p .build/      \
      $(find src/ -name *.cpp) \
      $(find src/ -name *.hpp) \
      --checks=misc-use-override --fix

чтобы исправить ошибки. Он отказывается касаться файлов заголовков, жалующихся:

Skipping .../src/header/file.hpp. Compile command not found.

Ответ 1

Я получил его, указав опцию --header-filter=src/. Интересные исправления в конечном итоге были применены несколько раз, вызывая выход следующим образом:

void f() override override override override override;

Я работал над этим, запустив clang-tidy в каждом исходном файле отдельно. Также обратите внимание, что <build-path>, указанный с помощью -p, также должен содержать конфигурацию .clang-format для стилизации, которая будет применяться.

Это моя текущая итерация команды:

find src/ -name '*.cpp' -exec \
     clang-tidy-3.6 -p . --header-filter=src/ {}
               --checks=misc-use-override --fix

Ответ 2

Будьте осторожны при правильном использовании "-header-filter". Перед заголовком нет двух символов "минус"! В отличие от ответа в nishantjr.

Как показано здесь: http://releases.llvm.org/3.9.0/tools/clang/tools/extra/docs/clang-tidy/index.html

Это все еще верно в Clang-Tidy 9.0.