clang-tidy在Windows上忽略了可读性-标识符命名

时间:2018-08-06 15:50:58

标签: c++ clang-tidy

我想使用clang-tidy来强制执行我公司的样式准则。我正在使用Windows10。我已经安装了LLVM v6.0.1。 这是我的测试文件:

class foo_bar
{
public:
  foo_bar() = default;

private:
  int bar_;
};

这是我正在运行的命令行:

clang-tidy.exe -checks='-*,readability-identifier-naming' -config="{CheckOptions: [ {key: readability-identifier-naming.ClassCase, value: CamelCase} ]}" test.cpp -- -std=c++11

clang-tidy不输出任何错误(我期望类名有问题)。我看不出我的错误在哪里。谁能指导我?

我在Ubuntu 16.04.4上用相同的文件尝试了相同的命令行,并且得到了预期的结果:

1 warning generated.
C:\Users\Cyril\dev\clang_test\main.cpp:1:7: warning: invalid case style for class 'foo_bar' [readability-identifier-naming]
class foo_bar
      ^

2 个答案:

答案 0 :(得分:2)

Windows上的clang-tidy似乎与-checks-config选项结合使用时出现问题。

您实际上可以将所有内容放入-config

clang-tidy.exe -config="{Checks: '-*,readability-identifier-naming', CheckOptions: [ {key: readability-identifier-naming.ClassCase, value: CamelCase} ]}" test.cpp -- -std=c++11

这将产生所需的输出

X:\test.cpp:1:7: warning: invalid case style for class 'foo_bar' [readability-identifier-naming]
class foo_bar
      ^~~~~~~
      FooBar

在Windows的LLVM 6.0上进行了测试。

答案 1 :(得分:0)

如果您使用的是Windows Cmd Shell(cmd.exe),则问题在于此行-checks选项中使用单引号(')

clang-tidy.exe -checks='-*,readability-identifier-naming' ....

如果将其更改为(改为使用(“))

clang-tidy.exe -checks="-*,readability-identifier-naming" ....

然后它将正常工作。

仅当在cmd.exe中运行时在Windows上使用bash时,这不是问题