Astyle编程语言格式化工具的中文说明
Artistic Style(Astyle) 概述
Artistic Style是一个开源的源代码格式化工具。
主页地址:http://astyle.sourceforge.net/,它可以应用在C、C++、Objective-C、C#、Java等程序语言中。
说明文档:http://astyle.sourceforge.net/astyle.html中为对使用它的详细介绍。
WIN版本: http://sourceforge.net/projects/astyle/files/ 下载windows下文件,直接解压就可使用
常用选项参数说明:(详见官方文档)
基本设定如下,详细设定请再往下翻阅
-s4 : 表示缩进4个空格,默认配置;
-S: 表示switch中case语句的缩进;
-N: 表示命名空间namespace内的缩进;
-U: 表示括号内的两头的参数和括号之间不留空格;
-H: 表示”if”、”for”、”while”等关键字右边增加一个空格;
-k1: *和&在表示指针和引用类型时,和类型名称并紧,和变量名之间留空格;
-p: 在运算符号(操作符)左右加上空格;
-P: 在括号两边插入空格;-d只在括号外面插入空格,-D只在里面插入;
-j: 给每个”if”、”for”、“while”增加大括号;
-D: 在小括号边上增加一个空格;
-c: 将TAB替换成空格;
-M: 对定义的参数和变量进行对齐;
-w: 对宏进行对齐处理;
--style=ansi: ANSI标准的文件格式,对”{”、”}”另启一行;
--indent=spaces=4: 缩进采用4个空格;
--add-brackets: 对”if”、”for”、“while”单行的语句增加括号;
--convert-tabs: 强制转换TAB为空格;
--indent-preprocessor: 将preprocessor(#define)等这类预定义的语句,如果有多行时前面填充对齐(是对单语句多行进行填充);
--align-pointer=type: *、&这类字符靠近类型;
--align-pointer=name: *、&这类字符靠近变量名字;
--pad-oper: 在操作符号两边增加空格字符;
--pad--header: 在关键字”if”、”for”、”while”等后面增加空格;
--indent-switches: switch case的代码也按照标准缩进方式缩进;
--indent-col1-comments: 如果函数开始后面(“{”后面)第一行是注释,也进行缩进;
--indent=tab: 显示说明使用Tab;
Option's Format:
Long options (starting with '--') must be written one at a time.
Short options (starting with '-') may be appended together.
Thus, -bps4 is the same as -b -p -s4.
风格:
--style=allman OR --style=bsd OR -A1
allman风格
Allman style formatting/indenting.
Broken brackets.
--style=java OR -A2
java风格
Java style formatting/indenting.
Attached brackets.
--style=k&r OR --style=k/r OR -A3
k&r风格
Kernighan & Ritchie style formatting/indenting.
Linux brackets.
--style=stroustrup OR -A4
stroustrup风格
Stroustrup style formatting/indenting.
Stroustrup brackets.
--style=whitesmith OR -A5
whitesmith风格
Whitesmith style formatting/indenting.
Broken, indented brackets.
Indented class blocks and switch blocks.
--style=banner OR -A6
banner风格
Banner style formatting/indenting.
Attached, indented brackets.
Indented class blocks and switch blocks.
--style=gnu OR -A7
gnu风格
GNU style formatting/indenting.
Broken brackets, indented blocks, indent is 2 spaces.
--style=linux OR -A8
linux风格
GNU style formatting/indenting.
Linux brackets, indent is 8 spaces.
Tab and Bracket Options:
tab选项:
默认tab是4个空格.
--indent=spaces=# OR -s#
默认行缩进为4个空格,可以将#替换为缩进量
--indent=tab OR --indent=tab=# OR -t OR -t#
行缩进用tab,默认tab长度与4个空格相等
--indent=force-tab=# OR -T#
优先采用空格缩进
大括号选项:
If no brackets option is set,
the brackets will not be changed.
--brackets=break OR -b
大括号与前一块隔开为两行
Break brackets from pre-block code (i.e. ANSI C/C++ style).
--brackets=attach OR -a
大括号前一个与上一行在同一行
Attach brackets to pre-block code (i.e. Java/K&R style).
--brackets=linux OR -l
定义块 和 函数块中的大括号都被处理
Break definition-block brackets and attach command-block
brackets.
--brackets=stroustrup OR -u
只处理函数中的大括号
Attach all brackets except function definition brackets.
Indentation options:
--indent-classes OR -C
缩进类定义中的public private protected标签.
Indent 'class' blocks, so that the inner 'public:',
'protected:' and 'private: headers are indented in
relation to the class block.
--indent-switches OR -S
缩进switch中的case块,case和switch不在同一列
Indent 'switch' blocks, so that the inner 'case XXX:'
headers are indented in relation to the switch block.
--indent-cases OR -K
缩进case下面的语句
Indent case blocks from the 'case XXX:' headers.
Case statements not enclosed in blocks are NOT indented.
--indent-blocks OR -G
给块添加缩进,包括大括号
Add extra indentation entire blocks (including brackets).
--indent-brackets OR -B
给大括号添加缩进
Add extra indentation to '{' and '}' block brackets.
--indent-namespaces OR -N
缩进命名空间定义行
Indent the contents of namespace blocks.
--indent-labels OR -L
标签缩进
Indent labels so that they appear one indent less than
the current indentation level, rather than being
flushed completely to the left (which is the default).
--indent-preprocessor OR -w
多行宏定义缩进
Indent multi-line #define statements.
--max-instatement-indent=# OR -M#
跨行缩进,比如函数定义中的参数处在多行,那么参数缩进到同一列
Indent a maximal # spaces in a continuous statement,
relative to the previous line.
--min-conditional-indent=# OR -m#
Indent a minimal # spaces in a continuous conditional
belonging to a conditional header.
Formatting options:
--break-blocks OR -f
空行分隔没有关系的块,类,标签(不包括函数块)
Insert empty lines around unrelated blocks, labels, classes, ...
--break-blocks=all OR -F
空行分隔无关系的块,包括else catch等
Like --break-blocks, except also insert empty lines
around closing headers (e.g. 'else', 'catch', ...).
--break-closing-brackets OR -y
else catch左边的大括号与else catch分隔
Break brackets before closing headers (e.g. 'else', 'catch', ...).
Use with --brackets=attach, --brackets=linux,
or --brackets=stroustrup.
--break-elseifs OR -e
else if()分隔为两行
Break 'else if()' statements into two different lines.
--delete-empty-lines OR -x
删除多余空行
Delete empty lines within a function or method.
It will NOT delete lines added by the break-blocks options.
--pad-oper OR -p
操作符两端插入一个空格
Insert space paddings around operators.
--pad-paren OR -P
括号内外都插入空格
Insert space padding around parenthesis on both the outside
and the inside.
--pad-paren-out OR -d
括号外部插入空格
Insert space padding around parenthesis on the outside only.
--pad-paren-in OR -D
括号外部插入空格
Insert space padding around parenthesis on the inside only.
--unpad-paren OR -U
移除括号两端多余空格
Remove unnecessary space padding around parenthesis. This
can be used in combination with the 'pad' options above.
--keep-one-line-statements OR -o
一行中的多个申明不分隔 int x;int y;int z不被分为3行
Don't break lines containing multiple statements into
multiple single-statement lines.
--keep-one-line-blocks OR -O
大括号中的单行语句不被拆分
Don't break blocks residing completely on one line.
--convert-tabs OR -c
tab转换为空格
Convert tabs to the appropriate number of spaces.
--fill-empty-lines OR -E
块间空行的换行符前插入一个空格
Fill empty lines with the white space of their
previous lines.
--mode=c
处理c文件
Indent a C or C++ source file (this is the default).
--mode=java
处理jave文件
Indent a Java source file.
--mode=cs
处理c#文件
Indent a C# source file.
Other options:
--suffix=####
指定备份文件的后缀
Append the suffix #### instead of '.orig' to original filename.
--suffix=none OR -n
不备份文件
Do not retain a backup of the original file.
--options=####
指定从####文件读取选项信息
Specify an options file #### to read and use.
--options=none
禁止从文件读取选项信息
Disable the default options file.
Only the command-line parameters will be used.
--recursive OR -r OR -R
递归处理子目录
Process subdirectories recursively.
--exclude=####
排除不处理的文件夹
Specify a file or directory #### to be excluded from processing.
--errors-to-stdout OR -X
Print errors and help information to standard-output rather than
to standard-error.
--preserve-date OR -Z
不修改时间
The date and time modified will not be changed in the formatted file.
--verbose OR -v
输出详细处理信息
Verbose mode. Extra informational messages will be displayed.
--formatted OR -Q
输出信息中只包括被修改的文件信息
Formatted display mode. Display only the files that have been formatted.
--quiet OR -q
忽略所有错误
Quiet mode. Suppress all output except error messages.
--version OR -V
输出astyle版本
Print version number.
--help OR -h OR -?
帮助信息
Print this help message.
Default options file:
Artistic Style looks for a default options file in the
following order:
1. The contents of the ARTISTIC_STYLE_OPTIONS environment
variable if it exists.
从ARTISTIC_STYLE_OPTIONS环境变量读取选项
2. The file called .astylerc in the directory pointed to by the
HOME environment variable ( i.e. $HOME/.astylerc ).
从/home文件夹中的.astylerc文件读取选项
3. The file called astylerc in the directory pointed to by the
USERPROFILE environment variable ( i.e. %USERPROFILE%\astylerc ).
从USERPROFILE下的astylerc文件读取选项信息
If a default options file is found, the options in this file
will be parsed BEFORE the command-line options.
Long options within the default option file may be written without
the preliminary '--'.
--options的用法:
我的在source insight中的设置为 AStyle.exe --options=D:\TOOLS\AStyle\astyle.cfg %f
astyle.cfg内容为:
-s4 -SKFxpUcnlaC
#井号表示是注释
#-s4 行缩进用4个空格
#-S switch 与case不同列,case缩进
#-K 缩进case下面的语句
#-F 空行分隔无关块
#-x 删除多余空行
#-p 操作符两端出入空格
#-U 移除括号两端多余空格
#-c tab转空格
#-n 不做备份
#-l 处理定义和函数中的大括号
#-a 大括号保留在上一行