代码验证全景图
代码验证分为静态验证、动态验证和其他验证维度,分别有 6、11、4 项。各分支列出方法、检查内容和工具。
ENGINEERING / VERIFICATION ATLAS
代码验证全景图
3 个分支 / 21 个条目
代码验证
Code Verification
01 / Static Verification
静态验证
6 项
无需运行被测程序
02 / Dynamic Verification
动态验证
11 项
运行被测程序
03 / Cross-cutting Dimensions
其他验证维度
4 项
可贯穿多种验证方法
01
类型检查
Type Checking
静态类型检查(Java / C++ / TypeScript / Rust)
类型推断(Haskell / Kotlin)
泛型检查
空安全(Kotlin / Swift / TypeScript strict)
02
语法检查
Syntax Checking
词法分析
语法分析
括号匹配与语句结构
03
语义检查
Semantic Checking
变量未定义与重复定义
作用域检查
函数签名匹配
04
静态分析
Static Analysis
代码规范检查(Lint,
ESLint
/
Pylint
/
Checkstyle
)
代码风格检查(Style,
Prettier
/
Black
/
gofmt
)
复杂度分析(圈复杂度 / 认知复杂度)
代码异味检测(Code Smell)
数据流分析
控制流分析(不可达代码 / 死循环)
依赖分析(循环依赖 / 未使用依赖)
05
安全静态扫描
SAST
识别潜在的 SQL 注入、XSS 与缓冲区溢出
硬编码密钥检测
SonarQube
/
Semgrep
/
Fortify
/
CodeQL
06
形式化验证
Formal Verification
模型检验(Model Checking)
定理证明(Theorem Proving)
抽象解释(Abstract Interpretation)
契约验证(Design by Contract,可静态证明或
用运行时断言检查)
01
单元测试
Unit Testing
验证单个函数、类或模块的行为
JUnit
/
pytest
/
Jest
/
Go test
02
集成测试
Integration Testing
API 测试
数据库交互测试
03
端到端测试
E2E Testing
验证从用户操作到系统结果的完整流程
Selenium
/
Cypress
/
Playwright
04
契约测试
Contract Testing
验证服务提供方和调用方约定的接口行为
Pact
05
属性测试
Property-based Testing
生成多组输入,检查预定义性质是否成立
QuickCheck
/
Hypothesis
/
fast-check
06
模糊测试
Fuzz Testing
生成或变异输入,寻找崩溃与异常行为
OSS-Fuzz
提供持续模糊测试服务
AFL
/
libFuzzer
/
OSS-Fuzz
07
变异测试
Mutation Testing
注入细小代码变更,检查现有测试能否发现
PIT
/
Stryker
/
mutmut
08
运行时检查
Runtime Checking
断言(assert)
边界检查(数组越界)
空指针检查
动态类型检查(Python / JavaScript 运行时,例
如 Python 的 isinstance)
09
动态安全测试
DAST
从外部探测运行中应用的安全问题
OWASP ZAP
/
Burp Suite
10
性能测试
Performance Testing
负载测试 / 压力测试
基准测试(Benchmark)
内存泄漏检测(
Valgrind
,或
ASan
配合
LeakSanitizer
)
11
内存安全验证
Memory Safety
地址消毒器(
AddressSanitizer
/
ASan
)
内存泄漏检测(
LeakSanitizer
)
未定义行为检测(
UBSan
)
线程竞争检测(
ThreadSanitizer
)
01
代码覆盖率
Coverage
语句覆盖 / 分支覆盖 / 条件覆盖
路径覆盖 / MC/DC
JaCoCo
/
Coverage.py
/
Istanbul
02
可维护性验证
Maintainability
代码审查(Code Review)
文档完整性检查
依赖漏洞扫描(SCA,
Dependabot
/
Snyk
)
03
合规性验证
Compliance
许可证检查
编码标准合规(
MISRA C
/
AUTOSAR
)
04
AI/ML 代码验证
AI/ML Verification
模型行为测试
数据验证(Schema 校验)
公平性 / 鲁棒性测试
分类边界
模型检验可以探索抽象模型的状态。契约可通过静态证
明验证,也可在运行时用断言检查。
覆盖率衡量测试触达范围,变异测试衡量测试能否识别
故障。SCA 检查依赖供应链风险。内存泄漏检测也可用
于性能诊断。
分类依据
静态与动态按是否运行被测程序区分。第三分支汇集跨方法的质量维度与领域验证。
点击蓝色名称打开官方资料