Я пытаюсь статически анализировать мой код с помощью инструмента статического анализа кода Clang scan-build
, и когда я запускаю код с помощью команды scan-build g++
, он выдает сообщение об ошибке, но когда я пытаюсь сделать то же самоеС помощью CMake и команды scan-build make
он сообщает, что ошибок не найдено.
Я уже пытался заменить переменные CC
и CXX
командой экспорта bash, использовал --use_cc
и --use_c++
помечает и строит отдельные цели, используя scan-build make TARGET
.Все это не привело меня к правильному решению, и я боюсь, что scan-build
не сможет работать с CMake / make.
- Clang версия 8.0.0 (tags / RELEASE_800 / final)
- Gcc версии 7.4.0 (Ubuntu 7.4.0-1ubuntu1 ~ 18.04)
Вот простой пример.
CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
set(CMAKE_C_COMPILER "usr/bin/clang")
set(CMAKE_CXX_COMPILER "usr/bin/clang++")
set(CMAKE_AR "usr/bin/llvm-ar")
set(CMAKE_LINKER "usr/bin/llvm-ld")
set(CMAKE_NM "usr/bin/llvm-nm")
set(CMAKE_OBJDUMP "usr/bin/llvm-objdump")
set(CMAKE_RANLIB "usr/bin/llvm-ranlib")
project(scan-build-test)
add_executable(${PROJECT_NAME} main.cpp)
main.cpp
#include <iostream>
int main()
{
int *a;
std::cout << a << std::endl;
}
Текущее поведение g ++:
scan-build g++ main.cpp -o main
scan-build: Using 'usr/bin/clang-8' for static analysis main.cpp:6:2: warning: 1st function call argument is an uninitialized value
std::cout << a << std::endl;
^~~~~~~~~~~~~~
1 warning generated.
scan-build: 1 bug found.
scan-build: Run 'scan-view /tmp/scan-build-2019-05-30-134021-30676-1' to examine bug reports.`
Текущее поведение CMake & make:
cmake .
scan-build make
scan-build: Using 'usr/bin/clang-8' for static analysis
[ 50%] Building CXX object CMakeFiles/scan-build-test.dir/main.cpp.o
[100%] Linking CXX executable scan-build-test
[100%] Built target scan-build-test
scan-build: Removing directory '/tmp/scan-build-2019-05-30-134302-30720-1' because it contains no reports.
scan-build: No bugs found.