cmake clang-tidy:从分析中排除特定目录

fdbelqdn  于 2022-11-11  发布在  其他
关注(0)|答案(1)|浏览(232)

我在一个中等大小的项目中使用clang-tidy,该项目包含以下三个文件夹:

  1. srcA
  2. srcB
  3. external

我试图从分析中排除external文件夹,但没有成功。我使用的命令是:

  1. clang-tidy $SRC -p build/ --extra-arg=-ferror-limit=0'

  1. SRC=srcA/file.cpp srcA/fileN.cpp srcB/file.cpp srcB/fileN.cpp ...

cmake生成的build/下的编译数据库。注意,SRC不包含任何external文件,只包含来自srcAsrcB(.cpp和.hpp)的文件。同样,很明显,srcAsrcB下的一些文件使用了external下的库。
clang-tidy中80%的错误来自external/文件,我无法修复这些错误,因为存在第三方库。
下面是我正在使用的.clang-tidy文件:

  1. Checks: '-*,readability-identifier-naming'
  2. WarningsAsErrors: "*"
  3. CheckOptions:
  4. - { key: readability-identifier-naming.ClassCase, value: CamelCase }
  5. - { key: readability-identifier-naming.ClassMethodCase, value: camelBack }
  6. - { key: readability-identifier-naming.VariableCase, value: camelBack }
  7. - { key: readability-identifier-naming.PrivateMemberPrefix, value: m_ }
  8. - { key: readability-identifier-naming.PrivateMemberCase, value: camelBack }
  9. - { key: readability-identifier-naming.FunctionCase, value: camelBack }
  10. - { key: readability-identifier-naming.MethodCase, value: camelBack }
  11. - { key: readability-identifier-naming.ParameterCase, value: camelBack }
  12. - { key: readability-identifier-naming.MemberCase, value: camelBack }
  13. - { key: readability-identifier-naming.EnumCase, value: CamelCase }
  14. - { key: readability-identifier-naming.StructCase, value: CamelCase }
  15. - { key: readability-identifier-naming.TemplateParameterCase, value: CamelCase }
  16. - { key: readability-identifier-naming.TypeAliasCase, value: CamelCase }
  17. - { key: readability-identifier-naming.TypedefCase, value: CamelCase }
  18. - { key: readability-identifier-naming.ConstexprVariableCase, value: UPPER_CASE }
  19. - { key: readability-identifier-naming.ConstantCase, value: UPPER_CASE }
  20. FormatStyle: 'file'

我知道这个问题已经贴在这里了,但是我已经尝试了建议的解决方案,但是没有一个成功。例如,我尝试使用HeaderFilterRegex,只匹配所需的文件,但是没有成功。
我是不是错过了什么?这是可能实现的吗(我在某个页面上读到这是clang-tidy的一个已知bug)?

g52tjvyc

g52tjvyc1#

恐怕目前不可能。这似乎是唯一可能的解决办法:列出除.clang-tidy中的HeaderFilterRegex中的external/之外的所有允许路径。
请参阅讨论主题"clang-tidy Negative Lookahead Support"

相关问题