2013-03-29 48 views
5

我正在從事Java開發。最近我遇到了必須遵守編碼標準的情況:成員和方法排序,命名約定,修飾符順序。我正在考慮自動檢查合規性的方法,或者產生一些重新排序的機制。自動檢查Java文件是否符合編碼標準

我們正在使用Eclipse進行開發,但技術將會開放。它可能工作的一種方式是生成外部生成器工具並將其添加到項目中。缺點是它會自動應用於所有文件,這可能會導致遺留代碼的問題,並將錯誤計數提高到不再是合規性的合理度量標準。此外,它使代碼評論更加困難,這是不想要的。

另一種方式是某種僅具有信息功能的解析器。我們可以在Jenkins內部運行一個流程,這當然會起作用,但這也意味着代碼已經通過了審查,對於代碼合規性檢查來說通常稍晚。

是否有建議,甚至是簡單的方法將這些功能集成到IDE,源代碼控制系統(Mercurial)甚至詹金斯?這在其他地方如何執行?

+0

的TeamCity已預先測試過承諾,其希望,也可以做一些代碼合規性檢查。 – Jayan

+4

從[PMD](http://pmd.sourceforge.net/)和[CheckStyle](http://checkstyle.sourceforge.net/)開始,然後轉到其他「靜態分析工具」。 – parsifal

+0

目前看着CheckStyle,似乎無法自由定義規則本身,只能檢查規則(我們必須遵守與Java編碼標準不同的修飾符序列)。 – 0xCAFEBABE

回答

3

我不建議這樣做自動這種變化很好地集成。即使大多數checkstyle/pmd符合都是有效的,但在我看來,我需要忽略一些警告/錯誤。而且 - 這種簡單問題只有很小的一部分。大多數通知需要更復雜的操作,並且可能在沒有人工交互的情況下完成。

我正在使用Sonar集成。它包含許多外部檢查程序,如PMD,CPD,Checkstyle,Findbugs,並可以與其他一些有用的工具如Cobertura(測試覆蓋率統計)集成。它幾乎無足輕重的將Sonar構建綁定到Jenkins構建並試圖避免重大/關鍵問題可能被認爲是一種好方法。

在開發人員環境中,我使用Eclipse與findbugs集成。還有一些與聲納集成的點,但它需要將代碼提交到服務器或本地運行服務器,這是我個人不喜歡的。然而,經過Sonar代碼審查之後的代碼拋光的幾個週期後,您會注意到您(和其他團隊成員)堅持大部分規則,並且每天檢查報告就足夠了。

+0

_「[SpotBugs](https://spotbugs.github.io/)是FindBugs的精神繼承者」_ – howlger

1

一個解決方案是使用JCSC/checkstyle或其他命令行友好的工具。將其與您的構建過程相集成。個人開發者在他的分支上運行它。

大多數工具與詹金斯(通過插件),可以用來作爲儀表板

1

進一步@ Jayan的答案,詹金斯有一個CheckStyle plugin,將顯示每個CheckStyle運行的結果,並讓您設置生成狀態取決於找到多少違規。所以,你的設置步驟是:

  1. 設置您的CheckStyle rules,以滿足您的編碼標準
  2. 添加一個步驟,你詹金斯建立一個運行的CheckStyle
  3. 添加後生成步驟來發布CheckStyle的結果。
0

Jayan提到了checkstyle,這對檢查編碼標準非常有用。

我記得使用Jalopy年前的自動代碼格式,它可能也適合您的需要。

儘管如此,我不會自動地重新格式化代碼。使用諸如checkstyle之類的工具來引發警告是一回事。控制開發人員的源代碼是另一回事,大多數人認爲它非常干擾和不愉快。 此外,代碼檢查器中的錯誤最糟糕的是會生成不正確的警告。代碼美化中的錯誤可能會破壞並摧毀數小時的工作。