Clang-tidy cmake исключить файл из проверки

У меня есть зависимость как источник в моем проекте, в котором я не контролирую. Я использую smake clang-tidy для анализа моего кода, и эта зависимость запускает много предупреждений. Есть ли способ сказать cmake не запускать clang-tidy в определенных файлах? Я попытался добавить файлы в параметр -line-filter clang-tidy, но это не работает:

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, было бы очень приятно. Благодарю.

1 ответ

Если какое-либо свойство, такое как CXX_CLANG_TIDY доступно только на целевом уровне, вам нужно переместить файлы, которые вы хотите иметь разными настройками, в отдельную новую цель.

Это можно сделать, используя библиотеки OBJECT.

В вашем случае что-то вроде:

add_library(
 target_no_staticanalysis
 OBJECT
 path/to/file.cpp
 path/to/file.h
)

# NOTE: Resetting only needed if you have a global CMAKE_CXX_CLANG_TIDY
set_target_properties(
 target_no_staticanalysis
 PROPERTIES
 CXX_CLANG_TIDY ""
)

...
add_library(target ${other_srcs} $<target_objects:target_no_staticanalysis>)
</target_objects:target_no_staticanalysis>

Рекомендации

licensed under cc by-sa 3.0 with attribution.