astyle是一个用来对C/C++代码进行格式化的 Eclipse 插件,可在 Eclipse CDT 环境中使用。该插件基于 Artistic Style 开发。可嵌入MDK,Source Insight,UE等软件使用。在ubuntu环境中,可以直接通过命令行来使用。
sudo apt-get install astyle
astyle [OPTIONS] File1 File2 File3 [...]
astyle [OPTIONS] < Original > Beautified
例如:
astyle --style=ansi main.c
(1) -f
在两行不相关的代码之间插入空行。
(2) -p
在操作符两边插入空格,如=、+、-等。
如:int a=10*60;
处理后变成int a = 10 * 60;
(3) -P
在括号两边插入空格。另,-d只在括号外面插入空格,-D只在里面插入。
如:input_data ("aaa");
处理后变成input_data ( "aaa" );
(4) -U
移除括号两边不必要的空格。
如:input_data ( "aaa" );
处理后变成input_data ("aaa");
(5) -V
将Tab替换为空格。
(1) 单个文件--缺省美化
astyle --style=ansi Form1.cs
(2) 单个文件--更改缩进2个空格
astyle --style=ansi --indent=spaces=2 Form1.cs
缺省缩进一个TAB,也可以显式说明使用Tab,如下:
astyle --style=ansi --indent=tab Form1.cs
(3) 处理多个文件--有限个
astyle --style=ansi Form1.cs Form2.cs
(4) 批量处理多个文件--无限个
for /R ./ %f in (*.cs) do astyle --style=ansi "%f"
说明:/R表明遍历一个目录树,后面紧跟的路径是根,缺省为当前目录。
本例中,根为./表示当前目录,命令等价于:
for /R %f in (*.cs) do astyle --style=ansi "%f"
作用是从(目录树根)当前目录开始,查找所有java文件,包含子目录中的文件;然后交给astyle处理。
当然,目录树根也可以使用绝对路径,下面的命令查找C盘所有的java文件并处理。
for /R c:/ %f in (*.cs) do astyle --style=ansi "%f"
astyle包含了以下几种预定义风格,只需在参数中简单指定即可使用:
--style=ansi:ANSI 风格格式和缩进
int main()
{
int flag = 0;
printf("hello world\n");
if(flag == 1)
{
printf("true\n");
}
else
{
printf("false\n");
}
}
--style=kr :Kernighan&Ritchie 风格格式和缩进
int main()
{
int flag = 0;
printf("hello world\n");
if(flag == 1) {
printf("true\n");
} else {
printf("false\n");
}
}
--style=linux :Linux 风格格式和缩进
int main()
{
int flag = 0;
printf("hello world\n");
if(flag == 1) {
printf("true\n");
} else {
printf("false\n");
}
}
--style=gnu :GNU 风格格式和缩进
int main()
{
int flag = 0;
printf("hello world\n");
if(flag == 1)
{
printf("true\n");
}
else
{
printf("false\n");
}
}
--style=java :Java 风格格式和缩进
int main() {
int flag = 0;
printf("hello world\n");
if(flag == 1) {
printf("true\n");
} else {
printf("false\n");
}
}