目录
前沿
对于有强迫症的博主来说,别人的代码如果不符合自己的审美标准,会去逐行修改代码,这就造成了大量的时间浪费在修改代码格式上面,突然有一天发现了一个自动修改代码格式的工具--Astyle,觉得很好用,在这里分享给大家。
1 AStyle简介
以下是百度百科对Astyle的解释:
《Astyle是一个用来对C/C++代码进行格式化的 Eclipse 插件,可在 Eclipse CDT 环境中使用。该插件基于 Artistic Style 开发。可嵌入MDK,Source Insight,UE等软件使用》
1.1 为什么要使用Astyle工具
当我们打开其他人编写的代码的时候,有强迫症的读者会去修改代码的格式,比如对齐、空行、条件语句后面增加空格等,如果工程很大,那么会花费我们巨大的人力时间,对工程及个人是很不友好的,所以代码格式调整工具就孕育而生了。
1.2 Astyle下载
这里提供Astyle-v3.4-x64版本的下载文件,其他版本请到网上自行下载,这里不多介绍下载。这里以Astyle-v3.4-x64进行讲解。
下载好了之后,我们打开doc文件夹的《astyle.html》文件,这个文件有对Astyle的所有解释,但是我们使用不到这么多,我们下面简单讲解一下常用的配置参数以及怎么在其他IDE工具上集成Astyle工具。
1.3 Astyle常用配置参数
这里只是针对嵌入式C语言的代码的常用配置参数,其他编程语言的常用配置参数请自行参考doc文件夹的《astyle.html》文件进行修改。
参数 | 分类 | 说明 |
-A1 | Brace Style Options | 每个括号都单独占一行,成对括号对齐,内容统一向后缩进 |
-s4 | Tab Options | 缩进4个空格 |
-xV | Brace Modify Options | 将“do-while”语句的右“while”附加到右大括号。这优先于大括号样式和打断-闭合大括号选项。 |
-S | Indentation Options | 缩进“switch”块,以便在switch块中缩进“case X:”语句。 |
-xW | Indentation Options | 条件编译缩进 |
-Y | Indentation Options | 注释缩进 |
-M# | Indentation Options | 设置缩进连续行的最大#个空格 |
-f | Padding Options | 条件语句空行填充 |
-xg | Padding Options | 逗号空格填充 |
-H | Padding Options | 条件语句空格填充 |
-U | Padding Options | 去除括号多余空格 |
-c | Formatting Options | 将tab键替换成空格键 |
-n | Other Options | 不保留原始数据备份 |
常用命令参数:-A1 -s4 -xV -S -xW -Y -M120 -f -xg -H -U -c -n
1.4 Astyle常用配置参数详解
1.4.1 -A参数(括号独占)详解
括号使用-A1参数,该参数主要特点是:每个括号都单独占一行,成对括号对齐,内容统一向后缩进。
int Foo(bool isBar) { if (isBar) { bar(); return 1; } else return 0; }
1.4.2 -s4参数(缩进4个空格)详解
Tab键使用-s4参数,该参数特点是:缩进使用4个空格键。
void Foo() { ....if (isBar1 ............&& isBar2) // indent of this line can be changed with min-conditional-indent ........bar(); }
1.4.3 -xV参数(do-while括号)详解
本条目只涉及到do...while参数,do..while缩进采用-xV参数,该参数特点为:将“do-while”语句的右“while”附加到右大括号。这优先于大括号样式和打断-闭合大括选项。
do { bar(); ++x; } while x == 1;becomes:
do { bar(); ++x; } while x == 1;
1.4.4 -S参数(switch缩进)详解
缩进“switch”块,以便在switch块中缩进“case X:”语句。整个案例块缩进。
switch (foo) { case 1: a += 1; break; case 2: { a += 2; break; } }becomes:
switch (foo) { case 1: a += 1; break; case 2: { a += 2; break; } }
1.4.5 -xW参数(条件编译缩进)详解
在大括号级别0处缩进预处理器块,并立即在命名空间中缩进。缩进的内容有限制。方法、类、数组等中的块不会缩进。包含大括号或多行定义语句的块将不会缩进。如果没有此选项,预处理器块将不会缩进。
#ifdef _WIN32 #include <windows.h> #ifndef NO_EXPORT #define EXPORT #endif #endifbecomes:
#ifdef _WIN32 #include <windows.h> #ifndef NO_EXPORT #define EXPORT #endif #endif
1.4.6 -Y参数(注释缩进)详解
从第一列开始缩进C++注释。默认情况下,从第一列开始的C++注释被认为是注释掉的代码,而不是缩进的。此选项将允许注释与代码一起缩进。
void Foo()\n" { // comment if (isFoo) bar(); }becomes:
void Foo()\n" { // comment if (isFoo) bar(); }
1.4.7 -M#参数(连续行最大空格缩进)详解
设置缩进连续行的最大#个空格。#表示列数,且不得小于40或大于120。如果未设置任何值,则将使用默认值40。此选项将防止连续线向右延伸过远。设置更大的值将允许代码进一步向右扩展。
fooArray[] = { red, green, blue }; fooFunction(barArg1, barArg2, barArg3);becomes (with larger value):
fooArray[] = { red, green, blue }; fooFunction(barArg1, barArg2, barArg3);
1.4.8 -f参数(条件语句空行填充)详解
在条件语句"if"、"for"、"while"...等语句上下填充空行。
isFoo = true; if (isFoo) { bar(); } else { anotherBar(); } isBar = false;becomes:
isFoo = true; if (isFoo) { bar(); } else { anotherBar(); } isBar = false;
1.4.9 -xg参数(逗号空格填充)详解
在逗号后插入空格填充。
if (isFoo(a,b)) bar(a,b);becomes:
if (isFoo(a, b)) bar(a, b);
1.4.10 -H参数(条件语句空格填充)详解
在条件语句"if"、"for"、"while"...等语句后插入空格。
if(isFoo((a+2), b)) bar(a, b);becomes:
if (isFoo((a+2), b)) bar(a, b);
1.4.11 -U参数(去除括号多余空格)详解
把括号中的多余空格去除。
if ( isFoo( ( a+2 ), b ) ) bar ( a, b );becomes (with no padding option requested):
if(isFoo((a+2), b)) bar(a, b);
-U参数不和条件语句空格填充(-H)冲突,比如设置了这两条指令,那么条件语句后面的空格也会保留。
if ( isFoo( ( a+2 ), b ) ) bar ( a, b );becomes (with no padding option requested):
if (isFoo((a+2), b)) bar(a, b);
1.4.12 -c参数(tab转空格)详解
此命令是将tab键转换成空格键,但是和-s4命令重复,也可以两个命令都加上,也可以只加上-s4命令或此命令。
1.4.13 -n参数(不保留原始数据备份)详解
顾名思义,就是每次格式化之后的代码,修改前的文件不被保留。
2 Astyle在keil上的应用
下载好的astyle3.4-x64.rar进行解压,找到《astyle.exe》文件,记住位置。
2.1 Astyle加载到keil工具栏中
打开keil软件,选择tools-->Customize Tools Menu。
2.1.1 单个文件格式修改
按下图操作,并填写常用命名参数:"!E" -A1 -s4 -xV -S -xW -Y -M120 -f -xg -H -U -c -n
注意:"!E",这里表示获得当前焦点且正在编辑的文件
2.1.2 批量文件格式修改
按下图操作,并填写常用命名参数:"$E*.c" -A1 -s4 -xV -S -xW -Y -M120 -f -xg -H -U -c -n
注意:"$E*.c",表示查找当前文件所在的文件夹所有的*.c文件
如果要修改*.h文件,相应的命令参数为:"$E*.h" -A1 -s4 -xV -S -xW -Y -M120 -f -xg -H -U -c -n
2.2 代码格式调整演示
2.2.1 单个文件格式修改演示
点击Tools-->astyle格式单个文件,查看到文件已经被格式化了,并且在《Build Output》窗口能够查看运行命令信息。
2.2.2 批量文件格式修改演示
点击Tools-->astyle格式多个文件,查看到当前文件所在的文件夹中的所有*.c文件已经被格式化了,并且在《Build Output》窗口能够查看运行命令信息(main.c文件已经在单个文件格式修改演示中被修改,所以这里不会被修改)。