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
可生成高度定制化的代码覆盖率报告,满足不同项目的需求。