做者:13
GitHub:https://github.com/ZHENFENG13
版權聲明:本文爲原創文章,未經容許不得轉載。html
在進入正題介紹這款插件以前,首先來談一下《阿里巴巴Java開發手冊》,2017年年初,首次公開的阿里官方Java代碼規範標準手冊能夠說是引發了全民(IT界)代碼規範的熱潮,相信這個手冊不少行業內的朋友都比較熟悉,畢竟有"大廠光環",想低調都難,這個手冊的願景是:java
"統一規範標準將有助於提升行業編碼規範化水平,幫助行業人員提升開發質量和效率、大大下降代碼維護成本"git
至今爲止已更迭了三個版本,2017年9月25日,《阿里巴巴Java開發手冊(終極版)》正式發佈,也是阿里官方對外發布的最後一個PDF版本。最新版下載地址在這裏。github
《阿里巴巴Java開發手冊》自從第一個版本起,倍受業界關注,相信不少人對其中的規則也有了必定的瞭解,不少人甚至但願能儘快在本身的團隊推行起來,這樣你們有了一套共同的開發準則。可是,如何更好的去遵照規則而且按照手冊去開發咱們的系統確變得不那麼容易,爲了讓開發者更加方便、快速的將規範推進並實行起來,阿里巴巴基於手冊內容,研發了一套自動化的IDE檢測插件(IDEA、Eclipse), 該插件在掃描代碼後,將不符合《手冊》的代碼按Blocker/Critical/Major三個等級顯示在下方,甚至在IDEA上,還基於Inspection機制提供了實時檢測功能,編寫代碼的同時也能快速發現問題所在。對於歷史代碼,部分規則實現了批量一鍵修復的功能,提高代碼質量,提升團隊研發效能。ide
代碼已經開源,GitHub:https://github.com/alibaba/p3c工具
咱們來體驗一下吧!ui
打開IDEA,選擇Preferences - Plugins - Browse repositories後,在輸入框中輸入"alibaba",能夠看到返回結果中有"Alibaba Java Coding Guidelines"。
在一週前開始構思這篇文章時,已經有16340的下載量了,如今應該更多了,贊一下。
編碼
點擊插件詳情中的"install"按鈕,按照其提示便可完成安裝,安裝完成後需重啓IDEA。idea
安裝後完成後,須要重啓IDEA,重啓後就能夠在菜單欄中看到它的功能按鈕,有三種方式能夠掃描代碼:插件
if
下方有錯誤紅線的提示。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分是由於中文的緣由,哈哈哈哈。
先整理一下比較明顯的優勢:
缺點嘛,也存在:
目前此插件還處於第一個公開版本,因此確定還有一些小問題或者小bug,之後應該會慢慢修復的,可是已經基本知足代碼審查的需求了,用起來也比較滿意。不過,一些容易產生空指針異常的語句和問題,好像並不能檢查出來,只是知足基本的代碼質量檢測,若是要求較嚴格的話,仍是須要使用SonarQube這種較專業的工具來進行代碼質量檢測和分析,相比較而言,p3c較爲基礎,SonarQube較爲齊全一些,不過這種比較也是不對稱比較,目前來看,二者根本不是一個量級的工具。
多說幾句,此插件所使用的規範爲阿里公佈的那套規範,確定與其餘規範有少量的出入和不一樣,記得在阿里這份規範公佈時,有人甚至在評論區用"八股文"來形容它,我感受沒這麼恐怖吧,規範嘛,你遵照了就是規範,你不遵照它算個什麼東西啊,各家有各家的規範,也不可能徹底統一,選擇適合本身的就好,不必上綱上線,言盡於此,不找罵了。
推薦一下本身的達人課,感興趣的朋友能夠看一下:SSM搭建精美實用的管理系統
是否是使用了這個插件以後就可以讓咱們的代碼中少一些Bug?是否是咱們就能少踩一些坑?答案確定不是,插件只有檢測和提示做用,真正的編碼者依然是本身,因此不要本末倒置,這只是一個工具而已,這種想法必定不能存在,真正要寫出健壯代碼最重要的還在於編碼者本身。
首發於個人我的博客,2017年10月22日。