如何向 clang 格式添加功能?

Posted

技术标签:

【中文标题】如何向 clang 格式添加功能?【英文标题】:How to add capabilities to clang-format? 【发布时间】:2020-11-22 04:44:21 【问题描述】:

Clang 有助于让每个人都对公司的编码标准保持诚实,但它并不能完全涵盖所有情况,并且会做出 (IMO) 错误选择,而不是忽略某些情况。例如(来自另一个有类似问题的帖子):

z1 = sqrt(x*x + y*y);

被clang-format“扭曲”成

z2 = sqrt(x * x + y * y);

当然符合公司标准,但 z1 表达式一目了然。我希望 clang-format ignore (不添加或删除)二进制运算符周围的空格。我没有看到 any 设置二进制运算符周围的空格。不管我是否愿意,它都会这样做。

那么,我可以添加处理新参数的功能吗? SpaceAroundBinaryOperator: true|false|ignore? 即,有经验的 C++ 程序员是否可以访问 clang 格式的代码,而不必花费一周或更长时间来弄清楚代码?有什么建议吗?

【问题讨论】:

【参考方案1】:

那么,我可以添加处理新参数的功能吗...

对于有经验的 C++ 程序员来说,clang 格式的代码是否可以访问,而无需花费一周或更长时间来弄清楚代码?

有这个:https://clang.llvm.org/docs/ClangFormatStyleOptions.html#adding-additional-style-options,但那里没有太多信息。

还有这个:https://clang.llvm.org/docs/LibFormat.html

也许这个:https://clang.llvm.org/docs/#design-documents

但我认为您真的必须深入了解source code。有很多代码(因为clang-format 代码是整个 clang C++ 编译器和相关工具 LLVM 项目的一部分),所以我认为您需要一周或更长时间才能弄清楚。只是我的猜测......

【讨论】:

以上是关于如何向 clang 格式添加功能?的主要内容,如果未能解决你的问题,请参考以下文章

将 clangs 自定义 int 大小功能添加到 gcc 中吗?

如何在 gcc/clang 中的错误和警告之间添加换行符/边框

Rails - 如何向 url 助手添加格式?

如何在打开函数的大括号之前使 clang-format 添加新行?

vim代码格式化插件clang-format

如何向导航抽屉项目添加长按功能?