簡體   English   中英

驗證Java類之間方法協定的一致性

[英]Verify consistency of method contracts between classes of java

我們公司中有一個龐大的應用程序,它是用其源代碼(實際上幾乎是所有源代碼)購買的,並且我們一直在努力使其適應我們的需求,修復等。很久以前,有人認為這將是編譯項目的一個好方法是擁有原始公司的預編譯jar,然后僅在從Override文件夾中編輯或添加我們需要的類,而Override文件夾是從帶有原始源代碼的一些zip文件中獲得的。 因此,當我們編譯時,我們僅編譯我們已編輯的類,在Classpath中使用原始的jar,然后將新的或已編輯的類與原始jar一起創建一個新的Jar。

問題似乎是人們正在更改方法協定,編輯接口並向抽象類添加抽象方法。 編譯時,我們不會重新編譯完整的源代碼,而不會重新編譯完整的源代碼,因此編譯器僅檢查覆蓋的源代碼的合同一致性。 我已經開始注意到事情似乎正在崩潰,因為舊的類正在嘗試調用不再存在的方法,或者類調用的類的方法實際上實現了接口的部分版本。

我不能簡單地將原始源代碼與我們覆蓋的源代碼連接在一起,因為某些類和Java文件是在生成時自動生成的,因此我可能會意外修復某些確實沒有損壞的東西。 (我嘗試過,這就是為什么我知道)

有沒有一種方法可以自動驗證各種已編譯jar的類之間的合同一致性? 解決這些隱患之后,我將能夠將兩個源目錄合並在一起,並在將來避免此問題。

為什么不編譯所有內容? (您確實有源代碼)這樣​​,您至少會得到編譯錯誤。

我假設您沒有任何測試可以驗證一切是否正常。 也許您也應該開始寫那些。 一個不錯的起點是測試之前已被破壞的新代碼。 這樣,您就可以集中精力測試變化中的零件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM