Oracle® Solaris Studio 12.4:代码分析器教程

退出打印视图

更新时间: 2014 年 10 月
 
 

收集和显示代码覆盖数据

无论是否收集了静态数据或动态内存访问数据,您都可以编译、检测和运行应用程序来收集代码覆盖数据。请注意,在收集动态内存错误数据之前使用 –g 选项生成应用程序时,您在检测二进制文件之前保存了它的一个副本。

  1. 复制要检测的已保存二进制文件以进行覆盖数据收集。

    $ cp a.out.save a.out
  2. 使用 uncover 检测二进制文件:

    $ uncover a.out
  3. 运行检测过的二进制文件以收集代码覆盖数据。

    $ ./a.out

    代码覆盖数据将写入 sample 目录中的 a.out.uc 目录。

  4. a.out.uc 目录运行 uncover

    $ uncover -a a.out.uc

    代码覆盖数据将写入 sample/a.out.analyze/uncover 目录。

  5. 启动代码分析器 GUI 以查看结果:

    $ code-analyzer a.out &

    "Results"(结果)标签同时显示静态问题、动态内存问题和代码覆盖问题。

  6. 要过滤结果以便仅显示代码覆盖问题,请在 "Issues"(问题)标签中选中 "Coverage"(覆盖)选项。

    现在,"Results"(结果)标签仅显示十二个代码覆盖问题。每个问题的描述中均包含一个潜在的覆盖百分比,此百分比是在增加覆盖相关函数的测试时将加入该应用程序总覆盖范围的覆盖百分比。

    image:显示某些代码覆盖问题的代码分析器 “Results“(结果)标签

    提示  -  要查看所有问题而不上下滚动,请单击 "Results"(结果)标签顶部的 "Snippets"(代码片段)按钮 image:隐藏代码片段按钮 以隐藏代码片段。

    在 "Issues"(问题)标签中,previse_all.c 源文件中有九个覆盖问题,sample2.c 源文件中有三个覆盖问题,而 previse_1.c 源文件中有一个覆盖问题。

  7. 要仅显示 sample2.c 文件的问题,请在 "Issues"(问题)标签上选中该文件对应的选项。

    "Results"(结果)标签现在仅显示在 sample2.c 中找到的三个代码覆盖问题。

    image:显示 sample2.c 的代码覆盖错误的代码分析器 “Results“(结果)标签
  8. 单击其中一个问题的源文件路径链接以打开源文件。在源文件中向下滚动,直到在左边界看到警告图标。

    image:包含未覆盖代码的源文件部分以及覆盖问题的警告图标

    将使用黄色的方括号来标记未覆盖的代码。

    在文件中找到的覆盖问题标记有警告图标 image:警告问题图标