2

我正在尝试编写一个小工具来支持我们在公司运行的一些代码覆盖率测试。

这是我对工具的要求 -

输入- 已修改的文件列表(.cpp 和 .h)(作为签入更改列表的一部分)

输出- 在源中添加或修改的所有功能(作为签入更改的结果)。

知道我该怎么做吗?基本上,它归结为更改了哪些行以及与更改的行相关的功能是什么......

更多信息 - 源代码控制:Perforce 平台:Windows

4

2 回答 2

2

This sounds tricky. And I'm not sure what you'd do with the info about the changed functions in the source. You don't want to limit your code coverage to those functions: it could be that a changed function affected the coverage of an unchanged function.

Perhaps the best thing to do is simply run all your tests on each check-in, or once an hour if anything has changed. Then you could skip the complex tool creation, and have better results anyway.

于 2009-02-01T21:58:18.283 回答
0

由于所有文件都已检入 Perforce,因此您可以对已更改文件与之前的版本进行批量差异 (p4 diff2)。p4 diff2 也采用分支规范,这可能是一种更方便的方法。

当发现差异时,您将需要编写一个脚本来提取更改行的方法名称。该算法可能是“在文件中向后搜索,直到找到语法的方法签名”。

聪明一点,根据文件名或另一个脚本生成的类列表来确定类名。这个类名列表有助于确定方法签名。如您所知,类名后面是 :: 和方法名。

我认为这个算法很容易达到 95% 以上的准确率,而对于任意输入很难达到 100% 的准确率。

此脚本应排除重复项以生成唯一列表。

结果列表是您在问题中请求的列表。

于 2009-02-03T04:33:29.497 回答