На кодеках, что это значит, когда линия не окрашена?
В проекте ethereum/solidity недавно были включены отчеты о покрытии кода, и отчет отправляется кодекам. Я проверяю это, и я нашел эту странную вещь:
Здесь в строке 45 файла Rematerializer.cpp вы можете видеть, что строка белая. Однако эта строка выполняется тестом YulRematerialiser/do_not_move_out_of_scope. Я подтвердил это с помощью отладчика. Итак, почему эта линия не окрашена в зеленый цвет? Что это значит, когда линия не имеет цвета?
1 ответ
Цикл for, который проверен только частично, выглядит как желтый. Они не упоминают об этом, но документация в основном гласит (принимая во внимание изображение примера; не может связать его, поскольку оно доступно только для загрузки), что:
Зеленые линии пройдены. Рядом с ними находится количество попаданий.
Красные линии не пройдены.
Желтые линии были частично выполнены, но имеют один или несколько "путей выполнения", которые не были выполнены, и белые линии, содержащиеся в желтой области, являются линиями, которые не были протестированы из-за этого.
Не в C/C++, но я бы предположил выражение в том, что если в цикле непосредственно перед белой линией около 45 всегда не удается выполнить тестирование, поэтому он никогда не запускает код в блоке. Я почти определенно читаю код неправильно каким-то образом, так что это может быть легко неправильно.