В режиме будет много вызовов и приращений чего-то вроде «__llvm_gcov_ctr» или «__llvm_gcda_edge» - это актуальная инструментарий базовых блоков.

аюсь понять вывод инструмента 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 и почему / когда она будет выполнена.

Если кто-то знает, как расшифровать информацию о ветке, или знает какую-либо подробную документацию о том, что все это значит, я был бы признателен за помощь.

Ответы на вопрос(1)

Ваш ответ на вопрос