如何设置clang格式注释实用程序,以免碰到多行Doxygen注释?

问题描述 投票:3回答:1

我正在尝试将clang-format引入我们正在使用的几个项目(C和C ++),但是我很难以我想要的方式使其格式化多行Doxygen注释。

所有注释具有相同的格式:

/*! @brief  Some text
 *
 *  Some more text
 *  
 *  @verbatim
 *
 *  A very long line of text that exceeds the clang-format column width but should not be touched
 *
 *  @endverbatim
 */

我想让clang格式不保留逐字记录块,而不要重排它们。我正在使用clang-format-6.0

关闭ReflowComments是不可选项,因为非doxygen注释必须由clang格式处理

我尝试了CommentPragmas配置项中的各种正则表达式,但无济于事:

  • @verbatim(.*\n)*.*@endverbatim将整个逐字记录块视为注释语用。这是理想的情况,因为Doxygen评论的任何其他部分我都不介意分成多行。
  • @brief(.*\n)+以匹配整个注释块作为编译指示。我还尝试在注释的末尾使用任意标记来尝试此操作,以充当显式的块末标记。这不是理想的选择,因为它不会强制注释的非语言部分一致,但是如果需要的话,这是我愿意忍受的妥协。
  • 我在其他讨论中看到的各种其他正则表达式,都适应了我们的Doxygen标记。

到目前为止,我设法使多行注释的第一行保持不变,如果它超出了列限制。但是,后面的任何长行仍然被打断。

我留在框中的唯一其他工具是在这些注释周围使用// clang-format off// clang-format on,但我也想避免使用它,因为:

a)在整个代码库中添加它们将非常繁琐

b)我必须将所有注释用这些注释包围,而不仅仅是逐字记录块(我不知道是否可以仅对多行注释的一部分禁用它-我只管理了使它能在整个版本中正常运行,即使可能,在生成的Doxygen文档中最终也可能出现clang-format指令,这是不可接受的)]

c)我不太喜欢它在代码中的显示方式。

感谢您的帮助。谢谢。

c++ c doxygen clang-format
1个回答
1
投票

也遇到此问题,发现的唯一解决方法是使用clang-format on/off

clang格式重排注释倾向于:

更新:

[以clang格式本身提交了功能请求:https://bugs.llvm.org/show_bug.cgi?id=44486

© www.soinside.com 2019 - 2024. All rights reserved.