У меня есть проект, я построил его с помощью компилятора Intel. Я хочу использовать clang-tidy, чтобы помочь обнаружить проблемы с кодом.
Я использую CMake для генерации compile_commands.json
и получаю следующую ошибку при использовании clang-tidy:
$ run-clang-tidy
# output
# ...
clang-tidy-6.0 -header-filter=^/home/xuhui/temp/build/.* -p=/home/xuhui/temp/build /home/xuhui/temp/main.cpp
1 warning and 1 error generated.
Error while processing /home/xuhui/temp/main.cpp.
error: unknown argument: '-w2' [clang-diagnostic-error]
warning: unknown warning option '-Wno-maybe-uninitialized'; did you mean '-Wno-uninitialized'? [clang-diagnostic-unknown-warning-option]
На самом деле существует очень похожий вопрос: clang-tidy сообщает о неизвестных предупреждениях
Однако, когда я пытаюсь использовать метод, упомянутый выше, помощь не оказывается. Предупреждение может быть подавлено, но ошибка все еще существует.
$ run-clang-tidy -extra-arg=-Wno-unknown-warning-option
# output
# ...
clang-tidy-6.0 -header-filter=^/home/xuhui/temp/build/.* -extra-arg=-Wno-unknown-warning-option -p=/home/xuhui/temp/build /home/xuhui/temp/main.cpp
1 error generated.
Error while processing /home/xuhui/temp/main.cpp.
error: unknown argument: '-w2' [clang-diagnostic-error]
Как справиться с ошибкой?
-w2
опции используются для управления предупреждением в компиляторе intel.
Хотя проблема возникает у меня из-за компилятора Intel, но, возможно, другие параметры компилятора также могут привести к проблеме.
Приложение
Следующие фрагменты кода могут помочь воспроизвести проблему.
// CMakeLists.txt
SET(CMAKE_CXX_COMPILER "icc")
SET(CMAKE_CXX_COMPILER "icpc")
project(test)
# leads to warning, can be settled by refer link
add_compile_options("-Wno-maybe-uninitialized")
# leads to error, can not be settled by refer link
add_compile_options("-w2")
add_executable(a.out main.cpp)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
// main.cpp
#include <iostream>
int main()
{
std::cout << "hello!" << std::endl;
return 0;
}
приведенный выше код может генерировать compile_commands. json как показано ниже:
[
{
"directory": "/home/xuhui/temp/build",
"command": "/opt/intel/compilers_and_libraries_2019.0.117/linux/bin/intel64/icpc -Wno-maybe-uninitialized -w2 -o CMakeFiles/a.out.dir/main.o -c /home/xuhui/temp/main.cpp",
"file": "/home/xuhui/temp/main.cpp"
}
]
Спасибо за ваше время.