温馨提示×

ubuntu c++如何做静态分析

小樊
42
2026-09-26 14:57:30
栏目: 编程语言

在 Ubuntu 上进行 C++ 静态分析(Static Analysis),可以从编译器自带检查、专用静态分析工具、集成到构建系统三个层面来做。下面按“由轻到重”给你一个实用清单。


一、编译器自带的静态检查(最基础)

1. GCC / Clang 警告选项

g++ -Wall -Wextra -Wpedantic -O2 -c main.cpp

推荐常用:

-Wall -Wextra -Wshadow -Wconversion -Wsign-conversion

2. Clang 的 -analyze(轻量静态分析)

clang++ --analyze main.cpp

二、专用静态分析工具(重点)

✅ 1. Clang Static Analyzer(最常用)

Ubuntu 安装:

sudo apt install clang

使用:

scan-build g++ main.cpp -o app

或分析整个项目:

scan-build make

查看结果会生成 HTML 报告。


✅ 2. Cppcheck(非常流行)

sudo apt install cppcheck

基本使用:

cppcheck --enable=all main.cpp

项目级:

cppcheck --enable=all --project=compile_commands.json

常用选项:

--std=c++17
--suppress=missingInclude

✅ 3. Clang-Tidy(现代 C++ 强烈推荐)

sudo apt install clang-tidy

使用:

clang-tidy main.cpp -- -std=c++17

配合 CMake:

cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .
clang-tidy src/*.cpp

可检查:

  • 现代 C++ 用法
  • 潜在 bug
  • 代码风格(可替代部分 clang-format)

✅ 4. PVS-Studio(商业,但很强)

sudo apt install pvs-studio
pvs-studio-analyzer trace -- make
pvs-studio-analyzer analyze

三、和构建系统结合(工程化)

CMake + Clang-Tidy

set(CMAKE_CXX_CLANG_TIDY "clang-tidy")

CMake + Cppcheck

find_program(CPPCHECK cppcheck)
if(CPPCHECK)
  add_custom_target(cppcheck
    COMMAND ${CPPCHECK} --enable=all ${CMAKE_SOURCE_DIR})
endif()

四、推荐组合(实用方案)

✅ 日常开发

  • -Wall -Wextra
  • clang-tidy

✅ 提交前

  • cppcheck
  • clang --analyze

✅ CI

  • scan-build
  • clang-tidy

五、简单示例流程

sudo apt install clang clang-tidy cppcheck
clang-tidy main.cpp -- -std=c++17
cppcheck --enable=all main.cpp

如果你愿意,我可以:

  • 给你一个 CMake + clang-tidy 完整示例
  • 针对 大型项目 给分析策略
  • 对比 Cppcheck vs Clang Static Analyzer

你现在是个人学习还是项目/团队使用?

0 踩