我在一个中等大小的项目中使用clang-tidy
,该项目包含以下三个文件夹:
srcA
srcB
external
我试图从分析中排除external
文件夹,但没有成功。我使用的命令是:
clang-tidy $SRC -p build/ --extra-arg=-ferror-limit=0'
与
SRC=srcA/file.cpp srcA/fileN.cpp srcB/file.cpp srcB/fileN.cpp ...
和cmake
生成的build/
下的编译数据库。注意,SRC不包含任何external
文件,只包含来自srcA
和srcB
(.cpp和.hpp)的文件。同样,很明显,srcA
和srcB
下的一些文件使用了external
下的库。clang-tidy
中80%的错误来自external/
文件,我无法修复这些错误,因为存在第三方库。
下面是我正在使用的.clang-tidy
文件:
Checks: '-*,readability-identifier-naming'
WarningsAsErrors: "*"
CheckOptions:
- { key: readability-identifier-naming.ClassCase, value: CamelCase }
- { key: readability-identifier-naming.ClassMethodCase, value: camelBack }
- { key: readability-identifier-naming.VariableCase, value: camelBack }
- { key: readability-identifier-naming.PrivateMemberPrefix, value: m_ }
- { key: readability-identifier-naming.PrivateMemberCase, value: camelBack }
- { key: readability-identifier-naming.FunctionCase, value: camelBack }
- { key: readability-identifier-naming.MethodCase, value: camelBack }
- { key: readability-identifier-naming.ParameterCase, value: camelBack }
- { key: readability-identifier-naming.MemberCase, value: camelBack }
- { key: readability-identifier-naming.EnumCase, value: CamelCase }
- { key: readability-identifier-naming.StructCase, value: CamelCase }
- { key: readability-identifier-naming.TemplateParameterCase, value: CamelCase }
- { key: readability-identifier-naming.TypeAliasCase, value: CamelCase }
- { key: readability-identifier-naming.TypedefCase, value: CamelCase }
- { key: readability-identifier-naming.ConstexprVariableCase, value: UPPER_CASE }
- { key: readability-identifier-naming.ConstantCase, value: UPPER_CASE }
FormatStyle: 'file'
我知道这个问题已经贴在这里了,但是我已经尝试了建议的解决方案,但是没有一个成功。例如,我尝试使用HeaderFilterRegex
,只匹配所需的文件,但是没有成功。
我是不是错过了什么?这是可能实现的吗(我在某个页面上读到这是clang-tidy
的一个已知bug)?
1条答案
按热度按时间g52tjvyc1#
恐怕目前不可能。这似乎是唯一可能的解决办法:列出除
.clang-tidy
中的HeaderFilterRegex
中的external/
之外的所有允许路径。请参阅讨论主题"clang-tidy Negative Lookahead Support"。