背景

我有一个写入应用在地C++过去的几年里,周围是60KLOC.有许多许多的职能和类死亡(可能是10-15%的喜欢的类似Unix基于下列问题要求).我们最近开始做单元的测试,对所有新的编码,并将其应用到修改的代码,只要有可能。然而,我要作一个赃物,我们必须小于5%测试的复盖范围在目前时刻。

假定/制约

该方法和/或工具必须支持:

  • 司机(即非托管)C++
  • Windows XP
  • Visual Studio2005年
  • 必须不需要用户提供的测试案例的复盖范围。(例如不能依靠单元的测试产生的代码复盖率)

如果的方法支持更多这些需求,那么伟大。

注: 我们目前使用的专业版Visual Studio2005年,不队系统。因此,采用团队系统可能是一个 有效的 建议(我不知道,我从来没有使用过它的)但是我希望它是不是 解决方案。

为什么使用单元的测试,用于代码复盖率是有问题的

我认为,这是不可能的通用工具,以找到所有死亡(例如无法访问代码)在任何任意使用具有零误报(我认为这将相当于停止的问题)。但是,我也相信它是可能的通用工具,以找到许多类型的无用代码是高度可能在实际上可以死了,像类或功能,这是从来没有参考代码中由其他任何东西。

通过使用单元的测试,以提供这种报道,你不再使用通用算法,并因此增加了两个百分比的死亡代码可探测的概率和任命不是误报。相反,使用单元的测试,可能会导致虚假阴性由于该单元的测试本身可能是唯一行使一个特定的代码。理想,我会回归测试,该演习的所有外部可用的方法,Api,用户的控制,等等。这将作为一个基线测量的代码分析复盖范围排除一些方法被误报。然而可悲的是,我没有这种自动化测试。

因为我有这样的一个大型代码基地与这样一个低种情况下测试的复盖范围百分比,但是,我在寻找东西可以帮助而不需要大量的时间投入编写测试情况。

的问题

你怎么去检测死的代码自动或半自动化方式在一个地C++应用程序上的视窗平台,与Visual Studio2005年发展的环境?

也参看

死亡代码检测在遗产C/C++项目 我想告诉VC++编译所有代码。可以这样做?

有帮助吗?

解决方案

要求的连接,以消除的未引用的对象(/OPT:REF)。如果您使用的功能级联,并详细连接的输出,连接体产出将列出每一个功能,它可以证明为未使用。这一名单可能会远远没有完成,但你已经有工具的需要。

其他提示

我们使用 靶心, 我可以推荐它。它不需要运行一个单元的测试环境,尽管这就是我们做什么。

使用代码复盖率的工具,对你的单元。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top