在參與團隊的開發的時候,由於平臺和編寫代碼的工具的不同等等問題,經常會遇到代碼格式非常混亂的情況,嚴重影響了代碼的閱讀效率。
後來發現了一款比較好的工具——“astyle”。
astyle這個工具可以將現有的代碼格式轉換爲指定的風格,當你將亂七八糟的代碼用astyle轉換一下之後,就會感覺整個世界都清靜了……
一、如何獲取
astyle是一個開放源碼的項目,支持C/C++、C#和java的代碼格式化
SourceForge地址:http://sourceforge.net/projects/astyle/
我的Github拷貝:https://github.com/fatedier/fatedier-tools/tree/master/astyle
二、編譯
直接寫一個Makefile編譯下源碼,我的Github的拷貝里有寫好的Makefile,直接用gmake命令編譯一下就可以用了。
三、示例
./astyle--style=ansi test.cpp
執行之後會提示
Formatted xxx/test.cpp
astyle會在當前目錄下生成一個備份文件,以.orig結尾,例如“test.cpp.orig”。
而 test.cpp 就已經轉換爲了 ansi 代碼風格了。
四、常用選項
注:使用 --help 選項可以查看astyle的幫助文檔
1、style風格設置
常用的代碼風格主要有三種:ansi和k&r以及java
(1) --style=allman OR --style=ansi OR --style=bsd OR --style=break OR -A1
例如:
int Foo()
{
if (isBar)
{
bar();
return 1;
}
else
{
return 0;
}
}
(2) --style=kr OR --style=k&r OR --style=k/r OR -A3
例如:
int Foo()
{
if (isBar) {
bar();
return 1;
}else {
return 0;
}
}
(3) --style=java OR --style=attach OR -A2
例如:
int Foo() {
if (isBar) {
bar();
return 1;
}else {
return 0;
}
}
2、Tab選項
默認是使用4個空格替換一個tab。
(1) --indent=spaces=# OR -s#
指定用幾個空格替換一個tab,例如 --indent=spaces=8 ,指定用8個空格替換一個tab。
(2) --indent=tab OR --indent=tab=# OR -t OR -t#
指定縮進使用tab,=#同上,指定一個tab佔幾個空格,不說明的話默認是4個。
3、遞歸處理
--recursive OR -r OR -R
可以遞歸處理所有子目錄的文件。
4、排除不處理的文件
--exclude=####
指定哪些文件或者文件夾不需要進行處理。
5、指定配置文件
--options=####
可以指定讀取某個文件的內容作爲參數選項。