GNU 编译器集合中的修改条件/决策覆盖
软件工程
2025-01-07 v1
摘要
我们描述了在 GCC 14 中实现掩码修订条件/决策覆盖(Modified Condition/Decision Coverage, MC/DC)支持的做法,这是一种广泛采用于安全关键应用的强大结构覆盖度量标准。通过分析布尔表达式的二叉决策图(Binary Decision Diagrams, BDD)结构,我们可以观察到 MC/DC 的关键属性——独立影响结果的能力——并映射到控制流图的边缘。这种映射可转化为几个位运算指令,使 GCC 能够对程序进行仪器化,以高效地观察和记录条件何时被采纳以及其是否独立影响决策结果。通过分析 BDD 而非程序语法,GCC 能够以单一语言无关的实现方式测量其几乎所有语言的 MC/DC,包括对 C、C++、D 和 Rust 的支持。
引用
@article{arxiv.2501.02133,
title = {Modified Condition/Decision Coverage in the GNU Compiler Collection},
author = {Jørgen Kvalsvik},
journal= {arXiv preprint arXiv:2501.02133},
year = {2025}
}
备注
8 pages, 8 figures