在迭代开发中合并和扩展自动生成的代码

时间:2013-07-26 14:16:15

标签: merge code-generation xtext maintenance opc

我遇到过一种情况,即讨论是否使用某种SDK的工具。

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

选项:

  • 使用随SDK提供的建模工具(GUI)(据称可生成合规性测试代码)。模型创建得非常快(工具不是用户友好的,但至少有一些工具)。然而,这个工具似乎是错误的,如果不是非常谨慎地使用的话。 (很多陷阱,例如camelCase中的错误因此编译不可能但是可以使用find + replace修复,如果在描述中使用TABS(如果从文档中粘贴的副本)则表现很奇怪,如果使用的数据类型被删除则将类型定义留空第四天 - 花了我一两天时间找到所有这些并修复生成的代码。) 输出是170 .C和.H文件 - 我不想手写和链接。

问题:无论何时更改模型,代码都会完全重新生成(包括错误和覆盖适应性修正)。

  • 使用Xtext生成我自己的模型描述语言并将其编译为有效,兼容,可编译的C代码,创建一个选项,仅生成自上次导出状态后实际更改的文件。

问题:维护两者:生成器和生成的产品是一项连续的任务,通常被认为是一场噩梦。

  • 自动生成最基本的文件(使用A中提到的工具)并手动完成其余工作。如果不是100%必要,切勿触摸生成的文件,因此覆盖不会造成任何伤害。

问题:在A中提到,仍然存在,但可能会小一个数量级。

我真的很想知道,最新情况还有什么,但是自己编写所有代码比生成代码要少得多(几百克LOC)。 我真正需要的是某种内部版本控制系统,每次模型发生变化时都将它们合并在一起,但没有错误。所以一个非常强大的合并工具,使用regEx来排除某些段落会很棒......

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

有没有一种方法可以向老板提出我的疑虑?放弃不是一种选择。

1 个答案:

答案 0 :(得分:0)

因此,经过长时间的讨论和大量的评估,我们决定提取一些文件,我们必须改变这些文件并将适配器注入这些文件中。这些文件将在每次迭代时新生成并手动合并,但是当我们重新调整它时,它只会很少合并。

(适配器指'适配器模式')