AStyle(全稱Artistic Style)是一個C、C++、C#和Java源代碼縮進、格式化和美化工具。官方下載是命令行版程序,可以整合到開發IDE環境中去使用,甚至也可以整合到Notepad++之類的編輯器中。
官方地址:http://astyle.sourceforge.net/
本地下載:http://download.csdn.net/source/3323725
在這里介紹AStyle整合到VS2008的方法,以及如何使用。
1.首先下載AStyle,將其bin文件夾下的"AStyle.exe"解壓到"D:/Program Files/Microsoft Visual Studio 9.0/Common7/Tools"文件夾下,具體路徑根據所安裝的VS路徑進行更改,這是專門放置Visual Studio外部工具的文件夾;
2.打開Visual Studio 2008,在菜單欄→"工具"→"外部工具",點擊"添加",在下面的編輯框里分別填入信息:
標題:AStyle格式化工具
命令:D:/Program Files/Microsoft Visual Studio 9.0/Common7/Tools/AStyle.exe
參數:-A1pNYk3 $(ItemFileName)$(ItemExt)
初始化目錄:$(ItemDir)
√使用輸出窗口

3.就可以在"工具"菜單欄下看到"AStyle格式化工具"選項了,要格式化文檔前,先保存文檔再調用"AStyle格式化工具"選項,這時,會彈出"是否要重新加載它"的詢問框,可在"工具"→"選項"→"環境"→"文檔"→"自動加載更改"打鉤。

4.要為"AStyle格式化工具"選項設置快捷鍵的話,在"工具"菜單上選擇"選項",從"環境"頁中選擇"鍵盤",在"顯示命令包含"列表中鍵入"工具",在"命令名"列表中滾動到相應的"外部命令 n"項。在這里我是第9個外部命令項,所以找到"工具.外部命令9",在"按快捷鍵"處,鍵入要設置的快捷鍵,點擊"分配"。如下圖所示:


AStyle參數如下:
①Ansi/Allman/Bsd風格(格式縮進從下一行開始括號)
int Foo(bool isBar) { if (isBar) { bar(); return 1; } else return 0; } |
②Java風格(格式縮進直接緊接后面括號)
int Foo(bool isBar) { if (isBar) { bar(); return 1; } else return 0; } |
③Kernighan_Ritchie風格(格式縮進使用Linux方式括號)
int Foo(bool isBar) { if (isBar) { bar(); return 1; } else return 0; } |
④Stroustrup風格(格式縮進使用stroustrup方式括號,縮進使用5個空格)
int Foo(bool isBar) { if (isBar) { bar(); return 1; } else return 0; } |
⑤Whitesmith風格(格式縮進使用下一行且縮進的括號)
int Foo(bool isBar) { if (isBar) { bar(); return 1; } else return 0; } |
⑥Banner風格(格式縮進使用直接緊接和縮進的括號)
int Foo(bool isBar) { if (isBar) { bar(); return 1; } else return 0; } |
⑦GNU風格(格式縮進使用下一行括號,語句塊括號縮進兩個空格)
int Foo(bool isBar) { if (isBar) { bar(); return 1; } else return 0; } |
⑧Linux風格(格式縮進使用Linux方式括號,語句塊里面縮進8個空格)
int Foo(bool isBar) { if (isBar) { bar(); return 1; } else return 0; } |
⑨Horstmann風格(格式縮進使用horstman方式,括號緊接語句塊)
int Foo(bool isBar) { if (isBar) { bar(); return 1; } else return 0; } |
⑩1tbs/otbs風格(格式縮進使用Linux方式括號,自動補全單行語句塊括號)
int Foo(bool isBar) { if (isBar) { bar(); return 1; } else { return 0; } } |
⑾pico風格
int Foo(bool isBar) { if (isBar) { bar(); return 1; } else return 0; }
|
⑿lisp/python風格
int Foo(bool isBar) { if (isBar) { bar() return 1; } else return 0; }
|
也可以自定義格式化參數:
①制表和括號選項
參數命令 |
參數說明 |
default indent option |
默認4個空格 |
--indent=spaces / --indent=spaces=# / -s# |
指定#個空格,#在1~20之間 |
--indent=tab / --indent=tab=# / -t# |
使用制表符,指定#個空格(1~20) |
--indent=force-tab / --indent=force-tab=# / -T#
|
強制使用制表符,指定#個空格,#在1~20之間 |
default brackets option |
默認不改變括號
|
--brackets=break / -b |
括號改為下行( e.g. ANSI C / C++ style ) |
--brackets=attach / -a |
括號在語句后( e.g. Java / K&R style ) |
--brackets=linux / -l |
括號如linux風格 |
--brackets=stroustrup / -u |
括號如stroustrup風格 |
--brackets=horstmann / -g |
括號如horstmann 風格 |
②縮進選項
參數命令 |
參數說明 |
--indent-classes / -C |
縮進class和struct塊后面的public等 |
--indent-switches / -S |
縮進switch塊后面的case塊 |
--indent-cases / -K |
縮進case塊后面的括號 |
--indent-brackets / -B |
括號縮進 |
--indent-blocks / -G |
括號縮進,函數縮進
|
--indent-namespaces / -N |
命名空間后縮進 |
--indent-labels / -L |
額外的標簽縮進 |
--indent-preprocessor / -w |
多行反斜杠定義縮進 |
--indent-col1-comments / -Y |
允許注釋跟隨代碼一起縮進 |
--max-instatement-indent=# / -M# |
在連續聲明中縮進最大#個空格(#小于80,默認為40) |
--min-conditional-indent=# / -m# |
在多行中設置最小縮進(#小于40,默認為當前兩倍縮進) |
③填充選項
參數命令 |
參數說明 |
--break-blocks / -f |
在循環語句前后加空行 |
--break-blocks=all / -F |
在循環語句前后、else、catch前加空行 |
--pad-oper / -p |
運算符前后加空格 |
--pad-paren / -P
|
在括號內外都加上空格 |
--pad-paren-out / -d
|
在括號外加上空格 |
--pad-paren-in / -D
|
在括號內加上空格 |
--pad-header / -H
|
只在括弧頭部添加一個空格 |
--unpad-paren / -U
|
移除括號內外的空格 |
--delete-empty-lines / -x
|
刪除函數方法里多余的空行 |
--fill-empty-lines / -E
|
以空格對齊填充前一行空行 |
④格式化選項
參數命令 |
參數說明 |
--break-closing-brackets / -y
|
讓else語句塊下起一行 |
--break-elseifs / -e |
讓else if 語句拆開縮進 |
--add-brackets / -j |
自動補充括號,默認在條件語句后緊接括號 |
--add-one-line-brackets / -J |
自動補充括號,并且保持括號與語句在一行 |
--keep-one-line-statements / -o
|
維持一行里的多條語句不變 |
--keep-one-line-blocks / -O |
不破壞一行里面的塊 |
--convert-tabs / -c |
轉換TAB 為空格 |
--align-pointer=type / -k1 --align-pointer=middle / -k2 --align-pointer=name / -k3 |
使指針或者引用符靠近變量類型 使指針或者引用符在變量類型和變量名稱中間 使指針或者引用符靠近變量名稱 |
--mode=c --mode=cs --mode=java |
指定為C/C++代碼格式化 指定為C#代碼格式化 指定為JAVA 代碼格式化 |
參數命令樣式,請參考Artistic Style 說明文檔:
http://astyle.sourceforge.net/astyle.html
posted on 2011-10-11 15:50
老馬驛站 閱讀(969)
評論(0) 編輯 收藏 引用 所屬分類:
c++