Я пытаюсь понять вывод инструмента 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. Во втором случае ветвь 0, кажется, снова проходит через цикл, ветвь 1, кажется, завершает цикл, а ветвь 3 - продолжить / выйти из цикла, но я понятия не имею, что такое ветвь 2 или почему / когда она будет выполнена.
Если кто-то знает, как расшифровать информацию о ветке, или знает какую-либо подробную документацию о том, что все это означает, я был бы признателен за помощь.