3

我已经设置了一个 Teamcity 服务器,用于开始使用持续集成并进行日常构建以及检测到 VCS 签入时。我和我的团队现在正在开发一款电子游戏,我们使用 Unity 作为游戏引擎,使用 C# 作为编程语言。我在我们的项目中手动使用了 Gendarme,并且可以完全利用它提供的好处。所以我试图让它作为 Teamcity 的构建步骤运行,但我似乎可以弄清楚如何让它工作。有人对这种工具组合有一些经验吗?任何分享的经验都值得赞赏。

谢谢。

4

1 回答 1

2

好吧,最后我确实找到了解决方案,并将其发布在这里,以便任何有兴趣的人都可以看到它。

Teamcity 有一个命令行构建步骤,可用于使用 Gendarme 作为构建过程的一部分(对于我将在构建步骤的 Workspace 属性中编写的自定义脚本,您需要将每个 .exe 放在)。这是它所需的控制台命令:

gendarme.exe --v --html Your\Path\To\Save\Report\GendarmeReport.html --severity all --confidence all "Path/To/Your/Project/Library/ScriptAssemblies/Assembly-CSharp.dll" "Path/To/Your/Project/Library/ScriptAssemblies/Assembly-CSharp-firstpass.dll" "Path/To/Your/Project/Library/ScriptAssemblies/Assembly-UnityScript-firstpass.dll"

可能,如果您在执行 Unity 构建之后运行此构建步骤,则此处的程序集将被 Unity 擦除,因此您需要在宪兵步骤之前有另一个控制台命令构建步骤,这个:

Unity.exe -batchmode -nographics -quit

这将使统一重新生成库文件夹内容并运行 Gendarme 构建步骤,然后执行 trcik。最后,Gendarme 有时会在完成报告时抛出 1 退出代码,但报告已成功并且每个规则检查也已成功,所以我认为这可能是一个小错误,根据 Gendarme 的手册页,此代码在以下时间返回

运行程序执行成功,但发现一些缺陷或未指定程序集。

如果程序集被正确检查,因为您有重新生成它们的步骤,那么您可以告诉 Teamcity 忽略退出代码 1,您可以转到 Teamcity 的构建失败条件并取消选中选项构建过程退出代码不为零,仅此而已。

希望这可以帮助其他对此类事情感兴趣的人。

于 2013-05-16T20:08:20.210 回答