数百数据库对象(视图,包,存储过程等)中的系统的语义等价没有格式化和无源代码注释。我们希望:的重新格式化(PL /)SQL代码
- 自动重新格式化代码(使用General SQL Parser)。
- 自动将标准评论标题复制到每个对象的源文件中。
问题
我们不能把这种翻天覆地的变化到生产而不被测试。
问题
你会如何验证重新格式化源代码在功能上等同于未格式化的代码?
谢谢!
数百数据库对象(视图,包,存储过程等)中的系统的语义等价没有格式化和无源代码注释。我们希望:的重新格式化(PL /)SQL代码
我们不能把这种翻天覆地的变化到生产而不被测试。
你会如何验证重新格式化源代码在功能上等同于未格式化的代码?
谢谢!
简单:
它们应该是相同的。
它们应该相同的原因是postgres将SQL解析为其标准的规范形式,所以即使添加不必要的括号也应该导致代码的内部版本相同。
我认为格式只需要那些需要修改的对象,如果是这样的话,我建议只格式化您正在处理的对象,最后结果应该投入生产。我使用Oracle SQL Developer,并且对我来说可以安全地处理程序单元并进行格式化。
对于你的问题:比较格式化的源代码与未格式化,你将不得不标记每个他们并比较结果。这实际上打败了你的原始目标。 ;-)
我强烈建议你不要这样做。我不会相信任何SQL或PL/SQL解析器来执行此操作。自动格式化代码并不是一项简单的任务。 –
这有什么可能的好处?可能有些代码(甚至可能是很多)永远不需要显着的工作,甚至看不到。与已知的收益相比,回归的风险肯定会太大。我宁愿使用缓慢但肯定的方法:无论何时需要更改对象,对其进行格式化并在*中为该对象添加标准标题*。然后,当您的更改经过测试时,重新格式化也会同时进行测试。 –