2012-08-03 115 views
3

我最近参加了CS258免费在线课程,它提到了一种称为MC/DC覆盖的代码覆盖率,用于嵌入式软件,如汽车,飞机,等...适用于C/C++的MC/DC覆盖工具

但我找不到免费的工具来显示我的计划MC/DC覆盖面,有没有什么建议?

+0

@AndersK我用google搜索了一下,这些链接不是打破就是商业软件,我正在寻找免费软件。我知道sqllite的核心具有100%的MC/DC Coverage,但它表示它是通过gcov完成的,在我的记忆中,gcov只能提供统计覆盖和分支覆盖数据。 – shengy 2012-08-03 06:33:05

+0

MC/DC覆盖标准用于** critical **嵌入式软件。大多数嵌入式软件不适合其应用。这是你找到一个免费工具来衡量它的难度的一部分。另一部分是测量MC/DC覆盖需要比简单的覆盖标准更重的仪器。 – 2012-08-03 07:44:29

+0

@PascalCuoq呃......这是一个问题,但是sqllite是如何做到100%MC/DC覆盖的?与gcov?顺便说一句,大多数嵌入式软件不能证明其应用程序的真正含义是什么?这是否意味着大多数嵌入式软件不会进行单元测试,不执行代码覆盖率测试,或者他们不测试?我正在开发一个嵌入式软件,我们没有单元测试,因为在真正的环境中做这件事很棘手。 – shengy 2012-08-04 13:06:00

回答

2

我相信Project Coverage(现在称为Project Couverture)可能是非侵入性和开源覆盖率分析问题的第一个好答案。他们最新的代码发布是currently here英里高的种项目演示文稿可以be seen here

至于SQLite如何声称使用gcov的MC/DC覆盖,他们基于这样一个事实,即在C中,逻辑AND和OR遵循短路评估;这意味着在任何布尔表达式比较...

if (((A == B) || (C != D)) && (E != F)) ... 

。C,按照定义,停止在第一表达式“决定”的整体评价;所以如果A等于B,则决策已经完成 - 如果不是,则继续下一个表达式,依此类推。这意味着MC/DC要求...

Each condition in a decision must be shown to *independently* 
      affect the outcome of the decision 

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

虽然有一个例外 - 在这里阅读他们的explanation