在哪里可以找到Clang-tidy“readability-identifier-naming”检查器的可用选项列表?

6

应用场景

我想要为我的代码库配置运行在clang-tidy上的readability-identifier-naming检查器。

背景

在clang-tidy中,检查器可以提供CheckOptions,例如:

    clang-tidy -checks='-*,readability-identifier-naming' \ 
    -config="{CheckOptions: [ {key: readability-identifier-naming.ClassCase, value: CamelCase} ]}" main.cpp 

一个选项也可以在.clang-tidy文件中指定。

问题

我在哪里可以找到可用选项的列表(例如,在这种情况下,readability-identifier-naming检查的ClassCase)?

官方文档链接没有很具体地说明,只说“有许多配置选项可用,以便能够为不同类型的标识符创建不同的规则。”

谷歌搜索结果

我在github上找到了这个页面,它更详细地解释了一些内容(但仍然没有解决问题)。

我还在Microsoft的代码库中的一个文件中找到了一个巨大的列表,但我不知道他们从哪里得到的。

进一步调查

我认为,如果询问clang-tidy的所有可能选项,它可能会将其全部转储出来。 如果运行

    clang-tidy -checks=* --dump-config

(或者只指定readability-identifier-naming检查器。它并不重要,输出是相同的)
    clang-tidy -checks='-*,readability-identifier-naming --dump-config

转化后的文本:

倾倒文件仅包含一个与可读性标识命名相关的选项,即:

      - key:             readability-identifier-naming.IgnoreFailedSplit   
        value:           '0'

我也尝试过查看clang-tidy的源代码,但没有成功。

毕竟

如果有人能够指出一个(如有)包含所有可用CheckOptions列表的地方,我将不胜感激。


你总是可以检查源代码。毕竟它是开源的。 - Jesper Juhl
3
我也尝试浏览clang-tidy的源代码,但没有成功。此外,这并不正确,因为使用选项应该在文档中向用户呈现。你同意吗? - Bartek
2个回答

1

我在哪里可以找到可用选项列表(在这种情况下,是针对可读性标识符命名检查,例如上面代码行中的ClassCase)?

该列表已经出现在您最初链接的页面上,目前位于此处

我在github上找到了这个页面,它更详细地解释了一下(但仍未解决问题)。

现在问题已经解决了!


1
新链接: https://clang.llvm.org/extra/clang-tidy/checks/readability/identifier-naming.html#options - Chris

0

最简单的方法是查看此检查的测试源代码,在这里

// RUN: %check_clang_tidy %s readability-identifier-naming %t -- \
// RUN:   -config='{CheckOptions: [ \
// RUN:     {key: readability-identifier-naming.AbstractClassCase, value: CamelCase}, \
// RUN:     {key: readability-identifier-naming.AbstractClassPrefix, value: 'A'}, \
...etc.

此列表并不保证详尽无遗,因为它只是用于测试的命令。如果您想确信,您需要查看这里检查本身的源代码,并找到所有的命名键:

#define NAMING_KEYS(m) \
    m(Namespace) \
    m(InlineNamespace) \
    m(EnumConstant) \
    ...

这些命名键然后被字符串化为StylenaNames []。 然后查看IdentifierNamingCheck :: storeOptions()函数:

  for (size_t i = 0; i < SK_Count; ++i) {
    Options.store(Opts, (StyleNames[i] + "Case").str(),
                  toString(NamingStyles[i].Case));
    Options.store(Opts, (StyleNames[i] + "Prefix").str(),
                  NamingStyles[i].Prefix);
    Options.store(Opts, (StyleNames[i] + "Suffix").str(),
                  NamingStyles[i].Suffix);
  }

你会发现每个命名键都可以与Case、Prefix或Suffix连接并作为选项指定。这为此检查提供了可能选项的明确列表。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接