Loading... http://releases.llvm.org/7.0.0/tools/clang/docs/SourceBasedCodeCoverage.html 1. 编译时打开 coverage 选项 传递 -fprofile-instr-generate -fconverage-mapping $ clang++ -fprofile-instr-generate -fcoverage-mapping foo.cc -o foo 2. 运行你的程序 运行你的程序。程序会写入一个 raw profile 文件到环境变量 LLVM_PROFILE_FILE 制定的路径。 如果环境变量不存在,profile 默认写到 default.profraw ,与当前程序同一个目录。 如果 LLVM_PROFILE_FILE 包含不存在的目录,缺失的目录结构会被创建。 有一些模式字符串(pattern strings)会被重写: %p -> 进程ID %h -> hostname %Nm -> 指令二进制签名 $ LLVM_PROFILE_FILE="foo.profraw" ./foo 3. 创建 coverage 报告 raw profiles 在被用作生成报告前应该被重新索引。 使用 llvm-profdata 工具。 $ llvm-profdata merge -sparse foo.profraw -o foo.profdata 有很多种方法渲染 coverage 报告。最简单的选项是生成面向行的报告 $ llvm-cov show ./foo -instr-profile=foo.profdata html 报告指定 format 即可 $ llvm-cov show ./foo -instr-profile=foo.profdata -format=html > report.html 生成文件级别 coverage 统计信息概览使用这个 $ llvm-cov report ./foo -instr-profile=foo.profdata Last modification:June 1st, 2020 at 01:17 am © 允许规范转载 Support 如果觉得我的文章对你有用,请随意赞赏