.\" Man page generated from reStructuredText .\" by the Docutils 0.23 manpage writer. . . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .TH "SPREADSHEET.PY" "1" "2026-07-07" "2.5" "LCOV" .SH NAME spreadsheet.py \- spreadsheet documentation .INDENT 0.0 .TP .B Manual section 1 .TP .B Manual group LCOV Utilities .UNINDENT .SH NAME .INDENT 0.0 .TP .B spreadsheet.py Convert LCOV profile data to Excel spreadsheet for performance analysis and comparison .UNINDENT .SH SYNOPSIS .INDENT 0.0 .INDENT 3.5 .sp .EX spreadsheet.py [\-o output.xlsx] [options] data.json [data2.json ...] .EE .UNINDENT .UNINDENT .SH DESCRIPTION .sp \fBspreadsheet.py\fP is a utility script that converts JSON profile data from \fBgenhtml\fP, \fBgeninfo\fP, and \fBlcov\fP 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. .sp The spreadsheet includes: .INDENT 0.0 .IP \(bu 2 \fBSummary sheets\fP for comparing multiple runs .IP \(bu 2 \fBPer\-file timing data\fP for detailed analysis .IP \(bu 2 \fBStatistical summaries\fP (total, average, standard deviation) .IP \(bu 2 \fBConditional formatting\fP to highlight outliers .UNINDENT .SH COLOR CODING .sp The spreadsheet uses conditional formatting to highlight timing anomalies: .INDENT 0.0 .IP \(bu 2 \fBYellow\fP: Values between 1.5 and 2.0 standard deviations larger than average (and more than 15% above average) .IP \(bu 2 \fBRed\fP: Values more than 2.0 standard deviations larger than average (and more than 15% above average) .IP \(bu 2 \fBGreen\fP: Values more than 2.0 standard deviations smaller than average (significantly better performance) .UNINDENT .SH SUPPORTED TOOLS .sp The script processes profile data from: .INDENT 0.0 .IP \(bu 2 \fBgeninfo\fP: Chunk timing, file processing, filter operations .IP \(bu 2 \fBgenhtml\fP: Source parsing, HTML generation, annotation, categorization .IP \(bu 2 \fBlcov\fP: Tracefile merging, parsing, segment processing .UNINDENT .SH OPTIONS .INDENT 0.0 .TP .B \fB\-o\fP \fIfile\fP, \fB\-\-out\fP \fIfile\fP Save Excel output to specified file. Default: \fBstats.xlsx\fP\&. .TP .B \fB\-\-threshold\fP \fIpercent\fP Minimum percentage difference from average to trigger colorization. Differences smaller than this threshold are not highlighted. Default: 15.0%. .TP .B \fB\-\-low\fP \fImultiplier\fP Standard deviation multiplier for yellow highlighting. Values between \fB\-\-low\fP and \fB\-\-high\fP standard deviations above average are colored yellow. Default: 1.5. .TP .B \fB\-\-high\fP \fImultiplier\fP Standard deviation multiplier for red highlighting. Values more than \fB\-\-high\fP standard deviations above average are colored red. Default: 2.0. .TP .B \fB\-v\fP, \fB\-\-verbose\fP Increase verbosity of the report. Includes additional timing data such as read and translate operations. .TP .B \fB\-\-show\-filter\fP Include filter operation timing data in the spreadsheet. Filter data shows time spent in filter chunk processing, queue operations, and merging. .TP .B \fIfiles\fP One or more JSON profile data files to process. Files should be generated using the \fB\-\-profile\fP option of \fBgeninfo\fP, \fBgenhtml\fP, or \fBlcov\fP\&. .UNINDENT .SH EXAMPLES .sp Basic usage with a single profile file: .INDENT 0.0 .INDENT 3.5 .sp .EX $ spreadsheet.py \-o report.xlsx geninfo_profile.json .EE .UNINDENT .UNINDENT .sp Compare multiple profile runs: .INDENT 0.0 .INDENT 3.5 .sp .EX $ spreadsheet.py \-o comparison.xlsx run1.json run2.json run3.json .EE .UNINDENT .UNINDENT .sp Include filter timing data with verbose output: .INDENT 0.0 .INDENT 3.5 .sp .EX $ spreadsheet.py \-\-show\-filter \-v \-o detailed.xlsx profile.json .EE .UNINDENT .UNINDENT .sp Adjust sensitivity for outlier detection: .INDENT 0.0 .INDENT 3.5 .sp .EX $ spreadsheet.py \-\-threshold 10 \-\-low 1.0 \-\-high 1.5 \-o sensitive.xlsx data.json .EE .UNINDENT .UNINDENT .SH GENERATING PROFILE DATA .sp To generate profile data for analysis, use the \fB\-\-profile\fP option: .INDENT 0.0 .INDENT 3.5 .sp .EX $ 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 .EE .UNINDENT .UNINDENT .SH AUTHOR .sp Henry Cox <\%> .SH SEE ALSO .sp \fBgenhtml(1) \%\fP, \fBgeninfo(1) \%\fP, \fBlcov(1) \%\fP .INDENT 0.0 .IP \(bu 2 xlsxwriter documentation: \% .UNINDENT .SH Copyright 2024-2026, LCOV Project .\" End of generated man page.