3

我们有大量针对嵌入式 Linux 目标进行交叉编译的 C/C++ 代码。我们最近开始实现在我们的开发服务器(也是 Linux)上运行的单元测试(使用 gmock/gtest)。检测到签入时会自动执行单元测试(我们使用的是 Bamboo)。

我们正在使用 gcov 和 lcov 在这些单元测试期间分析和报告代码覆盖率,效果相当好。然而,鉴于我们没有开始单元测试,我们的大部分代码库没有被单元测试覆盖。除了“单元测试的文件的单元测试覆盖率是多少”之外,一个有趣的指标是“单元测试覆盖了我们整个代码库的多少”,其中包括当前未进行单元测试的那些文件。使用 gcov,您需要实际编译和链接给定的源文件,然后执行生成的程序以获取该文件可能的覆盖率数据。

为了开发这个“代码库”覆盖率指标,我编写了一些 Python 脚本来利用 MSquared 的 RSM(我们已经在我们的开发服务器上拥有它)来评估代码,然后将该数据与 gcov 返回的覆盖率数据配对。它工作得相当好,但在比较 RSM 和 gcov 评估的文件的语句和分支等内容时,存在足够显着的差异,我对此作为最终解决方案并不满意。

以下是我的问题:

  1. 有没有其他人试图按照这些思路做一些事情?
  2. 有没有更好的方法来解决它?
  3. 是否有任何工具(最好是免费/开源)可以评估类似于 gcov 的代码并且可用于执行这种基于覆盖率的静态分析?

谢谢你。

4

0 回答 0