2013-09-22 13 views
0

我們公司有一個巨大的應用程序,它的源代碼(實際上幾乎所有的源代碼)都被購買了,我們一直在努力使其適應我們的需求,修復等等。很久以前,某人決定編譯該項目是一件好事,那就是擁有原始公司的預編譯jar文件,並且只需在Override文件夾中編輯或添加我們需要的類,原始的源代碼。因此,當我們編譯時,我們只編譯我們編輯過的類,使用Classpath中的原始jar,然後將我們的新的或編輯過的類與原始jar加入來創建一個新的Jar。驗證Java類之間方法合約的一致性

這個問題似乎是人們正在改變方法契約,編輯接口和添加抽象方法到抽象類。當我們編譯時,我們不會重新編譯完整的源代碼,只有我們編譯器纔會檢查我們的覆蓋源代碼的契約一致性。 我已經開始注意到事情似乎正在破裂,因爲舊的類正試圖調用一個不再存在的方法,或者調用實現真正只是接口的部分版本的類的方法的類。

我不能簡單地將原始源代碼與我們的原始代碼一起加入,因爲在構建時會自動生成一些類和java文件,所以我可能意外修復了一些未被破壞的東西。 (我試過了,這就是爲什麼我知道)

有沒有一種方法來自動驗證各種編譯罐子類之間的契約一致性?解決這些問題後,我可以將兩個源目錄合併在一起,避免將來出現這些問題。

+0

這是文章還是一個問題? –

回答

1

爲什麼不編譯一切? (你有源代碼)這樣​​你至少會得到編譯錯誤。

我假設你沒有任何測試來驗證事情仍然有效。也許你應該開始寫這些。開始的好地方是測試之前破解的新代碼。這樣你就專注於測試正在改變的部件。

+0

這就是我找到的一些問題。問題是很多代碼是自動生成的,甚至覆蓋了我們的代碼,所以很有可能很多事情應該在天然的情況下被標記爲錯誤的(很難解釋),最簡單的方法是驗證類的一致性 – user1249212