Merge 迭代开发中自动生成代码的合并与扩展

Merge 迭代开发中自动生成代码的合并与扩展,merge,code-generation,xtext,maintenance,opc,Merge,Code Generation,Xtext,Maintenance,Opc,我遇到了一种情况,关于是否为某个SDK使用工具的讨论出现了 目标:在已经存在的IDL之上开发OPCUA提供商(需要法规遵从性),以更好地支持第三方开发 选项: 使用SDK附带的建模工具(GUI)(据说可以生成符合性测试的代码)。模型创建得非常快(该工具对用户不友好,但至少有一些工具)。然而,如果不谨慎使用,这个工具似乎很容易出错。(许多陷阱,例如camelCase中的错误,因此编译不可能,但可以用find+replace修复,如果描述中使用了选项卡(如果从文档中粘贴副本),则行为奇怪,如果删除

我遇到了一种情况,关于是否为某个SDK使用工具的讨论出现了

目标:在已经存在的IDL之上开发OPCUA提供商(需要法规遵从性),以更好地支持第三方开发

选项:

  • 使用SDK附带的建模工具(GUI)(据说可以生成符合性测试的代码)。模型创建得非常快(该工具对用户不友好,但至少有一些工具)。然而,如果不谨慎使用,这个工具似乎很容易出错。(许多陷阱,例如camelCase中的错误,因此编译不可能,但可以用find+replace修复,如果描述中使用了选项卡(如果从文档中粘贴副本),则行为奇怪,如果删除了使用的数据类型,则类型定义为空,等等-我花了一两天时间找到所有陷阱并修复生成的代码。) 输出是170.C和.H文件——我不想手工编写和链接这些文件
问题:无论何时更改模型,都会完全重新生成代码(当然包括错误和覆盖自适应和修复)

  • 使用Xtext生成我自己的模型描述语言,并将其编译为有效、兼容、可编译的C代码,创建一个选项以仅生成自上次导出状态以来实际更改的文件
问题:发电机和发电产品的维护是一项持续的任务,通常被认为是一场噩梦

  • 仅自动生成最基本的文件(使用A中提到的工具),其余的由手工完成。如果不是100%必要的话,永远不要接触生成的文件,因此覆盖不会造成任何伤害
问题:在A中提到,仍然存在,但可能要小一个数量级

我真的很想知道引擎盖下到底发生了什么,但是自己编写所有代码比生成代码(几个100k LOC)更容易出错。 我真正觉得我需要的是某种内部版本控制系统,以便在每次模型更改时将其合并在一起,但不会出现错误。因此,一个真正强大的合并工具,使用正则表达式排除某些段落将是非常棒的

有没有人遇到过类似的问题,你是如何解决的?在这种情况下,我如何确保第三方可以安全地重用我的代码?我是否应该为其他开发人员编写一本“最佳实践”手册


有没有一个好的方式向我的老板表达我的担忧?放弃不是一种选择。

因此,经过长时间的讨论和大量的评估,我们决定提取一些文件,我们必须修改这些文件,并向这些文件中插入适配器。这些文件将在每次迭代中新生成并手动合并,但正如我们所确认的,合并的行数将非常少

(适配器指的是“适配器模式”)