2012-04-24 76 views
1

我想檢查一些特定的Java類是否要提交。如果是這樣,我想檢查serialVersionUID是否在該特定類的源(新值和舊值)內發生更改。svn pre-commit鉤子檢查java源碼

怎麼辦?任何示例PLS。

問候

+0

你問如何添加一個SVN掛鉤,如何檢查爲serialVersionUID,或兩者? – 2012-04-24 08:16:35

+0

正確的方法將涉及編譯該源,然後從字節碼中讀取'serialVersionUID'字段。這幾乎肯定是不可信的,所以如果你對代碼的格式進行了假設,你也許可以使用正則表達式。請記住,如果沒有Java解析器/解析器,源代碼將始終可能包含一個「serialVersionUID」聲明,但您不會選擇該聲明。 – 2012-04-24 08:18:07

+0

Greg Kopff - 既 – zmeda 2012-04-24 08:28:41

回答

2

你應該能夠找到很多例子,在網絡上關於建立SVN掛鉤 - 這裏是relevant chapter from the SVN book。向下滾動至掛鉤腳本

至於檢測serialVersionUID我與Andrzej Doyle有相似的看法:如果您解析源代碼,可能會出現錯誤地檢測到它的情況。但是,您的源代碼可能很簡單,它可以在99%的時間內運行 - 並且導致錯誤的後果可能不會造成太大災難。只有你知道答案。

所以,一個非常簡單的方式來檢查它(假設一個Linux/UNIX /的Mac OS環境)是使用使用grep尋找「的serialVersionUID」的shell腳本。但是,我可以立即想到一種可以檢測到錯誤肯定的方法:如果內部類聲明瞭它,一個簡單的grep會檢測它是否爲包含類(因爲我們沒有解析文件,我們沒有實際的知識類結構裏面)。

+0

首先,我會嘗試簡單的解決方案,假設沒有定義內部類。我會盡快發佈解決方案。謝謝 – zmeda 2012-04-24 09:04:38

0

我寧願使用持續集成服務器就像jenkins 並創建檢查東西 就業和發送電子郵件時,事情發生

:)