2014-03-30 49 views
2

我们在所有TeamCity代理上安装了BullsEye Coverage,并且有一个夜间脚本,它打开BullsEye,重建我的项目,运行单元测试,然后关闭BullsEye。 BullsEye bin目录不在机器的路径中,我的脚本在运行之前添加路径。 (该路径仅作为该会话脚本的一部分添加,并且不会为整个机器永久设置)。为什么使用BullsEye编译器编译项目?

最近我注意到在TeamCity构建日志中,所有项目(常规项目,不仅仅是配置为运行覆盖的项目)都使用BullsEye编译器。以下是日志中的一个示例:

[11:29:38] [bsii_algorithms\build\vc10\bsii_algorithms.vcxproj] ClCompile (8s) 
[11:29:38] [ClCompile] CL (3s) 
[11:29:38] [CL] C:\Program Files (x86)\BullseyeCoverage\bin\CL.exe /c /I..\..\include /I..\..\..\bsii_common\include ... 

另外,其中一个项目的构建速度非常慢。具体来说,“ResolveProjectReferences”大约需要20分钟。我在网上阅读,可能会发生这种情况,因为开启了某种分析。所以我使用TeamCity用户登录到服务器,并再次关闭了BullsEye。但它没有帮助。

所以我的问题是:

  • 那是正确的,一切都被编译与靶心文件夹中的编译器,即使靶心是不是在机器路径?
  • 如何配置机器以便只覆盖脚本使用BullsEye编译器?
  • 这可能是建筑需要很长时间的原因吗?

谢谢!

回答

0

是的,预计使用来自Bullseye文件夹的编译器。这是Bullseye覆盖工具的工作原理,通过拦截具有特殊“仪器化版本”的实际编译器。最终,Visual Studio编译器将被调用。

如果您删除脚本启用Bullseye(通过调用'cov01 -1')的步骤,那么Bullseye编译器应该只是对Visual Studio编译器进行传递,并且您不会有代码覆盖。

我不确定时间问题。

链接到VS舷窗文档:here

0

注意靶心,在全球范围内开启(?通过注册表),所以任何构建了在平行于您的报道编译运行后会发现自己(部分)仪器。基于这个原因,我们在自己的机器上运行我们的覆盖范围。

+0

您确定吗?我们通过一个打开覆盖范围的批处理脚本运行构建(使用cov01 --on)。这不适用于该批处理脚本吗? – Dina