好,阿杰 👍
下面我来详细讲一下 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

🔹 基本用法

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-headerif/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 文件。


🔹 在项目中使用

  1. 配置文件 .astylerc(可放项目根目录) --style=allman --indent=spaces=4 --pad-oper --pad-header --suffix=none 然后直接执行: astyle <文件>
  2. 结合 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