📘 静态分析 & CI 整合实战
🎯 30 章 · 从入门到项目落地
⚡ 嵌入式专属
🧪 动手实操
01
课程导论:为什么嵌入式需要静态分析?
CI 流程拯救代码质量 · 真实线上事故复盘
02
静态分析基础
与动态测试区别 · 词法/语法分析 · AST 入门
03
常用静态分析工具概览
Cppcheck · Clang-Tidy · PC-lint · Coverity · SonarQube 选型
04
Cppcheck 实战
安装配置 · 命令行 · 自定义规则 · 电机控制项目抓空指针
05
Clang-Tidy 实战
集成 CMake · 常用检查项 · Fix-It 自动修复
06
PC-lint 与 MISRA C/C++
汽车电子/航空航天合规 · 配置 MISRA 规则集
07
SonarQube 搭建与配置
Docker 部署 · 安装插件 · 质量门禁创建
08
SonarQube 扫描嵌入式项目
sonar-project.properties · 交叉编译 · 排除第三方库
09
静态分析结果解读
误报(False Positive)与漏报(False Negative)处理策略
10
CI/CD 基础
GitLab CI / Jenkins / GitHub Actions 核心概念对比
11
GitLab CI 入门
.gitlab-ci.yml 语法 · Runner 配置 · Stage/Job
12
Jenkins Pipeline 入门
Declarative Pipeline · Agent · Stage 设计
13
GitHub Actions 入门
Workflow 文件 · 触发条件 · Matrix 构建
14
Cppcheck 集成 GitLab CI
Job 脚本 · 生成报告 · 流水线失败控制
15
Clang-Tidy 集成 Jenkins
CMake 配合 · 解析输出 · HTML 报告发布
16
SonarQube 扫描集成 GitHub Actions
SonarCloud / 自托管实例
17
质量门禁 Quality Gate
设置阈值 · 阻止合并请求 · MR 显示分析结果
18
增量分析
只扫描变更代码 · 40分钟→5分钟实战
19
与代码审查结合
MR/PR 自动评论静态分析问题
20
嵌入式特有挑战
交叉编译链 · 头文件路径 · 宏定义 · 汇编处理
21
处理第三方库与 RTOS
排除/标记外部代码,避免误报淹没
22
自定义规则开发
基于 Clang LibTooling · 检测公司编码规范
23
静态分析结果数据库
InfluxDB / Elasticsearch · Grafana 趋势展示
24
团队协作与流程规范
编码规范 · 分析策略 · Review 流程
25
实战案例一:STM32 + FreeRTOS
从零搭建 CI + 静态分析流水线
26
实战案例二:Linux 嵌入式网关
Cppcheck + SonarQube + Jenkins 集成
27
实战案例三:AUTOSAR 项目
PC-lint MISRA 合规检查
28
性能优化
缓存结果 · 并行扫描 · 分布式 Runner
29
常见问题与排错
工具崩溃 · 内存不足 · 超时 · 误报过多
30
课程总结与未来展望
AI 辅助静态分析 · 云原生 CI · DevSecOps 趋势