无论是否收集了静态数据或动态内存访问数据,您都可以编译、检测和运行应用程序来收集代码覆盖数据。请注意,在收集动态内存错误数据之前使用 –g 选项生成应用程序时,您在检测二进制文件之前保存了它的一个副本。
复制要检测的已保存二进制文件以进行覆盖数据收集。
$ cp a.out.save a.out
使用 uncover 检测二进制文件:
$ uncover a.out
运行检测过的二进制文件以收集代码覆盖数据。
$ ./a.out
代码覆盖数据将写入 sample 目录中的 a.out.uc 目录。
对 a.out.uc 目录运行 uncover。
$ uncover -a a.out.uc
代码覆盖数据将写入 sample/a.out.analyze/uncover 目录。
启动代码分析器 GUI 以查看结果:
$ code-analyzer a.out &
"Results"(结果)标签同时显示静态问题、动态内存问题和代码覆盖问题。
要过滤结果以便仅显示代码覆盖问题,请在 "Issues"(问题)标签中选中 "Coverage"(覆盖)选项。
现在,"Results"(结果)标签仅显示十二个代码覆盖问题。每个问题的描述中均包含一个潜在的覆盖百分比,此百分比是在增加覆盖相关函数的测试时将加入该应用程序总覆盖范围的覆盖百分比。
在 "Issues"(问题)标签中,previse_all.c 源文件中有九个覆盖问题,sample2.c 源文件中有三个覆盖问题,而 previse_1.c 源文件中有一个覆盖问题。
要仅显示 sample2.c 文件的问题,请在 "Issues"(问题)标签上选中该文件对应的选项。
"Results"(结果)标签现在仅显示在 sample2.c 中找到的三个代码覆盖问题。
单击其中一个问题的源文件路径链接以打开源文件。在源文件中向下滚动,直到在左边界看到警告图标。
将使用黄色的方括号来标记未覆盖的代码。
在文件中找到的覆盖问题标记有警告图标 。