我有一个大型应用程序来管理由三个或四个可执行文件和多达五十个.dll组成。许多源代码文件在许多项目中共享。
这个问题对我们很多人来说都是一个熟悉的问题 - 如果我更改了一些源代码,我希望能够识别哪些二进制文件会发生变化,因此需要重新测试哪些。
一种简单的方法就是比较文件大小。这是一个80%可接受的解决方案,但至少有理论上可能遗漏一些东西。其次,它几乎没有迹象表明改变了什么;获得某种形式的报告是理想的,这样我就可以过滤掉不相关的内容(例如日期/版本的版权等等。)
好的一面:
在负面
在我开始编写一些代码来解决问题之前,我想问小组他们对如何处理这个问题可能有什么建议。
StackOverflow的规则禁止我询问推荐的软件,但是如果有人对持续集成工具有任何积极的经验会有所帮助 - 很棒
我愿意接受与此相关的任何建议或观察。
答案 0 :(得分:0)
将其用于>对于大型项目的商业内部和自由职业者工作10年,我建议尝试Apache Ant。它是一个支持依赖关系的构建工具,并且具有许多非常有用的功能。
Apache Ant还可以很好地与CI工具集成,例如Hudson / Jenkins,Bamboo等。
另一个建议 - 基于Maven的经验 - 是将通用软件架构设计为尽可能模块化。如果模块(一个目录中的单个或多个源或DCU文件)使用目录名中的版本号作为版本号,则可以从这些模块中精确控制应用程序的组成。
答案 1 :(得分:0)
如果你想自己编写这样一个工具,那么方法就是这样:
这种方法的问题在于,每次将新单元添加到项目中或从项目中删除现有单元时,您可能必须手动更新依赖树。
但最好的方法是使用一些版本控制软件而不是重新发明轮子。我自己喜欢GIT的工作方式,我相信通过将GIT正确实现到项目中,mannager本身可以非常强大地支持分支/分支(每个项目都是自己的分支,每个版本的软件都可以是自己的支行。)
现在最新版本的Delphi确实通过SVN完成了GIT集成,但遗憾的是这限制了一些最好的GIT功能。因此,如果您决定将GIT支持直接集成到Delphi中,我将首先使用它。
答案 2 :(得分:0)
在我看来,你的问题归结为知道你的各种可执行文件中包含哪些单位。由于您使用的是搜索路径,因此您很难提前完成此操作。最有力的方法是查阅编译器发出的.map文件。它包含可执行文件中包含的所有单元的列表。
一旦您知道每个可执行文件中包含哪些单元,您就需要知道这些单元中是否有任何更改。该信息包含在您的修订控制系统中。把这些放在一起,你就拥有了所需的信息。
当然,仅仅因为某个单元的源代码已经发生变化,您可能会认为不需要重新测试。也许唯一的变化是版权,或版权标签中的日期或其他一些。但是要求计算机做出这样的判断是太过分了。在某些时候,你需要一个人来加强并承担责任。
这有什么奇怪的,但是你问的是这个问题。在我看来,尝试部分测试是非常危险的。我不明白你为什么不重新测试整个产品。