给大伙介绍一个开源工具 AStyle,支持C/C++、C#、JAVA等语言,按照不同的风格格式化代码,也可以称为美化代码。
用这个工具美化出来的代码与我自已的风格几乎一样,我很喜欢这个小工具,也可以很方便的集成到VS里面去。
用法:
AStyle.exe --style=ansi --indent=spaces=4 -M80 -k1 -p -j -D -H -c -w test.cpp
--style=ansi ansi C风格代码
void Foo(bool isFoo)
{
if (isFoo)
{
bar();
}
else
{
anotherBar();
}
}
--indent=spaces=4 缩进用4个空格
-p 在运算符号左右加上空格
if (foo==2)
a=bar((b-c)*a,d--);
becomes:if (foo == 2)
a = bar((b - c) * a, d--);
-j 给每个if增加大括号(#add如何将{换行而不是加在行尾?--style=ansi已经做到了)
if (isFoo)
isFoo = false;
becomes:if (isFoo) {
isFoo = false;
}
-D 在小括号边上增加上一个空格
if (isFoo(a, b))
bar(a, b);
becomes:
if ( isFoo( a, b ) )
bar( a, b );
-H 在c/c++ 关键字的后面增加一个空格
if(isFoo(a, b))
bar(a, b);becomes:
if (isFoo(a, b))
bar(a, b);
-c
把TAB字符替换成空格为什么要把TAB替换成空格?主要是因为各种不同的编辑器对TAB的解释不一样造成的。
有的编辑器把TAB解释成4个空格,有的是8个,还有的是2个。这样会破坏原有的代码的对齐的结构,
因此最好把TAB替换成空格,这样不管在任何编辑器下面代码都是以对齐的风格来显示。
-k1 --align-pointer=type
char *foo1;
char &foo2;becomes (with align-pointer=type):
char* foo1;
char& foo2;
-M# 对定义的参数和变量进行对齐
fooArray[] = { red,
green,
blue };fooFunction(barArg1,
barArg2,
barArg3);
becomes (with larger value):fooArray[] = { red,
green,
blue };fooFunction(barArg1,
barArg2,
barArg3);
-w 对宏进行对齐处理
#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)))
-N namespace 缩进
(7) -n 不生成备份文件,即默认的 .orig文件。
看到上面这么多的美化代码的参数,真的很hi。
AStyle.exe --style=ansi --indent=spaces=4 -M80 -k1 -p -j -D -H -c -w $(ItemFileName)$(ItemExt)
--style=ansi --indent=spaces=4 -M80 -k1 -p -j -H -c -w -N -n $(ItemDir)$(ItemFileName)$(ItemExt)
(#add 适合自己的)
如何集成到VS当中呢?
1. 把AStyle.exe 拷到 “C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\”目录下
2. Tools –> External Tools
如图增加一个外部工具配置,初始目录:如果$(ProjectDir)不行就试 $(TargetDir)
在Tools菜单下面会多出一个Beautify点击它就可以来美化当前的文件 如下图:
总体来说这个工具美化的效果还是很不错的,喜欢的人大家都可以试试。
官方网站: http://astyle.sourceforge.net/
官方下载:http://nchc.dl.sourceforge.net/project/astyle/astyle/astyle%202.02/AStyle_2.02_windows.zip