我正在尝试理解gcov工具的输出.没有选项运行它是有道理的,但我想尝试理解分支覆盖选项.不幸的是,很难理解分支机构的作用以及为什么不采用它们.下面是方法的输出(使用最新的LLVM/Clang构建进行编译).
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:}
Run Code Online (Sandbox Code Playgroud)
我通过这个运行5次测试,传入nil,一个空数组,一个包含1个对象的数组,一个包含2个对象的数组和一个包含4个对象的数组.我可以猜测,在第一种情况下,分支1意味着"进入循环",但我不知道分支0是什么.在第二种情况下,分支0似乎再次循环,分支1似乎结束循环,分支3继续/退出循环,但我不知道分支2是什么或为什么/什么时候执行它.
如果有人知道如何破译分支信息,或者知道任何有关这一切的详细文档,我会很感激帮助.