2016-11-27 29 views
1

目前,我正在研究重構任務及其優先級。我需要檢查每個任務的效果(例如,移動方法,提取方法,刪除方法)並對課程和項目級別進行一些計算。重構移動和提取方法的硬編碼,解析類及其引用?

在代碼級別手動接近這些任務的最佳方式是什麼?

我正在考慮在其主應用程序的頂部構建Eclipse插件,該應用程序打開重構菜單並執行重構任務,但似乎並不好,我需要更接近每個類的代碼。

其他方式,我正在考慮構建一個插件來分析每個類及其引用,並參考。解析時的任務?這種方法似乎更適合我,因爲我需要自動化過程並進行一些計算。

什麼是編程/編碼重構任務(移動,提取和刪除方法)的常用方法?我正在研究Java。

回答

0

這是有點不清楚你想要做什麼。 使用Eclipse JDT,API可以運行手動重構:http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.jdt.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fjdt%2Fcore%2Frefactoring%2FIJavaRefactorings.html

我曾見過一篇研究論文,描述這些重構對功耗的影響。

否則,您可以查看AutoRefactor瞭解如何使用JDT進行重構的示例。免責聲明:我是AutoRefactor的作者。

+0

首先,謝謝你的回答,我會查看參考資料,並回來在這裏添加更多。我想執行每個參考。任務,計算一些指標並基於它,繼續或停止下一個任務,我正在尋找最合適的編碼方式。對於AutoRefactor,我遇到了你的論文發表在Expert Systems with Applications和良好的工作,我希望它能處理更多不好的氣味(我記得,只有3個?)。 – arminkobi

+0

我沒有發表任何論文:)你有任何機會參考嗎? – JnRouvignac

+0

:-) http://www.sciencedirect.com/science/article/pii/S0957417414005612,看起來_AutoRefactoring_是發佈平臺的名稱,然後我混合了工具。 :-) – arminkobi

0

最一般的重構工具是Program Transformation Systems (PTS)。 這些工具可以讀取源代碼,構建代表該代碼的編譯器數據結構(通常是AST),允許對這些結構進行自定義修改,然後可以從修改的結構中重新生成代碼。

良好的PTS可以被配置爲處理任意漢語語言,並會讓你寫的代碼轉換中使用目標的langauge表面語法源到源轉換而言,以下形式:

when you see *thispattern*, replace it by *thatpattern* if *condition* 

這樣的工具可以在較小的甚至是架構代碼更改或語言遷移中執行任意代碼重構。

[見我的生物的其中之一]。

+0

如果我能夠承擔更多的時間使其更加通用和更正式,尤其是能夠使用形式化規範和形式語義驗證重構程序的行爲保存,這將是非常有趣的,但不幸的是,現在,我需要它「代碼到代碼」級別,儘可能簡單的編碼,因爲我的研究是在這之後的步驟。 Thx爲我指出了你的生物,很多有趣和睜開眼睛的文章。請問,你如何看待解析Java程序,搜索特定的元素ID並重用和應用eclipse重構任務? – arminkobi

+0

通過我的生物閱讀「LifeAfterParsing」。 Eclipse應該可以讓你編寫程序代碼來攻擊AST。程序轉換引擎可以讓你「攻擊」AST的寫作模式,使其更容易。 –

+0

我不知道「正式規範和驗證」在哪裏討論;我沒有提出來。臨時祕書處沒有爲此提供具體支持。但是,沒有我見過的重構工具,也沒有編譯器提供這種支持(除了關於這種工具的非常罕見的學術論文)。 PTS是關於*實用*代碼到代碼轉換的應用程序。 –

相關問題