代码风格格式化--Astyle

Astyle是一个用来对C/C++代码进行格式化

文档: Artistic Style 3.1

安装

1
$sudo apt install astyle

预定风格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
default brace style
If no brace style is requested, the opening braces will not be
changed and closing braces will be broken from the preceding line.

--style=allman OR --style=bsd OR --style=break OR -A1
Allman style formatting/indenting.
Broken braces.

--style=java OR --style=attach OR -A2
Java style formatting/indenting.
Attached braces.

--style=kr OR --style=k&r OR --style=k/r OR -A3
Kernighan & Ritchie style formatting/indenting.
Linux braces.

...

--style=gnu OR -A7
GNU style formatting/indenting.
Broken braces, indented blocks.

--style=linux OR --style=knf OR -A8
Linux style formatting/indenting.
Linux braces, minimum conditional indent is one-half indent.

--style=horstmann OR --style=run-in OR -A9
Horstmann style formatting/indenting.
Run-in braces, indented switches.

--style=1tbs OR --style=otbs OR -A10
One True Brace Style formatting/indenting.
Linux braces, add braces to all conditionals.

--style=google OR -A14
Google style formatting/indenting.
Attached braces, indented class modifiers.

使用

1
astyle --style=linux -n ./*.c
  • --style=linux : linux风格缩进
  • -n : 不保存备份
1
>astyle --style=linux --indent=force-tab=4 --convert-tabs --pad-oper --unpad-paren --break-blocks=all --delete-empty-lines *.c *.h

递归格式化

1
astyle --style=linux --recursive *.c,*.h

必须中间加,

自定义规则

--style=linux的基础上修改,只做必要改动

缩进Tab

默认tab是4个空格.

1
--indent=force-tab=#  OR  -T#

优先采用空格缩进, 这样配置后同vim中的tab缩进配置4个空格相同,格式化后的代码相当于vim中的gg=G

switch缩进

默认

操作符两边加空格

1
--pad-oper  OR  -p

删除括号()两边多余空格

1
--unpad-paren  OR  -U

空行分隔没有关系的块,类,标签(不包括函数块)

1
--break-blocks  OR  -f

空行分隔无关系的块,包括else catch等

1
--break-blocks=all  OR  -F

删除多余空行

1
--delete-empty-lines  OR  -x

Tab转换为空格

1
--convert-tabs  OR  -c

参考

  • Astyle编程语言格式化工具的中文说明