2011-10-25 37 views
4

我正在四處尋找一種方法來在完整的Java應用程序上執行批重構。在這種情況下,使方法爭論最終在哪裏不是這種情況。批量重構,使Java方法參數最終

是否有人在這裏知道這樣的工具?或者解析Java源代碼並可以通過這些更改進行擴展。

+0

出於興趣,背後的想法是什麼? – NPE

+0

@aix這似乎不是必要的,說實話它不是。但我也採用了這種風格。它可以防止意外重新分配方法參數。大多數情況下,這不會是一個問題,但將爭論最終確定是一點點努力。另外,如果一個參數不是最終的,而其他所有的參數都是一致的,那麼立即清楚你打算重新分配這個參數(例如,用它的修剪版本替換一個String)。 –

+0

我對這個想法表示同情,但我的方法通常很小,只是額外的噪音。我嘗試了一段時間,但放棄了 - Java已經夠難讀了。 –

回答

7

你可以做的IntelliJ批量改改各個領域,局部變量或參數可以是最終成爲決賽。

做一個代碼分析的選項,「應用修復」在全球範圍,確保它仍然編譯,因爲它並不總是得到它在多宗100%正確。

+0

酷!也許我應該給IntelliJ一個機會。我還沒有到目前爲止,因爲它有一個檢查SVN的東西的問題。 –

+0

非常感謝你! :-) –

0

我不知道在Eclipse或NetBeans的任何這樣的重構。但一個體面的正則表達式取代會做伎倆。爲了確保您不會在不應發生的地方意外執行此操作,您可能需要手動確認每次更換。但是,如果您擁有數百個課程,這可能並不可行。在那種情況下,在任何地方進行替換,然後使用舊版本檢查差異可能會有用。

如果任何參數沒有進行總決賽,因爲被覆蓋,在編譯過程中它會變得清晰。

+0

Netbeans 7.1beta啓動了一項名爲「檢查和變換」的可比較的事情。例如,已經可以刪除未使用的導入語句。我想這也是時間問題了。 –

+0

@JanGoyvaerts有趣!更強大的重構總是很好。關於未使用的進口,快速ctrl + shift +我應該修復進口,包括刪除未使用的進口。我知道它至少在7.0.1中這樣做。 –

4

正如Peter Lawrey所說,IntelliJ會這樣做。

分析 - >檢查代碼 - >自定義配置文件

在那裏, 「代碼作風問題」 一節中,你有:

字段可以最終

This inspection reports any fields which may safely be made final. A static field may 
be final if it is initialized in its declaration or in one static class initializer, but 
not both. A non-static field may be final if it is initialized in its declaration or in 
one non-static class initializer or in all constructors. 
Powered by InspectionGadgets 

地方變量或參數可以是最終

This inspection reports parameters or local variables, found in the specified inspection 
scope, that may have a final modifier added. 

Use check boxes in the inspection options below, to define whether parameters or local 
variables (or both) are to be reported. 

這樣做只會讓最終的變量安全可靠,但你試圖發現的變量將保持非最終狀態。不過,這是一種發現它們的方法。