genhtml 工具使用说明
简介
genhtml
是一个用于生成 HTML 格式代码覆盖率报告的工具,基于 lcov 生成的覆盖数据文件(如 lcov.info
)生成交互式 HTML 报告。它支持多种自定义选项,可控制报告内容、样式、输出格式等。
基本用法
genhtml [OPTIONS] TRACEFILE_PATTERN(S)
- TRACEFILE_PATTERN(S):覆盖数据文件的路径或通配符模式(如
*.info
)。
- 示例:
genhtml -o report coverage.info
常用选项
通用选项
选项 |
说明 |
示例 |
-h, --help |
显示帮助信息并退出。 |
genhtml --help |
--version |
显示版本号并退出。 |
genhtml --version |
-v, --verbose |
增加输出详细程度(可重复使用,如 -vv )。 |
genhtml -vv coverage.info |
-q, --quiet |
减少输出信息(关闭进度提示)。 |
genhtml -q coverage.info |
--debug |
增加调试信息输出。 |
genhtml --debug coverage.info |
--config-file FILENAME |
指定配置文件路径。 |
genhtml --config-file myconfig.conf coverage.info |
--rc SETTING=VALUE |
覆盖配置文件中的设置。 |
genhtml --rc genhtml_output_dir=/tmp report |
操作选项
输出控制
选项 |
说明 |
示例 |
-o, --output-directory OUTDIR |
指定 HTML 输出目录。 |
genhtml -o report coverage.info |
-d, --description-file DESCFILE |
指定测试描述文件路径。 |
genhtml -d test_desc.txt coverage.info |
-b, --baseline-file BASEFILE |
指定基线覆盖数据文件(用于对比)。 |
genhtml -b baseline.info coverage.info |
数据处理
选项 |
说明 |
示例 |
--annotate-script SCRIPT |
使用脚本获取版本控制数据(如 Git)。 |
genhtml --annotate-script git_annotate.sh coverage.info |
--filter FILTERS |
应用过滤规则(如 branch 、function )。 |
genhtml --filter branch coverage.info |
--include PATTERN |
仅包含匹配模式的文件。 |
genhtml --include 'src/*.c' coverage.info |
--exclude PATTERN |
排除匹配模式的文件。 |
genhtml --exclude 'test/*' coverage.info |
--source-directory DIR |
指定源代码目录路径。 |
genhtml --source-directory /my/project coverage.info |
高级选项
选项 |
说明 |
示例 |
-j, --parallel [N] |
启用并行处理(N 为最大线程数)。 |
genhtml -j4 coverage.info |
--profile [FILENAME] |
记录性能统计到文件。 |
genhtml --profile stats.json coverage.info |
HTML 输出选项
布局与样式
选项 |
说明 |
示例 |
-f, --frames |
使用 HTML 框架显示源代码。 |
genhtml --frames coverage.info |
-t, --title TITLE |
设置报告标题。 |
genhtml -t "My Project Coverage" coverage.info |
--css-file CSSFILE |
使用外部 CSS 文件。 |
genhtml --css-file custom.css coverage.info |
--dark-mode |
启用深色主题。 |
genhtml --dark-mode coverage.info |
内容显示
选项 |
说明 |
示例 |
--show-details |
生成详细目录视图。 |
genhtml --show-details coverage.info |
--show-owners |
显示所有所有者的覆盖率摘要。 |
genhtml --show-owners coverage.info |
--no-sourceview |
不生成源代码视图。 |
genhtml --no-sourceview coverage.info |
路径与文件处理
选项 |
说明 |
示例 |
-p, --prefix PREFIX |
移除路径前缀(如 /home/user/ )。 |
genhtml --prefix /home/user/ coverage.info |
--substitute REGEXP |
通过正则表达式修改源文件路径。 |
genhtml --substitute 's/old/new/' coverage.info |
高级选项
选项 |
说明 |
示例 |
--baseline-title TITLE |
设置基线数据的标题。 |
genhtml --baseline-title "Previous Build" -b baseline.info coverage.info |
--diff-file UDIFF |
使用统一差异文件对比源代码变更。 |
genhtml --diff-file changes.diff coverage.info |
--demangle-cpp |
反编译 C++ 函数名(如 std::string )。 |
genhtml --demangle-cpp coverage.info |
示例命令
生成基本报告:
genhtml -o report coverage.info
使用基线对比并指定标题:
genhtml -o report --baseline-file baseline.info --title "Coverage Report" coverage.info
并行处理并压缩 HTML:
genhtml -j8 --html-gzip -o report coverage.info
过滤特定目录并启用深色主题:
genhtml --include 'src/' --dark-mode -o report coverage.info
注意事项
- 覆盖数据文件:需先通过
lcov
或其他工具生成 .info
格式的覆盖数据。
- 路径处理:使用
-p
或 --prefix
可简化生成的 HTML 中的路径显示。
- 基线文件:
--baseline-file
用于对比历史覆盖率数据,需与当前数据格式一致。
- 详细帮助:更多选项细节可通过
man genhtml
或参考官方文档获取。
通过合理配置选项,genhtml
可生成高度定制化的代码覆盖率报告,满足不同项目的需求。