spreadsheet.py - Convert LCOV profile data to Excel spreadsheet
- Manual section:
1
- Manual group:
LCOV Utilities
NAME
- spreadsheet.py
Convert LCOV profile data to Excel spreadsheet for performance analysis and comparison
SYNOPSIS
spreadsheet.py [-o output.xlsx] [options] data.json [data2.json ...]
DESCRIPTION
spreadsheet.py is a utility script that converts JSON profile data from
genhtml, geninfo, and lcov into an Excel spreadsheet for easier
analysis. The script processes performance timing data and presents it in a
tabular format with statistical analysis and conditional formatting.
The spreadsheet includes:
Summary sheets for comparing multiple runs
Per-file timing data for detailed analysis
Statistical summaries (total, average, standard deviation)
Conditional formatting to highlight outliers
Color Coding
The spreadsheet uses conditional formatting to highlight timing anomalies:
Yellow: Values between 1.5 and 2.0 standard deviations larger than average (and more than 15% above average)
Red: Values more than 2.0 standard deviations larger than average (and more than 15% above average)
Green: Values more than 2.0 standard deviations smaller than average (significantly better performance)
Supported Tools
The script processes profile data from:
geninfo: Chunk timing, file processing, filter operations
genhtml: Source parsing, HTML generation, annotation, categorization
lcov: Tracefile merging, parsing, segment processing
OPTIONS
-ofile,--outfileSave Excel output to specified file. Default:
stats.xlsx.--thresholdpercentMinimum percentage difference from average to trigger colorization. Differences smaller than this threshold are not highlighted. Default: 15.0%.
--lowmultiplierStandard deviation multiplier for yellow highlighting. Values between
--lowand--highstandard deviations above average are colored yellow. Default: 1.5.--highmultiplierStandard deviation multiplier for red highlighting. Values more than
--highstandard deviations above average are colored red. Default: 2.0.-v,--verboseIncrease verbosity of the report. Includes additional timing data such as read and translate operations.
--show-filterInclude filter operation timing data in the spreadsheet. Filter data shows time spent in filter chunk processing, queue operations, and merging.
- files
One or more JSON profile data files to process. Files should be generated using the
--profileoption ofgeninfo,genhtml, orlcov.
EXAMPLES
Basic usage with a single profile file:
$ spreadsheet.py -o report.xlsx geninfo_profile.json
Compare multiple profile runs:
$ spreadsheet.py -o comparison.xlsx run1.json run2.json run3.json
Include filter timing data with verbose output:
$ spreadsheet.py --show-filter -v -o detailed.xlsx profile.json
Adjust sensitivity for outlier detection:
$ spreadsheet.py --threshold 10 --low 1.0 --high 1.5 -o sensitive.xlsx data.json
Generating Profile Data
To generate profile data for analysis, use the --profile option:
$ geninfo --profile geninfo_profile.json -o coverage.info ./build
$ genhtml --profile genhtml_profile.json -o html coverage.info
$ lcov --profile lcov_profile.json -a a.info -a b.info -o merged.info
SEE ALSO
genhtml(1), geninfo(1), lcov(1)
xlsxwriter documentation: https://xlsxwriter.readthedocs.io