作者:13
GitHub:https://github.com/ZHENFENG13
版權聲明:本文為原創文章,未經允許不得轉載。
阿里巴巴Java開發手冊
在進入正題介紹這款插件之前,首先來談一下《阿里巴巴Java開發手冊》,2017年年初,首次公開的阿里官方Java代碼規范標准手冊可以說是引起了全民(IT界)代碼規范的熱潮,相信這個手冊很多行業內的朋友都比較熟悉,畢竟有"大廠光環",想低調都難,這個手冊的願景是:
"統一規范標准將有助於提高行業編碼規范化水平,幫助行業人員提高開發質量和效率、大大降低代碼維護成本"

至今為止已更迭了三個版本,2017年9月25日,《阿里巴巴Java開發手冊(終極版)》正式發布,也是阿里官方對外發布的最后一個PDF版本。最新版下載地址在這里。
插件介紹
《阿里巴巴Java開發手冊》自從第一個版本起,倍受業界關注,相信很多人對其中的規則也有了一定的了解,很多人甚至希望能盡快在自己的團隊推行起來,這樣大家有了一套共同的開發准則。但是,如何更好的去遵守規則並且按照手冊去開發我們的系統確變得不那么容易,為了讓開發者更加方便、快速的將規范推動並實行起來,阿里巴巴基於手冊內容,研發了一套自動化的IDE檢測插件(IDEA、Eclipse), 該插件在掃描代碼后,將不符合《手冊》的代碼按Blocker/Critical/Major三個等級顯示在下方,甚至在IDEA上,還基於Inspection機制提供了實時檢測功能,編寫代碼的同時也能快速發現問題所在。對於歷史代碼,部分規則實現了批量一鍵修復的功能,提升代碼質量,提高團隊研發效能。
代碼已經開源,GitHub:https://github.com/alibaba/p3c
我們來體驗一下吧!
插件使用簡易教程(基於IDEA)
搜索插件
打開IDEA,選擇Preferences - Plugins - Browse repositories后,在輸入框中輸入"alibaba",可以看到返回結果中有"Alibaba Java Coding Guidelines"。

在一周前開始構思這篇文章時,已經有16340的下載量了,現在應該更多了,贊一下。

安裝插件
點擊插件詳情中的"install"按鈕,按照其提示即可完成安裝,安裝完成后需重啟IDEA。
功能體驗
安裝后完成后,需要重啟IDEA,重啟后就可以在菜單欄中看到它的功能按鈕,有三種方式可以掃描代碼:
- 在項目目錄上右鍵點擊也會出現這兩個功能按鈕,點擊綠色的按鈕即可開始掃描代碼,或者在工程目錄上右鍵也會出現檢測的功能按鈕。

- 如果不想全部掃描,只掃描當前編輯的文件的話,在當前文件面板中點擊右鍵也會出現此功能按鈕。

- 前面說的兩種方式是手動檢測,插件也提供了實時監測的功能,此功能默認開啟,一旦開啟則會在你編寫代碼時就會實時監測,一旦有不符合規范的語句就會出現錯誤提示。

由於大括號不規范的問題,if下方有錯誤紅線的提示。

idea中有quick fix快捷鍵:option/alt+enter,點擊后則可以自動添加大括號。
掃描代碼后,不符合規約的代碼會按Blocker/Critical/Major三個等級顯示在下方面板中,如圖:

左邊是掃描出的不符合規范的代碼,依次點進去可以看到是代碼的多少行出現了規約問題以及哪一個規約問題,右邊則是規約的詳細描述及實例代碼。

不僅如此,右側還有quick fix的按鈕,點擊后直接可以改正代碼,但是並不是所有的問題都有此按鈕,有些問題還是需要手動修改。
支持版本
IDEA官方倉庫:最低支持版本14.1.7,JDK1.7+
Eclipse版插件:支持4.2(Juno,JDK1.8+)及以上版本
檢測更新
可以通過 Help >> Check for Udates 進行插件新版檢測
插件卸載
在插件面板點擊"uninstall"即可。
使用感受
並沒有在插件剛出來的時候整理這篇文章,而是使用了一段時間后才決定寫這篇文章,目前已經使用了一個多星期,整體的感覺還算滿意,可能是一開始的要求和期待有點高了,使用后覺得也就那樣,100分的話給80分吧(個人意見,不用太在意),其中10分是因為中文的原因,哈哈哈哈。
先整理一下比較明顯的優點:
- 中文提示,且按照《阿里巴巴Java開發手冊》給出詳細的提示和解釋,看起來真的很舒服。
- 能夠檢測出一些平時不在意的問題,可以提高開發編碼過程中對於細枝末節的注意。
- quick fix,檢測出問題后點擊一下按鈕即可完成代碼的修改。
- 基本滿足代碼規范檢測的需求。
缺點嘛,也存在:
- 只支持IDEA和Eclipse,且對版本有要求。
- 有錯別字(小問題)。
- 有bug。
目前此插件還處於第一個公開版本,所以肯定還有一些小問題或者小bug,以后應該會慢慢修復的,但是已經基本滿足代碼審查的需求了,用起來也比較滿意。不過,一些容易產生空指針異常的語句和問題,好像並不能檢查出來,只是滿足基本的代碼質量檢測,如果要求較嚴格的話,還是需要使用SonarQube這種較專業的工具來進行代碼質量檢測和分析,相比較而言,p3c較為基礎,SonarQube較為齊全一些,不過這種比較也是不對稱比較,目前來看,兩者根本不是一個量級的工具。
多說幾句,此插件所使用的規范為阿里公布的那套規范,肯定與其他規范有少許的出入和不同,記得在阿里這份規范公布時,有人甚至在評論區用"八股文"來形容它,我感覺沒這么恐怖吧,規范嘛,你遵守了就是規范,你不遵守它算個什么東西啊,各家有各家的規范,也不可能完全統一,選擇適合自己的就好,沒必要上綱上線,言盡於此,不找罵了。
總結
推薦一下自己的達人課,感興趣的朋友可以看一下:SSM搭建精美實用的管理系統

是不是使用了這個插件之后就能夠讓我們的代碼中少一些Bug?是不是我們就能少踩一些坑?答案肯定不是,插件只有檢測和提示作用,真正的編碼者依然是自己,所以不要本末倒置,這只是一個工具而已,這種想法一定不能存在,真正要寫出健壯代碼最重要的還在於編碼者自己。
首發於我的個人博客,2017年10月22日。
