阿里巴巴Java開發(fā)手冊
在進入正題介紹這款插件之前,首先來談一下《阿里巴巴Java開發(fā)手冊》,2017年年初,首次公開的阿里官方Java代碼規(guī)范標(biāo)準(zhǔn)手冊可以說是引起了全民(IT界)代碼規(guī)范的熱潮,相信這個手冊很多行業(yè)內(nèi)的朋友都比較熟悉,畢竟有"大廠光環(huán)",想低調(diào)都難,這個手冊的愿景是:
"統(tǒng)一規(guī)范標(biāo)準(zhǔn)將有助于提高行業(yè)編碼規(guī)范化水平,幫助行業(yè)人員提高開發(fā)質(zhì)量和效率、大大降低代碼維護成本"

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

在一周前開始構(gòu)思這篇文章時,已經(jīng)有16340的下載量了,現(xiàn)在應(yīng)該更多了,贊一下。

安裝插件
點擊插件詳情中的"install"按鈕,按照其提示即可完成安裝,安裝完成后需重啟IDEA。
功能體驗
安裝后完成后,需要重啟IDEA,重啟后就可以在菜單欄中看到它的功能按鈕,有三種方式可以掃描代碼:
-
在項目目錄上右鍵點擊也會出現(xiàn)這兩個功能按鈕,點擊綠色的按鈕即可開始掃描代碼,或者在工程目錄上右鍵也會出現(xiàn)檢測的功能按鈕。
check -
如果不想全部掃描,只掃描當(dāng)前編輯的文件的話,在當(dāng)前文件面板中點擊右鍵也會出現(xiàn)此功能按鈕。
check2 -
前面說的兩種方式是手動檢測,插件也提供了實時監(jiān)測的功能,此功能默認(rèn)開啟,一旦開啟則會在你編寫代碼時就會實時監(jiān)測,一旦有不符合規(guī)范的語句就會出現(xiàn)錯誤提示。
check3
由于大括號不規(guī)范的問題,if下方有錯誤紅線的提示。
check4
idea中有quick fix快捷鍵:option/alt+enter,點擊后則可以自動添加大括號。
掃描代碼后,不符合規(guī)約的代碼會按Blocker/Critical/Major三個等級顯示在下方面板中,如圖:

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

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



