1

尝试使用靶心进行代码覆盖,以下是要求 -

要求 - 项目在 linux - 1. 在宿主系统中编译项目 - 它生成多个共享库 说 abc.so def.so 和 xyz.so

  1. 编译测试应用程序以验证这些生成的库(测试套件是一个单独的图像)
  2. 在不同的目标设备上复制所有共享库和测试应用程序。
  3. 现在在目标设备上执行测试应用程序来验证不同共享库的功能

现在的要求是检查这个“测试应用程序”提供了多少覆盖率。

到目前为止已经尝试过的东西 -

  1. 在 linux 主机上安装 Bullseye(用于编译项目) 1.a. 设置我的环境PATH = /BullseyecoveragePath/bin@路径的开始
  2. 项目编译make文件修改为使用Bullseye包自带的编译器,同样使用covc

CC = /BullseyecoveragePath/bin/covc /BullseyecoveragePath/bin/gcc-4.6 CXX = /BullseyecoveragePath/bin/covc /BullseyecoveragePath/bin/g++-4.6

  1. 导出 COVFILE=/data/test.cov
  2. 导出 COVDIR=/Project/src/base
  3. cov01 --on

  4. 项目编译成功(编译时显示靶心横幅)*经过轻微的 libcov32.a 库调整

  5. 编译完成后也会生成 test.cov

问题 -

  1. 尝试在设备 1.a 上复制已编译的库 abc.so def.so 和 xyz.so 以及“测试应用程序”。复制 test.cov --> 目标机器 1.b 的 /data。导出 COVFILE=/data/test.cov
  2. 跑“测试应用程序”->成功执行
  3. 将 test.cov 复制回主机以查看覆盖率。???但是 test.cov 文件没有变化???

有人可以帮助我错过什么或需要在这里额外做些什么以使其工作 -

  1. 共享图书馆
  2. 在两个不同的系统之间(在一个系统上编译并在第二个系统上运行)

谢谢

4

1 回答 1

1

在我看来,您正在采取正确的步骤,这是生成覆盖率报告所必需的,根据靶心文档- 使用共享库在该过程中没有太大区别。

文档中提到的一些有趣的事情可以检查,例如:

覆盖文件大小不会因运行时活动而增加。

所以也许看起来 covfile 大小相同,但它实际上包含覆盖信息?您可以尝试使用该CoverageBrowser程序查看它。

于 2014-05-17T21:42:39.850 回答