AStyle(全稱(chēng)Artistic Style)是一個(gè)C、C++、C#和Java源代碼縮進(jìn)、格式化和美化工具。官方下載是命令行版程序,可以整合到開(kāi)發(fā)IDE環(huán)境中去使用,甚至也可以整合到Notepad++之類(lèi)的編輯器中。
官方地址: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"文件夾下,具體路徑根據(jù)所安裝的VS路徑進(jìn)行更改,這是專(zhuān)門(mén)放置Visual Studio外部工具的文件夾;
2.打開(kāi)Visual Studio 2008,在菜單欄→"工具"→"外部工具",點(diǎn)擊"添加",在下面的編輯框里分別填入信息:
標(biāo)題:AStyle格式化工具
命令:D:/Program Files/Microsoft Visual Studio 9.0/Common7/Tools/AStyle.exe
參數(shù):-A1pNYk3 $(ItemFileName)$(ItemExt)
初始化目錄:$(ItemDir)
√使用輸出窗口

3.就可以在"工具"菜單欄下看到"AStyle格式化工具"選項(xiàng)了,要格式化文檔前,先保存文檔再調(diào)用"AStyle格式化工具"選項(xiàng),這時(shí),會(huì)彈出"是否要重新加載它"的詢(xún)問(wèn)框,可在"工具"→"選項(xiàng)"→"環(huán)境"→"文檔"→"自動(dòng)加載更改"打鉤。

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


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