我最近参加了CS258免费在线课程,它提到了一个名为MC / DC覆盖的代码覆盖,用于嵌入式软件,如汽车,飞机等电脑......
但我找不到一个免费的工具来向我展示我的程序的MC / DC覆盖范围,有什么建议吗?
答案 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。