2014-09-30 4 views
30

Gibt es eine Option für das clang-Format, um geschweifte Klammern zu allen if()/do/while-Anweisungen usw. hinzuzufügen?Kann clang-Format geschweifte Klammern zu einzelnen Zeilen hinzufügen, wenn Anweisungen usw.

zB

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

zu

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

Mit

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

ich nicht finden eine Option für diese in einem schnellen Scan der (http: //clang.llvm .org/docs/ClangFormatStyleOptions.html) –

+0

@BaummitAugen konnte ich auch nicht - aber die Beschreibung von was so mir der Optionen tun ist sehr vage IMHO – Adrian

Antwort

18

Klirren-ordentlich syntaktischen Änderungen am Code vornehmen können Fixits

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

Aktualisiert:

Klirren-ordentlich ist ein bisschen ein Schwergewichts-Werkzeug für das, wie es Kompilierungsoptionen muss die Datei leider Klirren-Format (ab v3.9) Klammern hinzuzufügen, wird nicht analysieren.

COMPILE_OPTIONS wäre die Pfade enthalten etc, dass Sie die Datei mit kompilieren verwenden, dh -std=c++14 -stdlib=libc++ -O2 -I.

Wenn Sie eine Datei aus compile_options.json CMake haben, dann können Sie den Pfad des Verzeichnisses übergeben es in enthalten ist, clang- ordentlich und es wird die entsprechenden Kompilierungsoptionen für die Datei nachschlagen: [. Clang-Format Style-Optionen]

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

Ist es möglich, dies ohne eine Kompilierungsdatenbank zu erstellen? Sprich ich wollte nur die Lesbarkeitsprüfung durchführen, ohne nach Kompilierfehlern zu suchen. Ich frage, weil ich einzelne Dateien unabhängig vom gesamten Projekt bearbeiten möchte. Wenn ich dies versuche, bekomme ich 'Fehler beim Versuch, eine Kompilierungsdatenbank zu laden' und' Ohne Flags laufen '. Ich denke, dass es die Lesbarkeitsprüfung ignoriert, da es die Klammern nicht wie gewünscht hinzufügt . –

+0

Um ein konkretes Beispiel zu geben, sagen wir, dass meine Datei '#include" ../ header.h "' hat, aber ich bearbeite die Datei in einem Verzeichnis ohne 'header.h' im übergeordneten Verzeichnis. Ist es möglich, in diesem Szenario noch Clang-Tidy zu verwenden? –

+0

Ich habe meine Antwort mit zusätzlichen Informationen aktualisiert, da sie nicht sauber in einen Kommentar passt. – jbcoe