我正在努力理解gcov工具的输出。运行它没有选项是有意义的,但我想尝试理解分支覆盖率选项。不幸的是,很难理解这些分支是什么以及为什么它们没有被执行。下面是一个方法的输出(使用最新的LLVM / Clang构建进行编译)。
我已经运行了5个测试,分别传入nil、空数组、一个对象的数组、两个对象的数组和四个对象的数组。我猜在第一种情况下,分支1表示“进入循环”,但我不知道分支0是什么意思。在第二种情况下,分支0似乎是再次循环,分支1似乎是结束循环,分支3是继续/退出循环,但我不知道分支2是什么或者为什么/何时会被执行。
如果有人知道如何解密分支信息,或者知道任何关于这些信息的详细文档,我将不胜感激。
function -[TestCoverageAppDelegate loopThroughArray:] called 5 returned 100% blocks executed 88%
5: 30:- (NSInteger)loopThroughArray:(NSArray *)array {
5: 31: NSInteger i = 0;
22: 32: for (NSString *string in array) {
branch 0 taken 0
branch 1 taken 7
-: 33:
22: 34: }
branch 0 taken 4
branch 1 taken 3
branch 2 taken 0
branch 3 taken 3
5: 35: return i;
-: 36:}
我已经运行了5个测试,分别传入nil、空数组、一个对象的数组、两个对象的数组和四个对象的数组。我猜在第一种情况下,分支1表示“进入循环”,但我不知道分支0是什么意思。在第二种情况下,分支0似乎是再次循环,分支1似乎是结束循环,分支3是继续/退出循环,但我不知道分支2是什么或者为什么/何时会被执行。
如果有人知道如何解密分支信息,或者知道任何关于这些信息的详细文档,我将不胜感激。
j **
指令数量。 - osgx