天天看點

超好用的代碼格式化工具Astyle使用

本軟體适用于C, C++, C++/CLI, Objective‑C, C#, and Java

一、使用流程

1.安裝軟體

linux:apt install astyle,重新開機vscode

windows:下載下傳最新版本,并将exe路徑添加至PATH,重新開機vscode

2.安裝vscode插件Astyle

3.配置

使用:設定->拓展->Astyle->在settings.json中編輯(後附具體配置)

配置示意圖

超好用的代碼格式化工具Astyle使用
"astyle.additional_languages": [
        "c",
        "cpp",
    ],
    "astyle.cmd_options": [
        "--style=allman",
        "--indent=spaces=4",
        "--indent-modifiers",
        "--indent-switches",
        "--indent-cases",
        "--indent-namespaces",
        "--indent-preproc-block",
        "--min-conditional-indent=2",
        "--pad-oper",
        "--pad-header",
        "--unpad-paren",
        "--delete-empty-lines",
        "--align-pointer=name",
        "--align-reference=name",
        "--keep-one-line-statements",
        "--convert-tabs",
        "--close-templates",
        /*"--max-code-length=#", 單行code最大長度
        "--break-after-logical",*/
        "--suffix=none",
        "--lineend=linux",
        "--verbose",
    ],
    "[c]": {
        "editor.defaultFormatter": "chiehyu.vscode-astyle"
    },
    "[cpp]": {
        "editor.defaultFormatter": "chiehyu.vscode-astyle"
    },
           

(配置參考:RT-thread)

具體配置:

1.大括号選項

--style=allman / --style=bsd / --style=break / -A1 :分離大括号風格

int Foo(bool isBar)

{

    if (isBar)

    {

        bar();

        return 1;

    }

    else

        return 0;

}
           

--style=java / --style=attach / -A2 :JAVA風格 ——附加大括号

int Foo(bool isBar) {

    if (isBar) {

        bar();

        return 1;

    } else

        return 0;

}
           

--style=kr / --style=k/r / -A3:Linux風格 —— 開始的大括号與名稱空間、類和函數定義分開。其餘大括号附加到函數内的所有其他内容,包括數組、結構體、枚舉和語句。

int Foo(bool isBar)

{

    if (isBar) {

        bar();

        return 1;

    } else

        return 0;

}
           

--style=stroustrup / -A4:Stroustrup風格 —— 使用了linux大括号,并将大括号的結束頭與結束頭分開(例如:break - closing - headers)。開始的大括号隻從函數定義中斷開。開始的大括号附加到函數中的所有其他内容,包括名稱空間、類、數組、結構、枚舉和語句。這種樣式經常與“attach - closing - while”、tab縮進和5個空格縮進一起使用。

int Foo(bool isBar)

{

    if (isBar) {

        bar();

        return 1;

    }

    else

        return 0;

}
           

--style=whitesmith / -A5:白鐵匠風格 —— 使用破碎的,縮進的括号。Switch塊和類塊縮進以防止以下case語句和c++類修飾符(public, private, protected)的“挂縮進”。

int Foo(bool isBar)

    {

    if (isBar)

        {

        bar();

        return 1;

        }

    else

        return 0;

    }
           

--style=ratliff / --style=banner / -A6:Ratliff風格 —— 使用附加的,縮進的括号。Switch塊和類塊縮進是為了防止下面的case語句和c++類修飾符(public, private, protected)出現“挂縮進”。

int Foo(bool isBar) {

    if (isBar) {

        bar();

        return 1;

        }

    else

        return 0;

    }
           

--style=gnu / -A7:GNU風格 —— 使用斷括号。額外的縮進隻被添加到函數内的塊中。整個塊都是縮進的,而不僅僅是大括号。這種樣式經常用于縮進2個空格。

int Foo(bool isBar)

{

    if (isBar)

        {

            bar();

            return 1;

        }

    else

        return 0;

}
           

--style=linux / --style=knf / -A8:Linux風格 —— 使用Linux大括号。開始的大括号與名稱空間、類和函數定義分開。大括号附加到函數内的所有其他内容,包括數組、結構體、枚舉和語句。最小的條件縮進是一半縮進。如果您想要不同的最小條件縮進,請使用K&R樣式。這種風格最适合大縮進。它經常與縮進8個空格一起使用。也稱為核心範式(KNF)風格,這是在Linux BSD核心中使用的風格。

int Foo(bool isBar)

{

        if (isFoo) {

                bar();

                return 1;

        } else

                return 0;

}
           

--style=horstmann / --style=run-in / -A9:Horstmann風格 —— 使用破括号和插入語句。switch是縮進的,以允許在打開開關塊上磨合。這種樣式經常使用縮進3個空格。

int Foo(bool isBar)

{   if (isBar)

    {   bar();

        return 1;

    }

    else

        return 0;

}
           

--style=1tbs / --style=otbs / -A10:One True Brace 風格 —— 使用linux大括号,并将大括号添加到未加大括号的條件語句中。開始的大括号與名稱空間、類和函數定義分開。大括号附加到函數内的所有其他内容,包括數組、結構體、枚舉和語句。

int Foo(bool isBar)

{

    if (isFoo) {

        bar();

        return 1;

    } else {

        return 0;

    }

}
           

--style=pico / -A11:Pico風格 —— 使用斷開的大括号和帶有附加的閉大括号的run-in語句。右大括号附加到代碼塊的最後一行。開關是縮進的,以允許在打開開關塊上磨合。這種風格意味着保持一行塊和保持一行語句。如果使用了add-大括号,它們将被添加為一行大括号。這種樣式經常用于縮進2個空格。

int Foo(bool isBar)

{   if (isBar)

    {   bar();

        return 1; }

    else

        return 0; }
           

--style=lisp / --style=python / -A12:Lisp風格 —— 使用附加的開括号和閉括号。右大括号附加到代碼塊的最後一行。這種風格意味着保持一行語句,而不是保持一行塊。此樣式不支援單行大括号。如果使用了add-one-line-大括号,它們将被添加為多行大括号。

int Foo(bool isBar) {

    if (isBar) {

        bar()

        return 1; }

    else

        return 0; }
           

--style=google / -A14: 谷歌風格 —— 使用附加的花括号和縮進的類通路修飾符。有關縮進修飾符格式的示例,請參閱縮進修飾符選項。這實際上不是唯一的大括号風格,而是帶有非大括号變體的Java風格。這種樣式經常用于縮進2個空格。

int Foo(bool isBar) {

    if (isBar) {

        bar();

        return 1;

    } else

        return 0;

}
           

--style=vtk / -A15:VTK(可視化工具包)風格 —— 使用破碎、縮進的大括号,除了類、數組、結構、枚舉和函數定義的左大括号。Switch塊縮進是為了防止下面的case語句出現“挂縮進”。

int Foo(bool isBar)

{

    if (isBar)

        {

        bar();

        return 1;

        }

    else

        return 0;

}
           

--style=mozilla / -A16:Mozilla風格 —— 使用linux大括号。開始的大括号與類、結構體、枚舉和函數定義分開。大括号附加到函數中的所有其他内容,包括名稱空間、數組和語句。這種樣式經常與縮進2個空格和——break-return-type一起使用。

int Foo(bool isBar)

{

    if (isBar) {

        bar();

        return 1;

    } else

        return 0;

}
           

2.Tab選項

default indent(如果沒有設定縮進選項,将使用預設選項4個空格(eg::-s4/--indent=spaces=4)。)

void Foo() {

....if (isBar1

............&& isBar2)    // indent of this line can be changed with min-conditional-indent

........bar();

}
           

--indent=spaces / --indent=spaces=# / -s#:每縮進使用#空格(eg::-s3/--indent=spaces=3)。#必須在2到20之間。不指定同default indent

void Foo() {

...if (isBar1

.........&& isBar2)    // indent of this line can be changed with min-conditional-indent

......bar();

}
           

--indent=tab / --indent=tab=# / -t / -t#:使用制表符進行縮進,使用空格進行繼續行對齊。這可以確定無論檢視器的頁籤大小如何,代碼都能正确顯示。将每個縮進當作#空格(例如-t6 /——indent=tab=6)。#必須在2到20之間。如果沒有設定#,将縮進處理為4個空格。

with indent=tab:

void Foo() {

>   if (isBar1

>   ........&& isBar2)    // indent of this line can be changed with min-conditional-indent

>   >   bar();

}

with style=linux, indent=tab=8:

void Foo()

{

>       if (isBar1

>       ....&& isBar2)    // indent of this line can NOT be changed with style=linux

>       >       bar();

}
           

--indent=force-tab / --indent=force-tab=# / -T / -T#:如果可能的話,使用所有制表符縮進。如果連續行不是偶數個制表符,将在末尾添加空格。将每個制表符視為#空格(例如-T6 /——indent=force-tab=6)。#必須在2到20之間。如果沒有設定#,将制表符視為4個空格。

with indent=force-tab:

void Foo() {

>   if (isBar1

>   >   >   && isBar2)    // indent of this line can be changed with min-conditional-indent

>   >   bar();

}
           

--indent=force-tab-x / --indent=force-tab-x=# / -xT / -xT#:這個force-tab選項允許将制表符長度設定為與縮進長度不同的長度。這可能會導緻縮進同時包含制表符和空格。如果可能的話,制表符将用于縮進。如果不能使用制表符縮進,将使用空格代替。此選項設定制表符長度。将每個制表符視為#空格(例如-xT6 /——indent=force-tab-x=6。#必須在2到20之間。如果沒有設定#,将制表符視為8個空格。為了改變縮進長度從預設的4空格選項"indent=force-tab"也必須使用。

with indent=force-tab-x (default tab length of 8 and default indent length of 4):

void Foo() {

....if (isBar1

>       ....&& isBar2)    // indent of this line can be changed with min-conditional-indent

>       bar();

}
           

3.大括号修飾選項

--attach-namespaces / -xn:大括号總是附加在命名空間語句上。

namespace FooName {

...

}
           

--attach-classes / -xc: 大括号總是附加在類語句上。

class FooClass {

...

};
           

--attach-inlines / -xl:所有大括号都附加到類和結構的内聯方法定義(僅c++)

class FooClass

{

    void Foo() {

    ...

    }

};
           

--attach-extern-c / -xk:将大括号附加到帶大括号的extern "C"語句(僅c++)

#ifdef __cplusplus

extern "C" {

#endif

但是函數定義是按照要求的大括号樣式進行格式化的:

extern "C" EXPORT void STDCALL Foo()

{}
           

--attach-closing-while / -xV:将'do-while'語句的'while'附加到右括号。這優先于大括号樣式和break關閉大括号選項。

do

{

    bar();

    ++x;

}

while x == 1;

becomes:

do

{

    bar();

    ++x;

} while x == 1;
           

4.縮進選項

--indent-classes / -C:縮進'class'和'struct'通路修飾符'public:', 'protected:'和'private:'(僅c++)

class Foo

{

public:

    Foo();

    virtual ~Foo();

};

becomes:

class Foo

{

    public:

        Foo();

        virtual ~Foo();

};
           

--indent-modifiers / -xG:縮進'class '和'struct'通路修飾符'public:', 'protected:'和'private:',縮進一半。如果與縮進類一起使用,這個選項将被忽略。(僅c++)

class Foo

{

public:

    Foo();

    virtual ~Foo();

};

becomes:

class Foo

{

  public:

    Foo();

    virtual ~Foo();

};
           

--indent-switches / -S:縮進'switch'塊,以便'case X:'語句在switch塊中縮進。整個case塊是縮進的。

switch (foo)

{

case 1:

    a += 1;

    break;



case 2:

{

    a += 2;

    break;

}

}

becomes:

switch (foo)

{

    case 1:

        a += 1;

        break;



    case 2:

    {

        a += 2;

        break;

    }

}
           

--indent-cases / -K:縮進'case X:'塊從'case X:'頭。不包含在塊中的Case語句不縮進。

switch (foo)

{

    case 1:

        a += 1;

        break;



    case 2:

    {

        a += 2;

        break;

    }

}

becomes:

switch (foo)

{

    case 1:

        a += 1;

        break;



    case 2:

        {

            a += 2;

            break;

        }

}
           

--indent-namespaces / -N:向名稱空間塊添加額外的縮進

namespace foospace

{

class Foo

{

    public:

        Foo();

        virtual ~Foo();

};

}

becomes:

namespace foospace

{

    class Foo

    {

        public:

            Foo();

            virtual ~Foo();

    };

}
           

--indent-after-parens / -xU:在包含開頭圓括号'('或指派'='的行後面縮進,包括函數定義、聲明和傳回語句。

void Foo(bool bar1,

         bool bar2)

{

    isLongFunction(bar1,

                   bar2);



    isLongVariable = foo1

                     || foo2;

}

becomes:

void Foo(bool bar1,

    bool bar2)

{

    isLongFunction(bar1,

        bar2);



    isLongVariable = foo1

        || foo2;

}
           

--indent-continuation=# / -xt#:設定以開始的圓括号'('或指派'='結尾的行的延續縮進,包括函數定義和聲明。它還将修改前面的縮進後括号選項。#的值表示大量的縮進。有效值是從0到4的整數值。如果不使用該選項,則使用預設值1。

isLongVariable =

    foo1 ||

    foo2;



isLongFunction(

    bar1,

    bar2);

becomes (with indent-continuation=3):

isLongVariable =

            foo1 ||

            foo2;



isLongFunction(

            bar1,

            bar2);
           

--indent-labels / -L:向标簽添加額外的縮進,使它們顯示比目前縮進少1個縮進,而不是向左重新整理(預設)。

void Foo() {

    while (isFoo) {

        if (isFoo)

            goto error;

        ...

error:

        ...

        }}

becomes (with indented 'error:'):

void Foo() {

    while (isFoo) {

        if (isFoo)

            goto error;

        ...

    error:

        ...

        }

}
           

--indent-preproc-block / -xW:縮進預處理器塊在大括号級别0,并立即在名稱空間内。對縮進的内容有限制。方法、類、數組等中的塊不會縮進。包含大括号或多行定義語句的塊将不會縮進。沒有此選項,預處理器塊不會縮進。

#ifdef _WIN32

#include <windows.h>

#ifndef NO_EXPORT

#define EXPORT

#endif

#endif

becomes:

#ifdef _WIN32

    #include <windows.h>

    #ifndef NO_EXPORT

        #define EXPORT

    #endif

#endif
           

--indent-preproc-define / -w:縮進以反斜杠結尾的多行預處理器定義。應該與 --convert-tabs一起使用,以獲得正确的結果。做得很好,但不能在模糊預處理定義中執行奇迹。如果沒有這個選項,預處理器語句将保持不變。

#define Is_Bar(arg,a,b) \

(Is_Foo((arg), (a)) \

|| Is_Foo((arg), (b)))

becomes:

#define Is_Bar(arg,a,b) \

    (Is_Foo((arg), (a)) \

     || Is_Foo((arg), (b)))
           

--indent-preproc-cond / -xw:将預處理條件語句縮進到與源代碼相同的級别。

        isFoo = true;

#ifdef UNICODE

        text = wideBuff;

#else

        text = buff;

#endif

becomes:

        isFoo = true;

        #ifdef UNICODE

        text = wideBuff;

        #else

        text = buff;

        #endif
           

--indent-col1-comments / -Y:從第一列開始縮進c++注釋。預設情況下,從第一列開始的c++注釋被假定為注釋輸出代碼,而不是縮進。此選項将允許注釋與代碼一起縮進。

void Foo()\n"

{// comment

    if (isFoo)

        bar();

}

becomes:

void Foo()\n"

{

    // comment

    if (isFoo)

        bar();

}
           

--min-conditional-indent=# / -m#:

設定header由多行組成時添加的最小縮進。這種縮進有助于輕松地将header與後面的指令語句分開。#的值表示縮進的數量,并且是最小值。縮進可能更大,以與前一行的資料對齊。有效值為:

0 - 沒有最小縮進。這些行将與前一行上的括号對齊。

1 - 至少縮進一個額外的縮進。

2 - 縮進至少兩個額外的縮進。

3 - 至少要增加定單的一半。這用于大縮進(例如8)。

預設值是2,兩個額外的縮進。

// default setting makes this non-braced code clear

if (a < b

        || c > d)

    foo++;



// but creates an exaggerated indent in this braced code

if (a < b

        || c > d)

{

    foo++;

}

becomes (when setting --min-conditional-indent=0):

// setting makes this non-braced code less clear

if (a < b

    || c > d)

    foo++;



// but makes this braced code clearer

if (a < b

    || c > d)

{

    foo++;

}
           

--max-continuation-indent=# / -M#:設定#空格的最大長度以縮進延續行。#表示列的數量,且不能小于40或大于120。如果沒有設定,則使用預設值40。此選項将防止延續行向右延伸太遠。設定更大的值将允許代碼進一步向右擴充。

fooArray[] = { red,

         green,

         blue };



fooFunction(barArg1,

         barArg2,

         barArg3);

becomes (with larger value):

fooArray[] = { red,

               green,

               blue };



fooFunction(barArg1,

            barArg2,

            barArg3);

           

4.填充選項

--break-blocks / -f:在标題塊周圍填充空行(e.g. 'if', 'for', 'while'...).

isFoo = true;

if (isFoo) {

    bar();

} else {

    anotherBar();

}

isBar = false;

becomes:

isFoo = true;



if (isFoo) {

    bar();

} else {

    anotherBar();

}



isBar = false;
           

--break-blocks=all / -F:在标題塊周圍填充空行(e.g. 'if', 'for', 'while'...).處理關閉頭檔案塊(e.g. 'else', 'catch')作為獨立塊。

isFoo = true;

if (isFoo) {

    bar();

} else {

    anotherBar();

}

isBar = false;

becomes:

isFoo = true;



if (isFoo) {

    bar();



} else {

    anotherBar();

}



isBar = false;
           

--pad-oper / -p:在運算符周圍插入空格。這也會添加逗号。如果可能的話,行尾注釋将保留在原始列中。注意,沒有取消墊的選項。一旦被填充,它們就保持填充狀态。

if (foo==2)

    a=bar((b-c)*a,d--);

becomes:

if (foo == 2)

    a = bar((b - c) * a, d--);
           

--pad-comma / -xg:在逗号後插入空格。如果使用pad-oper,則不需要加。行尾注釋将保留在原始列中。

if (isFoo(a,b))

    bar(a,b);

becomes:

if (isFoo(a, b))

    bar(a, b);
           

--pad-paren / -P:在括号的外部和内部都插入空格填充。行尾注釋将保留在原始列中。

if (isFoo((a+2), b))

    bar(a, b);

becomes:

if ( isFoo ( ( a+2 ), b ) )

    bar ( a, b );
           

--pad-paren-out / -d:隻在括号外面插入空格填充。空的括号不會加襯墊。如果可能的話,行尾注釋将保留在原始列中。這可以用下面的unpad-paren來删除不需要的空間。

if (isFoo((a+2), b))

    bar(a, b);

becomes:

if (isFoo ( (a+2), b) )

    bar (a, b);
           

--pad-first-paren-out / -xd:在序列的第一個圓括号周圍隻在外部插入空格填充。空的括号不會加襯墊。行尾注釋将保留在原始列中。可以用unpad-paren删除不需要的空間。如果與pad‑paren或pad‑paren‑out一起使用,該選項将被忽略。

if (isFoo((a+2), b))

    bar(a, b);

becomes:

if (isFoo ((a+2), b))

    bar (a, b);
           

--pad-paren-in / -D:隻在裡面插入圓括号周圍的空格。行尾注釋将保留在原始列中。這可以用下面的unpad-paren來删除不需要的空間。

if (isFoo((a+2), b))

    bar(a, b);

becomes:

if ( isFoo( ( a+2 ), b ) )

    bar( a, b );
           

--pad-header / -H:在标題之間插入空格(e.g. 'if', 'for', 'while'...)和下面的括号。行尾注釋将保留在原始列中。可以使用unpad-paren删除不需要的空格。

if(isFoo((a+2), b))

    bar(a, b);

becomes:

if (isFoo((a+2), b))

    bar(a, b);
           

--unpad-paren / -U:在内外兩邊去掉多餘的填充空間。行尾注釋将保留在原始列中。

if ( isFoo( ( a+2 ), b ) )

    bar ( a, b );

becomes (with no padding option requested):

if(isFoo((a+2), b))

    bar(a, b);
           

--delete-empty-lines / -xe:删除函數或方法中的空行。函數或方法之外的空行不會被删除。如果與break-blocks或break-blocks=all一起使用,它将删除除由break-blocks選項添加的行之外的所有行。

void Foo()

{



    foo1 = 1;



    foo2 = 2;



}

becomes:

void Foo()

{

    foo1 = 1;

    foo2 = 2;

}
           

--fill-empty-lines / -E:用前一行的空白填充空行。

--align-pointer=type   / -k1

--align-pointer=middle / -k2

--align-pointer=name   / -k3

将指針或引用操作符(*、&或^)附加到變量類型(左)或變量名稱(右),或将其放在類型和名稱(中間)之間。如果可能的話,将保留類型和名稱之間的空格。這個選項适用于C/ c++、c++ /CLI和c#檔案。要單獨格式化引用,請使用以下align-reference選項。

char* foo1;

char & foo2;

string ^s1;

becomes (with align-pointer=type):

char* foo1;

char& foo2;

string^ s1;

char* foo1;

char & foo2;

string ^s1;

becomes (with align-pointer=middle):

char * foo1;

char & foo2;

string ^ s1;

char* foo1;

char & foo2;

string ^s1;

becomes (with align-pointer=name):

char *foo1;

char &foo2;

string ^s1;
           

--align-reference=none   / -W0

--align-reference=type   / -W1

--align-reference=middle / -W2

--align-reference=name   / -W3

該選項将引用與指針分開對齊。指針不會被這個選項改變。如果指針和引用要對齊,請使用前面的對齊指針選項。選項align-reference=none不會改變引用對齊方式。其他選項與對齊指針相同。(僅C/ C++、c++ /CLI和C#檔案)。

char &foo1;

becomes (with align-reference=type):

char& foo1;

char& foo2;

becomes (with align-reference=middle):

char & foo2;

char& foo3;

becomes (with align-reference=name):

char &foo3;
           

5.格式化選項

--break-closing-braces / -y:當與 --style=java, --style=kr, --style=stroustrup, --style=linux, 或者--style=1tbs同時使用,會打破關閉頭檔案 (e.g. 'else', 'catch', ...) 。結束标題花括号總是與其他樣式一起斷開。

void Foo(bool isFoo) {

    if (isFoo) {

        bar();

    } else {

        anotherBar();

    }}

becomes (a broken 'else'):

void Foo(bool isFoo) {

    if (isFoo) {

        bar();

    }

    else {

        anotherBar();

    }

}
           

--break-elseifs / -e:将"else if"标題組合分隔成單獨的行。如果使用keep-one-line語句,則此選項無效,“else if”語句将保持原樣。

如果不使用此選項,"else If "标題組合将被放置在單行上。

if (isFoo) {

    bar();

}

else if (isFoo1()) {

    bar1();

}

else if (isFoo2()) {

    bar2;

}

becomes:

if (isFoo) {

    bar();

}

else

    if (isFoo1()) {

        bar1();

    }

    else

        if (isFoo2()) {

            bar2();

        }
           

--break-one-line-headers / -xb:從位于同一行的語句中斷開一行标題(e.g. 'if', 'while', 'else', ...)如果語句用大括号括起來,大括号将根據要求的大括号樣式進行格式化。如果使用keep-one-line-statements,則多語句行不會被斷開。如果使用keep-one-line-blocks,并且報頭包含在塊中,則一行塊不會被打斷。

void Foo(bool isFoo)

{

    if (isFoo1) bar1();



    if (isFoo2) { bar2(); }}

becomes:

void Foo(bool isFoo)

{

    if (isFoo1)

        bar1();



    if (isFoo2) {

        bar2();

    }

}
           

--add-braces / -j:向不帶大括号的單行條件語句添加大括号(例如:“如果”,“對”,“而”……)。大括号将根據要求的大括号樣式添加。如果沒有要求樣式,将附加大括号。如果使用keep-one-line-statements,則不會将大括号添加到多語句行中。如果使用keep-one-line-blocks,則不會将大括号添加到一行塊中。如果與--add-one-line-braces一起使用,結果将是一行大括号。

if (isFoo)

    isFoo = false;

becomes:

if (isFoo) {

    isFoo = false;

}
           

--add-one-line-braces / -J:添加一行大括号到不加大括号的一行條件語句 (e.g. 'if', 'for', 'while'...)。該選項意味--keep-one-line-blocks,并且不會打破一行塊。

if (isFoo)

    isFoo = false;

becomes:

if (isFoo)

    { isFoo = false; }
           

--remove-braces / -xj:從條件語句中删除括号(例如:“如果”,“對”,“而”……)。語句必須是單行上的單個語句。如果還使用--add-braces或--add-one-line-braces,結果将是添加大括号。大括号不會從"One True Brace Style"中删除,--style=1tbs。

if (isFoo)

{

    isFoo = false;

}

becomes:

if (isFoo)

    isFoo = false;
           

--break-return-type      / -xB

--break-return-type-decl / -xD

從函數名中分離傳回類型。這兩個選項用于函數定義(-xB)和函數聲明或簽名(-xD)。如與--attach-return-type一起使用,結果将破壞傳回類型。

void Foo(bool isFoo);

becomes:

void

Foo(bool isFoo);
           

--attach-return-type      / -xf

--attach-return-type-decl / -xh

将傳回類型附加到函數名。這兩個選項用于函數定義(-xf)和函數聲明或簽名(-xh)。它們的目的是撤消--break-return-type選項。如果與--break-return-type一起使用,結果将打破傳回類型。

void

Foo(bool isFoo);

becomes:

void Foo(bool isFoo);
           

--keep-one-line-blocks / -O:不要打斷一行代碼塊。

if (isFoo)

{ isFoo = false; cout << isFoo << endl; }

remains unchanged.
           

--keep-one-line-statements / -o:不要打破複雜語句和駐留在一行中的多個語句。

if (isFoo)

{

    isFoo = false; cout << isFoo << endl;

}

remains unchanged.
           

--convert-tabs / -c:将Tab轉換為行非縮進部分中的空格。插入的空格數将保持制表符的間距。使用每個頁籤的空格的目前設定。如果在更改每個頁籤的空格時使用convert-tabs,可能不會産生預期的結果。制表符不會在引号内替換。

--close-templates / -xy:關閉模闆定義結束尖括号之間的空白。

Stack< int, List< int > > stack1;

becomes:

Stack< int, List< int >> stack1;
           

--remove-comment-prefix / -xp:在以一行開頭的多行注釋中删除前面的'*'。如果末尾有'*',也會被删除。小于一個縮進的文本縮進為一個縮進。不改變大于一個縮進的文本。一行開頭沒有'*'的多行注釋被縮進為一個縮進,以保持一緻性。這可以略微修改注釋掉代碼塊的縮進。包含所有'*'的行保持不變。注釋關閉符'*/'将删除額外的空格。

/*

* comment line 1

* comment line 2

*/

becomes:

/*

    comment line 1

    comment line 2

*/
           

--max-code-length=#   / -xC#

--break-after-logical / -xL

如果代碼超過#字元,選項max‑code‑length将斷行。有效值為50到200。沒有邏輯條件的行會在邏輯條件(||,&&,…)、逗号、圓括号、分号或空格處中斷。有些代碼不會被破壞,比如注釋、引号和數組。如果與keep‑one‑line‑blocks或add-one-line-braces一起使用,block不會被破壞。如果與keep‑one‑line‑statements一起使用,當行超過最大長度時,語句将以分号分隔。如果在最大代碼長度内沒有可用的斷點,則該行将在最大代碼長度之後的第一個可用斷點處被中斷。預設情況下,邏輯條件将放在新行的第一個位置。選項break‑after‑logical将導緻邏輯條件被放在前一行的最後。如果沒有最大代碼長度,這個選項就不起作用。

if (thisVariable1 == thatVariable1 || thisVariable2 == thatVariable2 || thisVariable3 == thatVariable3)

    bar();

becomes:

if (thisVariable1 == thatVariable1

        || thisVariable2 == thatVariable2

        || thisVariable3 == thatVariable3)

    bar();

becomes (with break‑after‑logical):

if (thisVariable1 == thatVariable1 ||

        thisVariable2 == thatVariable2 ||

        thisVariable3 == thatVariable3)

    bar();
           

--mode=c

--mode=cs

--mode=java

縮進一個C類型、c#或Java檔案。C類型檔案有C、c++、c++ /CLI和Objective-C。該選項通常從每個檔案的檔案擴充名設定。您可以使用此條目覆寫該設定。它将用于所有檔案,而不管檔案擴充名是什麼。它允許格式化程式識别特定于語言的文法,如c++類、模闆和關鍵字。