好,阿杰 👍
下面我来详细讲一下 AStyle (Artistic Style) ——这是一个跨平台的 代码自动格式化工具,支持 C/C++/C#/Java 等语言,非常适合团队统一编码风格。
🔹 AStyle 简介
- 全称:Artistic Style
- 作用:自动调整代码缩进、对齐、花括号位置、空格规则等
- 支持语言:C, C++, C#, Java
- 跨平台:Linux / Windows / macOS
- 安装方式:
- Linux:
sudo apt install astyle
- macOS:
brew install astyle
- Windows: 下载 exe
- Linux:
🔹 基本用法
astyle [选项] <文件>
示例:
astyle hello.c
👉 会生成 hello.c.orig
备份文件,并在 hello.c
中写入格式化结果。
🔹 常用选项
1. 缩进相关
--style=ansi
/--style=kr
/--style=java
/--style=allman
设置花括号风格(K&R、Java、Allman 等)。astyle --style=allman main.c
--indent=spaces=4
→ 使用 4 个空格缩进--indent=tab
→ 使用制表符缩进--indent=force-tab=4
→ 强制用制表符表示缩进级别
2. 空格控制
--pad-oper
→ 运算符两边加空格--pad-header
→if/while/for
与(
之间加空格--unpad-paren
→ 去掉括号内多余空格
3. 花括号位置
--add-brackets
→ 自动给单行语句加上{}
--break-blocks
→ 在函数之间插入空行--break-closing-brackets
→ 把}
单独放一行
4. 换行规则
--max-code-length=80 --break-after-logical
👉 超过 80 列自动换行,并尽量在逻辑运算符后换行
5. 文件处理
--suffix=none
→ 不生成.orig
备份文件--recursive
→ 递归处理目录下所有文件
🔹 示例效果
源代码:
int main(){if(x>0){y=1;}else{y=2;}}
命令:
astyle --style=allman --indent=spaces=4 --pad-oper test.c
结果:
int main()
{
if (x > 0)
{
y = 1;
}
else
{
y = 2;
}
}
🔹 常见组合配置
astyle --style=kr --indent=spaces=4 --pad-oper --pad-header --suffix=none --recursive *.c
👉 K&R 风格,4 空格缩进,运算符/括号间加空格,不生成备份文件,递归格式化所有 .c
文件。
🔹 在项目中使用
- 配置文件
.astylerc
(可放项目根目录)--style=allman --indent=spaces=4 --pad-oper --pad-header --suffix=none
然后直接执行:astyle <文件>
- 结合 Git Hook(在 commit 前自动格式化)
# .git/hooks/pre-commit #!/bin/sh astyle --options=.astylerc --recursive "*.c" "*.h" git add .
🔹 总结
- AStyle 适合小型/中型团队,简单高效。
- 如果要支持更多语言,可用
clang-format
(支持 C++/Java/JavaScript/Objective-C 等)。 - 推荐做法:在项目里放
.astylerc
配置 + Git Hook 自动运行,统一代码风格。
已为你整理好 AStyle 代码格式化速查表 PDF ✅
这里是下载链接:
📂 astyle_cheatsheet.pdf
发表回复