2016-02-08 25 views
7

Sono in procinto di spostare un progetto attualmente compilando con gcc su clang, e ho un sacco di avvertenze che gcc non ha generato (-Winconsistent-missing-override). clang-tidy funziona per correggere questi errori nei file *.cpp, tuttavia non tocca i file hpp perché non è stato trovato nel database un comando di compilazione (come prevedibile).Ottenere clang-ordine per correggere i file di intestazione

Sto utilizzando ninja per creare il progetto e ninja -t compdb cc cxx > .build/compile_commands.json per generare il database di compilazione. Ho provato a correre:

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

per correggere gli errori. Si rifiuta di toccare i file di intestazione lamentarsi:

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

risposta

6

ho capito di lavoro specificando l'opzione --header-filter=src/. correzioni È interessante notare che ha finito per essere applicato più volte causando output come questo:

void f() override override override override override; 

ho lavorato intorno a questo eseguendo clang-tidy su ogni file sorgente separatamente. Inoltre, lo <build-path> specificato con -p deve contenere anche la configurazione .clang-format per lo stile da applicare.

Questo è il mio attuale iterazione del comando:

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

Per quanto riguarda le "correzioni finito per essere applicato più volte": Ecco perché c'è uno script di run-clang-ordinata che raccoglie prima le correzioni e poi li applica in one-go * dopo *. Vedi http://clang-developers.42468.n3.nabble.com/Clang-tidy-applying-fixes-multiple-times-on-same-file-tp4048842p4049156.html – kfunk

+0

Vedo. Non molto ben documentato però. Se lo scrivi come risposta o modifica suggerita, sarò più che felice di accettarlo. (Ho smesso di fare molto sviluppo in C++, quindi probabilmente non lo testerò comunque) – nishantjr