2014-09-30 16 views
30

Esiste un'opzione per il formato clang per aggiungere le parentesi a tutte le istruzioni if ​​()/do/while ecc.?Il formato clang può aggiungere parentesi a una riga se le istruzioni ecc.

esempio

if(i == 42) 
    std::cout << "You found the meaning of life\n"; 
else 
    std::cout << "Wrong!\n"; 

a

if(i == 42) 
{ 
    std::cout << "You found the meaning of life\n"; 
} 
else 
{ 
    std::cout << "Wrong!\n"; 
} 

Utilizzando

$ clang-format --version 
clang-format version 3.6.0 
+0

non ho trovato alcuna opzione per questo in una rapida scansione dei (http: //clang.llvm .org/docs/ClangFormatStyleOptions.html) –

+0

@BaummitAugen Non ho potuto neanche - ma la descrizione di cosa Le opzioni sono molto vaghe IMHO – Adrian

risposta

18

clang-ordinata possono apportare modifiche al codice sintattiche utilizzando FIXITS

clang-tidy YOUR_FILE.cpp -fix -checks="readability-braces-around-statements" -- COMPILE_OPTIONS 

Aggiornamento:

clang-tidy è un po 'uno strumento pesante per questo in quanto necessita di opzioni di compilazione per analizzare il file, purtroppo il formato clang (a partire dalla v3.9) non aggiungerà le parentesi.

COMPILE_OPTIONS sarebbe il percorsi di inclusione, ecc che si utilizza per compilare il file con, vale a dire -std=c++14 -stdlib=libc++ -O2 -I.

Se si dispone di un file compile_options.json da CMake allora si può passare il percorso della directory è contenuto in a clang- ordinata e cercherà le opzioni di compilazione appropriate per il file: [. opzioni Clang-Format Style]

clang-tidy YOUR_FILE.cpp -fix -checks="readability-braces-around-statements" -p COMPILE_OPTIONS_DIR 
+1

È possibile eseguirlo senza creare un database di compilazione? Diciamo che volevo solo eseguire il controllo della leggibilità, senza cercare errori di compilazione. Chiedo perché voglio modificare singoli file indipendentemente dall'intero progetto. Quando provo a farlo, viene visualizzato "Errore durante il tentativo di caricare un database di compilazione" e "In esecuzione senza contrassegni". Penso che si tratti di ignorare il controllo di leggibilità, poiché non aggiunge le parentesi graffe come avrei desiderato . –

+0

Per dare un esempio concreto, dire che il mio file ha '#include" ../ header.h "' ma sto modificando il file in una directory senza 'header.h' nella directory padre. È possibile utilizzare ancora clang-tidy in questo scenario? –

+0

Ho aggiornato la mia risposta con informazioni extra in quanto non si adatta perfettamente a un commento. – jbcoe