👣 Покрытие кода в Rust



Сначала поговорим об истории покрытия кода в Rust. Эта информация может пригодиться, если вы будете искать актуальные решения в Google.



История покрытия кода в Rust

Tarpaulin

Tarpaulin  —  это простой инструмент для реализации покрытия кода в Rust, но у него есть ограничения. Вот интуитивное описание работы Tarpaulin: он будет инструментировать код, а затем использовать ptrace для прослушивания происходящего, чтобы подсчитать строки для анализа покрытия.



Именно поэтому Tarpaulin поддерживает только Linux, а также только процессоры x86_64.



Tarpaulin обеспечивает покрытие строк и является достаточно надежным инструментом, но все же выдает некоторые неточности в результатах.



gcov

До появления покрытия на основе исходного кода Rust использовал технику gcov, которая полагалась на отладочную информацию, чтобы сопоставить LLVM IR (находится внизу, сгенерировано и скрыто от вас) со строками исходного кода (находятся наверху  —  это то, что вы привыкли видеть). Такая технология должна натолкнуть вас на мысль об именах в строках кода и о ведении подсчета того, какая строка выполняется и сколько раз.



Поскольку при переходе от исходного кода к скомпилированной двоичной форме разрешение данных теряется от слоя к слою, технология, основанная на gcov, не является самой точной.



➡️ Читать дальше



@rust_code