2014-04-19 31 views
2

我們是一個開發Java/Maven項目的開發團隊。我們正在使用不同版本的Eclipse,一個常見的Mercurial存儲庫(在Bitbucket上)和三種不同的操作系統。由於每個開發人員都有他/她的個人偏好,我們都使用不同的編碼風格和代碼格式(同一行上的「else」/與上一個右括號不同,或者每行最多使用80/100/120個字符,因爲一些用途比其他用戶具有更大的屏幕等)。因此,當將代碼提交到存儲庫時,即使只更改了格式,但有時也會發生類的更改。這使得真正的變化很難追蹤。在協作Java開發中執行代碼格式規則

所以大家都在討論解決方案,並可能是最好的是,如果我們將上一個項目的標準,從現在同意在回購每個代碼必須符合這個標準。如果一個同事檢查回購代碼,工具會將其轉換爲他/她最喜歡的格式,並在提交之前將其轉換回回購標準。

我想知道是否有用於格式化代碼的工具,即

  • 可以在任何操作系統上運行
  • 可以很容易地和廣泛地被配置(如Eclipse的格式化器)
  • 將允許配置共享
  • AND可以運行,開發人員不會注意到它在那裏。
  • OPTIONALLY也從控制檯或作爲一個單獨的任務運行
  • 選擇地設置免費

有關自動化的點是非常重要的(例如,從行家):我應該容易地集成,非常不打擾開發人員通過強制他/她在每次提交時運行特殊腳本或按下額外按鈕。

什麼我迄今所做

添加以下行到我的.hgrc創建一個鉤。

[hooks] 
precommit = python:.hg/perform_code_formatting.py:perform 

,並創建了一個名爲文件perform_code_formatting.py

import re,os,sys,mercurial 

def perform(repo, **kwargs): 
    from subprocess import call 
    call(["ls", "-l"]) 

當然,call最終將通過代碼格式化工具所取代。但是這種方法已經存在缺陷,因爲我不確定哪些工具可以在任何操作系統上運行並滿足上述所有要求。

工具

  • beautyj:上運行的Java,但沒有足夠的配置選項
  • 縮進/的astyle:功能強大的工具,然而,依賴於操作系統的
  • Jindent:不自由
  • 蝕格式化:迄今爲止最好的選擇。也可以從控制檯運行。但是,由於每個人都有不同的安裝目錄,因此必須進行一些初始工作,並且必須在每個工作站上單獨完成腳本/ mercurial配置。

我的問題

是否有一個工具,是滿足我列出的所有要求?有沒有人對這種「不同的格式問題」有任何經驗,並提出解決方案/工作流程/政策來處理它?

預先感謝您;)

回答

0

你可以用老爺車,對於代碼格式的開源工具。可能你的團隊可以試試這個。

http://jalopy.sourceforge.net/

+0

我看着老爺車,但最後提交的是9年前,和所有的下載鏈接都死了現在。我也看了一下fork,Jalopy2,但是這些文檔實際上並不存在,當你嘗試從github中檢查出來時,「mvn install」產生一個.jar,沒有附加任何清單。 – r0f1

+0

看起來你需要將自己的手放入它以滿足自己的需要 – UVM