clang格式破坏lint注释

clang-format breaks lint annotations

本文关键字:lint 注释 格式 clang      更新时间:2023-10-16

我们在C/C++的代码库中使用lint,我也在尝试在我的工作流程中集成clang格式。

不幸的是,lint偶尔需要注释来忽略特定的检查,格式为:

/*lint -[annotation] */

//lint -[annotation]

特别是,如果注释的开头标记和"lint"之间有空格,则它不会将其识别为注释指令。不幸的是,我对clang格式的默认设置认为这是一个错误,并有助于插入空格。

有没有什么方法可以让clang格式识别出与该模式匹配的评论,并让它们独处?现在我使用的是3.4,但如果需要的话可以升级。

Clang格式有一个`CommentPragmas'选项,它是

一种正则表达式,用于描述具有特殊含义的注释,这些注释不应拆分成行或以其他方式进行更改。

当我把下面一行放在.clang格式的文件中时,我的Lint注释保持不变。

CommentPragmas:  '^lint'

其他仍然有"lint"的评论,但不是lint评论,仍然会被格式化。

您可以使用:禁用文件该部分的clang格式

int formatted_code;
// clang-format off
    void    unformatted_code  ;
// clang-format on
void formatted_code_again;

请参阅禁用一段代码的格式化部分。