Skip to content

[Feature] 对代码格式化工具进行确认 #10391

Closed

Description

@BernardXiong

Describe problem solved by the proposed feature

目前有clang-format,也有as.sh,需要确认下两者风格是否一致?如不一致,需要进行调整,确保一致:

https://github.com/RT-Thread/rt-thread/blob/master/.clang-format

https://github.com/RT-Thread/rt-thread/blob/master/tools/as.sh

Describe your preferred solution

No response

Describe possible alternatives

No response

Activity

  1. Rbb666 commented on Jun 12, 2025

    @Rbb666
    Member
    方面 AStyle (as.sh) clang-format 是否一致
    大括号风格 Allman(大括号独占一行) 自定义,大多数 BraceWrapping 设置将大括号放在新行(如 AfterFunction: true、AfterControlStatement: Always) 是
    缩进 4 个空格 4 个空格(IndentWidth: 4) 是
    制表符 vs. 空格 空格(--convert-tabs) 空格(UseTab: Never) 是
    指针对齐 对齐到变量名(int* ptr) 右对齐(int* ptr,PointerAlignment: Right) 是
    运算符间距 运算符两侧加空格(--pad-oper) 赋值运算符两侧加空格(SpaceBeforeAssignmentOperators: true);非赋值运算符由 BreakBeforeBinaryOperators: NonAssignment 决定 部分一致
    控制语句括号前间距 if、for 等后加空格(--pad-header) 控制语句括号前加空格(SpaceBeforeParens: ControlStatements) 是
    括号内间距 括号内无多余空格(--unpad-paren) 括号内无空格(SpacesInParens: Never) 是
    换行符 LF(--lineend=linux) 推导为 LF(LineEnding: DeriveLF) 是
  2. Ryan-CW-Code commented on Jun 12, 2025

    @Ryan-CW-Code
    Contributor

    赞,统一代码格式化工具可太有用了,强推clang-format
    很多bsp内部也有clang-format配置文件,到时候可以清理一波。
    clang-format完善后很有必要对整个仓库遍历格式化一遍

  3. Ryan-CW-Code commented on Jun 12, 2025

    @Ryan-CW-Code
    Contributor

    最好是也能引入clang-tidy

  4. a1012112796 commented on Jun 12, 2025

    @a1012112796
    Contributor

    也可以加上 .editorconfig, 可以用于统一特定文件的缩进方式。

  5. BernardXiong commented on Jun 14, 2025

    @BernardXiong
    MemberAuthor

    运算符间距

    请帮忙对这个进行统一吧。未来可以考虑只保留一个,都处于一致的工具、环境下,这样不会产生二义性,谢谢。

  6. dongly commented on Jun 15, 2025

    @dongly
    Contributor

    建议只保留 clang-format

  7. kurisaW commented on Sep 9, 2025

    @kurisaW
    Member

    这里提供了一个AStyle CI,效果是会针对每个PR触发一次评论(仅一次),然后生成一个链接直接跳转到fork仓库的workflow界面,用户只需要设置格式化的分支以及需要排除格式化的文件或路径,就可以实现由Github bot自动加一笔format commit到当前PR下,个人认为AStyle的格式化效果挺不错的,后面可以深度定制:

    演示PR:

    AStyle workflow效果:

    Image

    Github bot提交的格式化commit:

  8. Ryan-CW-Code commented on Sep 10, 2025

    @Ryan-CW-Code
    Contributor

    AStyle 在现代 IDE 中的支持度相对较弱,像 VS Code 或 CLion 都需要额外安装插件和应用程序才能使用。
    clang-format现代IDE都原生支持,与 GitHub Actions、Git hooks、CI/CD 也能深度集成,clang-format的规则参数应该比AStyle多很多,由llvm社区官方维护。
    主要感觉RT-Thread 作为国内领先的实时操作系统,应当在工具链和开发流程上积极拥抱现代化技术栈,保持创新能力。

    最终目标是统一代码风格,无论选择哪种工具,都是很好的。

  9. kurisaW commented on Sep 10, 2025

    @kurisaW
    Member

    AStyle 在现代 IDE 中的支持度相对较弱,像 VS Code 或 CLion 都需要额外安装插件和应用程序才能使用。 clang-format现代IDE都原生支持,与 GitHub Actions、Git hooks、CI/CD 也能深度集成,clang-format的规则参数应该比AStyle多很多,由llvm社区官方维护。 主要感觉RT-Thread 作为国内领先的实时操作系统,应当在工具链和开发流程上积极拥抱现代化技术栈,保持创新能力。

    最终目标是统一代码风格,无论选择哪种工具,都是很好的。

    可以的,我再看看clang-format的效果

  10. kurisaW commented on Sep 11, 2025

    @kurisaW
    Member

    clang-format相比较astyle,在规则参数上确实丰富的多,并且最新的clang-format v18版本还支持本地.clang-format-ignore文件的过滤规则,最早我看主线上已经提供了一版.clang-format,并且配套了对应的脚本用于排除构建format_ignore.py,用户需要在指定目录下添加.ignore_format.yml

    那么我这边建议是:

    • 统一使用clang-format
    • 排除格式化选择clang-format支持的.clang-format-ignore机制;并清除掉主仓下现有的format_ignore.py及排除脚本.ignore_format.yml
    • 使用workflow CI方式支持用户仅页面点击方式就能自动追加format commit,这里提交了一份PR

    下面是一个比较贴合RT-Thread编码风格的.clang-format脚本:

  11. ComerLater commented on Oct 25, 2025

    @ComerLater
    Contributor

    建议只是保留.ignore_format,目前可选配置也很强大

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions