clang-tidy - игнорировать сторонний код заголовков - PullRequest
1 голос
/ 08 апреля 2020

Я использую CMake для своего проекта, и я хотел ввести чеки clang-tidy для проекта.

Я использую для этой цели CMAKE_CXX_CLANG_TIDY и .clang-tidy файл для настройки проверок.

Я хотел использовать предупреждения-как-ошибки, чтобы иметь надежный способ в CI проверять, вносит ли коммит некоторые новые нарушения. К сожалению, у меня есть некоторые проблемы с включением проверок из-за сторонних библиотек. Например, я использую Eigen, которая является библиотекой только для заголовка. Из-за этого я получаю некоторые предупреждения в моем коде, например. "a_file. cpp"

/snap/cmake/301/bin/cmake -E __run_co_compile --tidy="clang-tidy;--extra-arg-before=--driver-mode=g++" --source=../../a_file.cpp -- /usr/bin/clang++ -DEIGEN_MPL2_ONLY -DEIGEN_STACK_ALLOCATION_LIMIT=16384 -I../../SomePath -I../../SomePath2 -isystem ../../path_to/include/Eigen -m64 -stdlib=libc++ -g -fPIC -std=c++11 -MD -MT a_file.cpp.o -MF a_file.cpp.o.d -o a_file.cpp.o -c a_file.cpp                                                                            
../../path_to/include/Eigen/Eigen/src/Core/Swap.h:89:36: error: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign,-warnings-as-errors] 
a_file.cpp:279:5: note: Loop condition is true.  Entering loop body                            
    for( unsigned int i = 0; i < 100; ++i )                                                                                                                                                                                                                         
    ^                                                                                                                                                                                                                                                                 
a_file.cpp:282:13: note: Calling move assignment operator for 'Matrix<float, 3, 1, 0, 3, 1>'   
            some_name = Vector3f( GetRandom( fDummy ),GetRandom( fDummy ), GetRandom( fDummy ) );  

Я немного не знаю, как игнорировать такого рода проблемы, так как header-filter, похоже, не решает эту проблему - для других проверок [bugprone- ххх] у меня похожие проблемы. Какие у меня есть варианты помимо добавления //NO-LINT везде?

Редактировать: немного контекста добавить к ошибке.

...