我正在尝试编写一个小的工具来支持我们公司正在运行的一些代码覆盖率测试。
这是我对该工具的要求 -
输入 - 已修改的文件列表(.cpp和.h)(作为签入更改列表的一部分)
输出 - 在源中添加或修改的所有函数(作为签入更改的结果)。
知道我怎么能这样做吗?基本上,它归结为更改的行和与更改的行相关的函数是什么......
更多信息 - 源控制:Perforce 平台:Windows
答案 0 :(得分:2)
这听起来很棘手。而且我不确定你对源代码中已更改函数的信息做了什么。您不希望将代码覆盖范围限制为这些函数:可能是更改的函数影响了未更改函数的覆盖范围。
也许最好的办法就是在每次办理登机手续时都运行所有测试,如果有任何变化,则每小时运行一次。然后你可以跳过复杂的工具创建,无论如何都会有更好的结果。
答案 1 :(得分:0)
由于所有文件都已检入Perforce,因此您可以使用先前版本对已更改文件执行批处理diff(p4 diff2)。 p4 diff2也采用了分支规范,这可能是一种更方便的方法。
找到差异时,您需要编写一个脚本来提取已更改行的方法名称。该算法可能是“在文件中向后搜索,直到找到语法的方法签名”。
要聪明,请根据文件名或其他脚本生成的类列表确定类名。此类名称列表可用于确定方法签名。如您所知,类名后跟::和方法名称。
我判断这个算法很容易使95 +%准确,很难使任意输入100%准确。
此脚本应排除重复项以生成唯一列表。
结果列表是您在问题中请求的列表。