數百數據庫對象(視圖,包,存儲過程等)中的系統的語義等價沒有格式化和無源代碼註釋。我們希望:的重新格式化(PL /)SQL代碼
- 自動重新格式化代碼(使用General SQL Parser)。
- 自動將標準評論標題複製到每個對象的源文件中。
問題
我們不能把這種翻天覆地的變化到生產而不被測試。
問題
你會如何驗證重新格式化源代碼在功能上等同於未格式化的代碼?
謝謝!
數百數據庫對象(視圖,包,存儲過程等)中的系統的語義等價沒有格式化和無源代碼註釋。我們希望:的重新格式化(PL /)SQL代碼
我們不能把這種翻天覆地的變化到生產而不被測試。
你會如何驗證重新格式化源代碼在功能上等同於未格式化的代碼?
謝謝!
簡單:
它們應該是相同的。
它們應該相同的原因是postgres將SQL解析爲其標準的規範形式,所以即使添加不必要的括號也應該導致代碼的內部版本相同。
我認爲格式只需要那些需要修改的對象,如果是這樣的話,我建議只格式化您正在處理的對象,最後結果應該投入生產。我使用Oracle SQL Developer,並且對我來說可以安全地處理程序單元並進行格式化。
對於你的問題:比較格式化的源代碼與未格式化,你將不得不標記每個他們並比較結果。這實際上打敗了你的原始目標。 ;-)
我強烈建議你不要這樣做。我不會相信任何SQL或PL/SQL解析器來執行此操作。自動格式化代碼並不是一項簡單的任務。 –
這有什麼可能的好處?可能有些代碼(甚至可能是很多)永遠不需要顯着的工作,甚至看不到。與已知的收益相比,迴歸的風險肯定會太大。我寧願使用緩慢但肯定的方法:無論何時需要更改對象,對其進行格式化並在*中爲該對象添加標準標題*。然後,當您的更改經過測試時,重新格式化也會同時進行測試。 –