簡體   English   中英

是否有任何工具可以重構Java代碼庫的編碼樣式?

[英]Are there any tools out there to refactor the coding-style of a java code base?

通常,在現有項目上進行某些工作時,我只會使用代碼庫中已建立的任何樣式。 但是我們的團隊必須維護多個中小型項目,這些項目的編碼風格略有不同。 如果我們可以消除這些差異,那將更加有效,並且不會造成混亂。

因此,我正在尋找一種可以重構現有樣式的工具。 標准代碼格式化工具已經提供了許多功能,例如更改縮進樣式。 我所缺少的是一個允許我刪除字段名和參數名前綴的工具。 在某些項目中,所有成員都以“ m”為前綴,所有參數都以“ p”為前綴,靜態成員以“ s”為前綴。

該工具應該能夠處理以下情況:

void setValue(String pValue) {
  mValue = pValue;
}

應該變成:

void setValue(String value) {
  this.value = value;
}

該工具應在以下情況下生成警告:

void setValue(String pValue) {
  int value = 42
}

我知道每個主要的IDE都提供重構:重命名功能。 我正在尋找的是一種無需處理每個參數/字段就可以處理整個代碼庫的工具。

編輯

許多答案都提到了用於重新格式化源代碼或對照一組樣式規則檢查代碼庫的工具。 我知道這些工具存在。 我特別需要的是一種高級工具,它使我可以刪除范圍特定的變量名前綴。

我一直在尋找類似甚至更高端的工具。 我正在嘗試實現非常依賴於上下文的設計指標。 我找到了一些工具,這些工具很商業,而且很昂貴,例如Ndepend和reflectk。 我還發現了一些開源工具,像Hammurapi這樣的攤檔。 還有一些工具,例如Checkstyle,Findbugs和PMD,可用於非常簡單的用例。 我發現最好的工具是MoDisco。 它基於Eclipse EMF,可以生成代碼模型,並且可以進行某些查詢或轉換(使用M2M工具)。 我唯一的問題是,對於標准的約2萬個LOC項目而言,它相當慢。 嘗試一下,也許對於您的用例就足夠了。

您是否嘗試過Eclipse的Clean Up工具? 當然,它不會處理您在此處顯示的一些示例,但是我認為它做得相當不錯。

我不知道有一個現有項目可以為您完成此任務。

您考慮過自己寫嗎? 例如,Eclipse框架確實提供了可靠的代碼格式化工具。 您是否研究過擴展其中之一以執行您的建議? 檢測以您提到的模式命名的變量應該非常簡單。

我意識到這不是理想的解決方案。 但是,如果您有足夠大的代碼庫,它可能比手工進行所有編輯更具成本效益。

聽起來像Jalopy之類的東西可能會有所幫助。

Jalopy允許您定義代碼格式樣式,然后它可以讀取文件,包或整個項目並將其重新格式化。 我不記得它是否可以執行更復雜的重構,例如將局部變量的樣式更改為不使用匈牙利表示法(mVar廢話),但是它可以在所需的格式,間距,方括號,排序等之間進行更改。

我過去使用過Jalopy,效果很好。 我什至在人們使用不同個人編碼風格的團隊中使用過它,然后在提交時我們都同意由Jalopy自動處理的某種格式。 (當您檢出它時,請按照自己的方式進行格式化,當它被檢入時,將按照團隊同意的方式對其進行格式化,等等。)

不過,有一個問題,它似乎沒有被維護一年左右。 但是,也有一個較新的商業版本 -似乎朝這個方向努力了。 仍然可以使用較舊的版本。

還有其他類似的商業產品,例如Jindent

Eclipse IDE是解決您問題的最佳選擇。

FindBugs是用於代碼靜態分析的非常好的工具。 它確實可以發現潛在的錯誤,並且易於集成到IDE和構建工具中。

暫無
暫無

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

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