我正在尝试使用clang-format来清理我的存储库中的代码。我们使用WebKit样式作为格式化的基础,但是我们还要确保多行注释的格式正确。
根据我的理解,可以通过定义.clang格式文件来覆盖给定样式的格式规则:
BasedOnStyle: WebKit
AlignTrailingComments: true
这种方式clang-format应该对齐尾随的注释。
给定输入文件:
/**
* This is a multi-line comment
*/
void function() {
/**
* This is comment inside the function
*/
}
我的期望是以下输出
/**
* This is a multi-line comment
*/
void function()
{
/**
* This is comment inside the function
*/
}
但我得到的是:
/**
* This is a multi-line comment
*/
void function()
{
/**
* This is comment inside the function
*/
}
我尝试将Webkit的格式化选项转储为.clang格式文件,并将AlignTrailingComments从false更改为true。这也没有任何影响。
Webkit样式中是否存在干扰AlignTrailingComments选项的选项?
答案 0 :(得分:2)
AlignTrailingComments
将连续行中的注释尾随代码对齐:
int short; // short
int longlonglong; // long
答案 1 :(得分:1)
这里真正的问题是预定义的WebKit
样式设置ColumnLimit: 0
。这会以某种方式禁用多行注释的非第一行部分的缩进。 (而且似乎在任何地方都没有记录,我认为这是一个错误。)
一种解决方法是将列限制设置为合理的值,例如ColumnLimit: 80
或可能的ColumnLimit: 120
。可能您可以执行一次此操作,然后切换回通常的ColumnLimit: 0
-但是,一次设置列限制可能会更改许多代码行的格式,当您将列限制更改回零时,该格式将无法恢复,所以可能不是您想要的。
AlignTrailingComments
与此根本无关。正如另一个答案所解释的,这是为了在代码行的末尾对齐尾随注释。有关更多详细信息,请参见documentation。
我也不相信CommentPragmas
会有所帮助。我敢肯定,这只会阻止clang-format
向这些注释添加换行符,但不会阻止缩进更改。 (而且也没有真正记录下来。)无论如何,这里需要的是调整缩进,而不是单独进行,因此CommentPragmas
似乎与需要的相反。 / p>
答案 2 :(得分:0)
可能的解决方法:将CommentPragmas
与正则表达式一起使用,将这些注释标记为不可触及。