首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >clang-format保持切换注释位置

clang-format保持切换注释位置
EN

Stack Overflow用户
提问于 2019-11-03 08:06:41
回答 1查看 202关注 0票数 2

我在一个源文件上运行clang-formt,它一直在切换注释的位置,从不确定正确的位置。

这是我的.clang-format文件的一个副本:

代码语言:javascript
复制
BasedOnStyle: Microsoft

版本信息:

代码语言:javascript
复制
$ clang-format --version
clang-format version 9.0.0

下面的代码片段显示了先用-i再用--output-replacements-xml运行clang-format的结果

代码语言:javascript
复制
$ clang-format -i MyFile.cpp
$ clang-format --output-replacements-xml MyFile.cpp
<?xml version='1.0'?>
<replacements xml:space='preserve' incomplete_format='false'>
<replacement offset='2702' length='7'>&#10;            </replacement>
</replacements>
$ clang-format -i MyFile.cpp
$ clang-format MyFile.cpp
<?xml version='1.0'?>
<replacements xml:space='preserve' incomplete_format='false'>
<replacement offset='2702' length='13'>&#10;      </replacement>
</replacements>

正如您所看到的,替换偏移量的长度字段继续变化。如果我一遍又一遍地运行它,你会看到上面列出的两种结果交替出现。本质上,它只是来回移动特定注释的位置。

这里是有问题的来源:

格式化版本1:

代码语言:javascript
复制
    if (mp) // if foo bar likes to foo, the foo
    {       // but bar foo also is bar
            // too bizz bazz buzz bizz
        status = contains(mp->foobar());

格式化版本2:

代码语言:javascript
复制
    if (mp) // if foo bar likes to foo, the foo
    {       // but bar foo also is bar
      // too bizz bazz buzz bizz
        status = contains(mp->foobar());

问题所在的行是// too bizz bazz buzz bizz,因为它的位置永远不会“确定”。有人知道为什么这条评论总是来回移动吗?另外,关于如何防止这种情况的任何想法(更改格式化文件、格式化程序的不同版本等)。

EN

回答 1

Stack Overflow用户

发布于 2020-08-10 07:54:00

很明显,这是clang-format中的一个错误。我发现的唯一变通方法是移动第三个注释行。

如果您从与后续代码行排列的最后一个注释行开始: if (mp) //如果foo bar喜欢foo,那么foo { // bar foo也是bar // too bizz bazz bizz bizz

  • = contains(mp->foobar());

那它就不会动了。但是如果初始缩进是其他的,它会像你找到的一样进行切换。

  • 如果你设置了ReflowComments: false,那么第三个注释行的缩进不会切换,但是缩进需要两次往返才能完成。第一次调用clang-format时,注释与其他注释排列在一起。第二次调用将其与后续代码排成一列。在那之后,它不会移动,就像上面的子弹所描述的那样。总的来说,这是非常奇怪的行为,我假设它会在clang-format.

的后续版本中进行更改/修复

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58676367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档