用于C/C++的MC/DC覆盖工具

she*_*ngy 5 c c++ unit-testing code-coverage

我最近参加了CS258免费在线课程,它提到了一个名为MC/DC覆盖的代码覆盖,用于嵌入式软件,如汽车,飞机等电脑......

但我找不到一个免费的工具来向我展示我的程序的MC/DC覆盖范围,有什么建议吗?

tts*_*ras 6

我相信 Project Coverage(现在称为Project Couverture)可能是非侵入性和开源覆盖分析问题的第一个很好的答案。他们最新的代码发布目前在这里,并且可以在这里看到高级的项目演示。

至于 SQLite 如何仅使用 来声明 MC/DC 覆盖率gcov,他们基于以下事实:在 C 中,逻辑 AND 和 OR 遵循短路评估;这意味着在任何布尔表达式比较中......

if (((A == B) || (C != D)) && (E != F)) ...
Run Code Online (Sandbox Code Playgroud)

...根据定义,C 将在第一个“决定”整体的表达式处停止计算;因此,如果 A 等于 B,则决策已完成 - 如果不等于,则继续执行下一个表达式,依此类推。这意味着 MC/DC 要求...

Each condition in a decision must be shown to *independently*
          affect the outcome of the decision
Run Code Online (Sandbox Code Playgroud)

...有点“默认覆盖”。

不过,有一个例外 - 请阅读他们的解释