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:}
これを介して5つのテストを実行し、nil、空の配列、1つのオブジェクトを持つ配列、2つのオブジェクトを持つ配列と4つのオブジェクトを持つ配列を渡しました。最初のケースでは、ブランチ1は「ループに入る」ことを意味していると推測できますが、ブランチ0が何であるかはわかりません。2番目のケースでは、ブランチ0が再びループスルーしているように見え、ブランチ1がループを終了し、ブランチ3がループを続行/終了しているように見えますが、ブランチ2が何であるか、なぜ/いつ実行されるかはわかりません。
誰かがブランチ情報を解読する方法を知っているか、それが何を意味するかについての詳細なドキュメントを知っているなら、私は助けていただければ幸いです。