clang-tidy cmake从检查中排除文件

时间:2018-03-31 19:54:10

标签: cmake static-analysis cppcheck clang-tidy

我的项目中有依赖项作为源,我无法控制。 我使用cmake的clang-tidy集成来分析我的代码,这种依赖性引发了很多警告。有没有办法告诉cmake不要对特定文件进行铿锵声?
我尝试将文件添加到clang-tidy的-line-filter选项中,但这不起作用:

set_target_properties(target PROPERTIES
CXX_CLANG_TIDY "${clang_tidy_loc};\
${TIDY_CONFIG} \
-line-filter=\"[\
{\"name\":\"path/to/file.cpp\"},\
{\"name\":\"path/to/file.h\"}\
]\"")

如果解决方案可以与cppcheck等其他静态分析器一起使用,那将非常好。 感谢。

2 个答案:

答案 0 :(得分:5)

如果某些属性(例如'PennUnclaimed' does not implement inherited abstract member 'UnclaimedProperty.WriteReport<T>(List<T>, string)' )仅在目标级别上可用,则必须将要进行不同设置的文件移动到单独的新目标中。

可以使用OBJECT libraries完成此操作。

在你的情况下:

CXX_CLANG_TIDY

<强>参考

答案 1 :(得分:0)

如果您只有标头库,我可以使用 SYSTEM (OBJECT库也应如此)

add_library(
  header_only_library_no_static_code_analysis 
  INTERFACE
)

target_include_directories(
  header_only_library_no_static_code_analysis 
  SYSTEM # Adds -isystem instead of -I and this tells clang-tidy not to analyze these includes
  INTERFACE
    path/to
)

由于存在以下错误,我很长一段时间都无法使用这种方法

https://bugs.launchpad.net/gcc-arm-embedded/+bug/1698539

但是使用GNU Arm嵌入式工具链版本9-2020-q2-update似乎已解决:)