【问题标题】:Clang-tidy file: How to list the checks in multiple linesClang-tidy 文件:如何在多行中列出检查
【发布时间】:2020-06-28 13:42:39
【问题描述】:

现在我有一个 .clang-tidy 文件,其中包含大量检查,它们都像这样放在一行中:

Checks: '-*,bugprone-*,-bugprone-narrowing-conversions, cert-*, -cert-err58-cpp, clang-analyzer-*,cppcoreguidelines-*,-cppcoreguidelines-narrowing-conversions...'

有没有办法在多行中列出每个检查(启用或禁用)以便于版本控制?

现在我切换自动换行,这有助于编辑,但在代码审查中很难区分。

我正在寻找这样的东西:

Checks:
'-*,'
'cert-*,etc-*,'
...

【问题讨论】:

    标签: c++ clang-tidy


    【解决方案1】:

    您可以删除单引号并在以> 条目开头的换行逗号分隔列表中列出所有检查,并按如下方式构造.clang-tidy 文件:

    ---
    Checks: >
        -*,
        cert-*,
        etc-*,
        <additional checks ...>
    ...
    

    D30567: [clang-tidy] Fix treating non-space whitespaces in checks list 开始,每个新行上的前导空格只是为了便于阅读,您可以选择任何一致 数量的前导空格 (YAML)。

    【讨论】:

    • 其实文件是一个YAML,所以前导空格不是单词。我使用制表符缩进,并得到一个错误(那时我注意到这是一个 YAML)。所以“任何一致数量的前导空格”更合适。
    • @alx 感谢您的 ping!我已经更新了答案。如果您希望进一步更新答案,请随时提出对答案的修改。
    • 有没有办法在这些行之间添加 cmets?例如我想描述一下为什么启用/禁用特定检查
    • @artin 是的,您可以使用# 注释掉一行。
    • @dfrib 不,不可能做到#在多行字符串的行之间。这就是为什么我看到人们commenting each check completely outside the string 是一种方式。我不喜欢它,它迫使我重复每张支票的名称,但这是迄今为止我发现的最好的方法。
    【解决方案2】:

    您也可以在每行末尾使用反斜杠:

    ---
    Checks: "-*,\
    modernize-*,\
    -modernize-use-trailing-return-type,\
    misc-*,\
    -misc-non-private-member-variables-in-classes,\
    -misc-no-recursion,\
    cppcoreguidelines-*,\
    "
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-10
      • 2021-06-02
      • 2019-08-05
      • 2016-02-18
      • 2020-04-08
      • 2017-01-05
      • 1970-01-01
      • 2018-07-02
      相关资源
      最近更新 更多