2016-02-08 38 views
7

Jestem w trakcie przenoszenia projektu aktualnie kompilującego się z gcc do clang, i mam kilka ostrzeżeń, których gcc nie wygenerował (-Winconsistent-missing-override). clang-tidy działa w celu naprawienia tych błędów w plikach *.cpp, jednak nie dotyka plików hpp, ponieważ polecenie kompilacji nie zostało znalezione w bazie danych (jak można się spodziewać).Uzyskiwanie dostępu do pliku nagłówkowego

Używam ninja do zbudowania projektu i ninja -t compdb cc cxx > .build/compile_commands.json do wygenerowania bazy danych kompilacji. Próbowałem uruchomić:

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

, aby naprawić błędy. Odmawia dotknąć plików nagłówkowych skarży:

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

Odpowiedz

6

mam to działa przez podanie opcji --header-filter=src/. Co ciekawe poprawki skończył będąc zastosowane kilkakrotnie powodując wyjście tak:

void f() override override override override override; 

Pracowałem wokół to uruchamiając clang-tidy każdego pliku źródłowego oddzielnie. Należy również pamiętać, że <build-path> określony pod numerem -p musi również zawierać konfigurację .clang-format, która ma zostać zastosowana.

To jest mój obecny powtórzenie polecenia:

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

W odniesieniu do „poprawki skończyło się stosować kilka razy”: To dlaczego tam skrypt run-dzyń-schludny który najpierw zbiera poprawki, a następnie stosuje je w trybie one-go * później *. Zobacz http://clang-developers.42468.n3.nabble.com/Clang-tidy-applying-fixes-multiple-times-on-same-file-tp4048842p4049156.html – kfunk

+0

Rozumiem. Nie bardzo dobrze udokumentowane. Jeśli napiszesz to jako odpowiedź lub sugerowaną zmianę, z przyjemnością go zaakceptuję. (Przestałem robić dużo rozwoju języka C++, więc prawdopodobnie go nie przetestuję) – nishantjr