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

时间:2012-08-03 06:15:34

标签: c++ c unit-testing code-coverage

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

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

1 个答案:

答案 0 :(得分:3)

我认为项目覆盖范围(现称为Project Couverture)可能是非侵入性和开源覆盖率分析问题的第一个良好答案。他们最新的代码版本是currently here,而英里高类型的项目演示文稿可以be seen here

关于SQLite如何仅使用AppDelegate声明MC / DC覆盖,它们基于以下事实:在C中,逻辑AND和OR遵循短路评估;意思是在任何布尔表达式比较......

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.

    let rootController = window?.rootViewController

    if rootController is UITabBarController {
        let firstTabItem = (rootController as! UITabBarController).viewControllers?[0]

        if firstTabItem is UINavigationController {

            let firstController = (firstTabItem as! UINavigationController).viewControllers.first as! ItemsViewController
            firstController.itemStore  = ItemStore()
            firstController.imageStore = ImageStore()
        }
    }
}

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

gcov

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

但是有一个例外 - 在这里阅读他们的explanation