【问题标题】:clang-format Overriding multi-line comments for WebKit styleclang-format 覆盖 WebKit 样式的多行注释
【发布时间】:2016-06-13 06:28:46
【问题描述】:

我正在尝试使用 clang-format 来清理我的存储库中的代码。我们使用 WebKit 样式作为格式化的基础,但是我们也想确保多行 cmets 的格式正确。

据我了解,可以通过这样定义 .clang-format 文件来覆盖给定样式的格式规则:

BasedOnStyle: WebKit
AlignTrailingComments: true

这种方式 clang-format 应该对齐尾随 cmets。

给定输入文件:

    /**
     * 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 选项的选项?

【问题讨论】:

  • 来这里问同样的问题。我没有任何 BasedOnStyle 集,我认为 AlignTrailingComments 是不相关的(它适用于在一行代码之后以 // 开头的 cmets,不是吗?)。看起来像一个错误:块的开头对齐,但其余部分没有。
  • 我也有同样的问题。而且这里的 3 个答案似乎都没有回答这个问题。

标签: c++ clang-format


【解决方案1】:

AlignTrailingComments 对齐连续行中的 cmets 尾随代码:

int short;        // short
int longlonglong; // long

【讨论】:

    【解决方案2】:

    这里真正的问题是预定义的WebKit 样式设置ColumnLimit: 0。这以某种方式禁用了多行 cmets 的非第一行部分的缩进。 (而且这似乎没有记录在任何地方 - 我认为这是一个错误。)

    一种解决方法是将列限制设置为合理的值,例如ColumnLimit: 80ColumnLimit: 120。可能您可以这样做一次,然后切换回您通常的ColumnLimit: 0 - 但是设置一次列限制可能会更改许多代码行的格式,当您将列限制更改回零时,这些格式将不会恢复,所以可能不是你想要的。

    AlignTrailingComments 与此无关。正如另一个答案所解释的,这是为了在代码行末尾对齐尾随 cmets。有关详细信息,请参阅documentation

    我也不相信CommentPragmas 会有所帮助。我很确定这只会阻止clang-format 向这些 cmets 添加换行符,但不会阻止缩进更改。 (这也没有真正记录下来。)无论如何,这里需要的是调整缩进,而不是不管它,所以CommentPragmas 似乎与所需要的相反。

    【讨论】:

      【解决方案3】:

      一种可能的解决方法:使用带有正则表达式的CommentPragmas 将这些 cmets 标记为不可触摸。

      【讨论】:

      • 其实OP的问题正好相反。他的 cmets 并没有像他想要的那样不缩进。在任何情况下,CommentPragmas 都不会禁用缩进,只会禁用换行等其他内容。
      猜你喜欢
      • 2014-11-10
      • 2017-11-27
      • 1970-01-01
      • 2018-06-09
      • 2011-12-08
      • 1970-01-01
      • 2021-09-02
      • 2017-02-15
      • 1970-01-01
      相关资源
      最近更新 更多