#lcov #coverage #gcov

app lcov-util

Utility commands to operate and analyze LCOV trace file at blazingly fast

12 releases

0.2.1 Jul 18, 2022
0.1.9 Jun 26, 2022
0.1.6 Sep 26, 2021
0.1.5 Jul 28, 2020
0.1.1 Feb 12, 2018

#1277 in Parser implementations

Download history 13/week @ 2023-10-29 1/week @ 2023-11-05 15/week @ 2023-11-12 2/week @ 2023-11-19 42/week @ 2023-11-26 24/week @ 2023-12-03 13/week @ 2023-12-10 2/week @ 2023-12-17 26/week @ 2023-12-24 12/week @ 2023-12-31 12/week @ 2024-01-14 15/week @ 2024-01-21 34/week @ 2024-01-28 3/week @ 2024-02-04 54/week @ 2024-02-11

109 downloads per month

MIT/Apache

240KB
2.5K SLoC

Rust 1.5K SLoC // 0.0% comments Shell 580 SLoC // 0.3% comments Perl 172 SLoC // 0.0% comments C 94 SLoC // 0.4% comments RPM Specfile 71 SLoC Pan 16 SLoC // 0.2% comments

lcov-util

maintenance status: passively-maintained license crates.io rust 1.56.1+ badge Rust CI codecov

Utility commands to manipulate and analyze LCOV tracefiles blazingly fast.

LCOV is a graphical front-end for coverage testing tool gcov. It collects gcov data for multiple source files and stores them into the file called as "tracefile".

The purpose of this crate is to operate the LCOV tracefile faster than the original LCOV Perl implementation.

Install

cargo install lcov-util

Performance

Merge LCOV tracefiles

Comparing the execution of merging LCOV tracefiles, between 3 programs:

with 3 datasets (generated by mkinfo tool from LCOV repository):

  • small: merging 5 small tracefiles (2 tests, 5 source files)
  • medium: merging 5 medium tracefiles (3 tests, 50 source files)
  • large: merging 5 large tracefiles (2 tests, 500 source files)
small medium large
lcov 1.16 0.22s 2.41s 21.69s
lcov master 0.23s 2.30s 21.34s
lcov-merge 0.01s 0.21s 2.73s

In this benchmark, lcov-merge is 10-20x faster than lcov 1.16 / lcov-master.

  • Environment:
    • Arch Linux (5.10.16.3-microsoft-standard-WSL2)
    • AMD Ryzen 9 5950X

See benchsuite directory for details.

Minimum supported Rust version (MSRV)

The minimum supported Rust version is Rust 1.56.1. At least the last 3 versions of stable Rust are supported at any given time.

While a crate is pre-release status (0.x.x) it may have its MSRV bumped in a patch release. Once a crate has reached 1.x, any MSRV bump will be accompanied with a new minor version.

License

This project is licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in lcov by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~2.5MB
~48K SLoC