代码验证全景图 代码验证分为静态验证、动态验证和其他验证维度,分别有 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 检查依赖供应链风险。内存泄漏检测也可用 于性能诊断。 分类依据 静态与动态按是否运行被测程序区分。第三分支汇集跨方法的质量维度与领域验证。 点击蓝色名称打开官方资料