2016-07-27 6 views
0

Ich habe ein Programm, das Astyle verwendet, um den Code in 1TBS zu formatieren. Also, wenn ich einen Code wie dieserAstyle - wie formatieren Zustand ohne Klammern zu 1TBS

if(condition) 
    func(a, b); 

es ändert sich zu diesem

if(condition) { 
    func(a, b); 
} 

Das Problem ist, wenn die Parameter in der aufgerufenen Funktion in mehrere Zeilen aufgeteilt werden, wie dies :

if(condition) 
    func(a, 
     b); 

Dann Astyle ist nicht in der Lage, geschweifte Klammern hinzuzufügen, auch wenn ich versuche, zu forcieren e ihn mit --add-brackets. Ist es möglich, es anders zu machen?

Mein Befehl sieht nun wie folgt aus:

astyle --style=1tbs --add-brackets test.c 
+0

Vielleicht clang-Format kann dies tun? – EOF

+0

@EOF vielleicht kann es, aber ich würde lieber mit Astyle bleiben, wenn möglich. Unser Programm ist schon ohne weitere Pakete recht groß. – Eenoku

Antwort

0

Dieses ein wenig verworren erscheinen, aber wenn Sie eine Menge von Quellen haben und Klammern hinzuzufügen, ist eine Operation, die Sie nur einmal benötigen, das folgende Schema könnte Arbeit.

Sie können mit astyle bleiben, aber Sie benötigen uncrustify vorübergehend sowie ein Skript, das ich schrieb whatstyle.

Ersetzen Sie in den folgenden Schritten test1.c durch Ihre Quellen und behalten Sie eine Sicherung Ihrer Quellen, wie sie geändert werden.

Teach astyle den aktuellen Stil Ihrer Quellen

whatstyle.py -f astyle --mode resilient --output astylerc test1.c 

Teach uncrustify den aktuellen Stil Ihrer Quellen

whatstyle.py -f uncrustify --output uncrustify.cfg test1.c 

uncrustify per eMail immer Klammern hinzufügen

(egrep -v mod_full_brace_if < uncrustify.cfg ; echo "mod_full_brace_if = force") \ 
    > uncrustify_addbrace.cfg 

Reformierte Ifs Ihre Quellen mit so wenig Stiländerungen wie möglich mit unverschmutzten

uncrustify --replace -c uncrustify_addbrace.cfg test1.c 

Die geschweiften Klammern wurden jetzt in den ursprünglichen Stil mit Astyle umgewandelt.

ARTISTIC_STYLE_OPTIONS=astylerc astyle test1.c 

Jetzt sollen Sie Ihre Quellen sehen fast das gleiche wie zuvor, außer für die hinzugefügten Klammern obwohl es könnte mehr Änderungen durch die Hin-und-her-Stil Transformation sein.