項目代碼規范為主要包含:類,常量,變量,ID等命名規范;注釋規范;分包規范;代碼風格規范。
項目代碼規范是軟件開發過程中非常重要的優化環節。
目前的開發社區提供了很多的開發規范文檔,阿里巴巴推出了《阿里巴巴Java開發手冊》,並針對 IntelliJ IDEA 提供了 Idea-plugin 插件。
下面我們講述一下插件的安裝和使用。
一、項目代碼規范插件安裝
1. 通過Jetbrains官方倉庫安裝
打開 Settings >> Plugins >> Browse repositories...
在搜索框輸入alibaba即可看到Alibaba Java Code Guidelines插件,點擊Install進行安裝,然后重啟IDE生效
注意:因為插件zip包托管在Jetbrains官方CDN上,所以是從國外的服務器進行下載,可能會出現超時的情況.
2. 通過下載安裝包進行安裝
打開插件頁面
Settings >> Plugins >> Install plugin from disk...,選擇剛剛下載的zip包安裝,然后重啟IDE
注意
最低支持IDEA版本為14.1(buildNumber 141.0,可以在About Intellij IDEA中查看版本信息),使用IDEA14的同學最好升級到14.1.7及以上版本。
插件基於JDK1.7打包,所以IDEA啟動時使用的JDK版本如果是1.6的話就會報Unsupported major.minor version 51.0異常,建議大家都升級一下。
3. 中文亂碼解決方法
修改字體——Appearance&Behavior -> Appearance -> UI Options -> Name 里面設置成中文字體——如微軟雅黑。
Switch Language to English and restart
二、插件使用
目前插件實現了開發手冊中的的53條規則,大部分基於PMD實現,其中有4條規則基於IDEA實現,並且實現了實時檢測功能。部分規則實現了Quick Fix功能,對於可以提供Quick Fix但沒有提供的,我們會盡快實現,也歡迎有興趣的同學加入進來一起努力。 目前插件檢測有兩種模式:實時檢測、手動觸發。
實時檢測
實時檢測功能會在開發過程中對當前文件進行檢測,並以高亮的形式提示出來,同時也可以支持Quick Fix,該功能默認開啟,可以通過配置關閉。
結果高亮提示
檢測結果高亮提示,並且鼠標放上去會彈出提示信息。
Intention QuickFix功能
Alt+Enter鍵可呼出Intention菜單,不同的規則會提示不同信息的Quick Fix按鈕
關閉實時檢測
在某些情況下,我們不希望對代碼提示違規信息,比如我們在閱讀Github開源項目代碼的時候,如果界面出現一堆紅色、黃色的提示,此時心里肯定是飄過一萬只草泥馬。這個時候我們可以通過Inspection的設置關閉實時檢測功能。
通過右鍵快速關閉(打開)所有規則的實時檢測功能
通過Settings >> Editor >> Inspections 進行手動設置
也可以關閉某條規則的實時檢測功能或者修改提示級別。
代碼掃描
可以通過右鍵菜單、Toolbar按鈕、快捷鍵三種方式手動觸發代碼檢測。同時結果面板中可以對部分實現了QuickFix功能的規則進行快速修復。
觸發掃描
在當前編輯的文件中點擊右鍵,可以在彈出的菜單中觸發對該文件的檢測。
在左側的Project目錄樹種點擊右鍵,可以觸發對整個工程或者選擇的某個目錄、文件進行檢測。
如果您打開了IDE的Toolbar,也可以通過Toolbar中的按鈕來觸發檢測,目前Toolbar的按鈕觸發的檢測范圍與您IDE當時的焦點有關,如當前編輯的文件或者是Project目錄樹選中的項,是不是感覺與右鍵菜單的檢測范圍類似呢。
使用快捷鍵(Ctrl+Shift+Alt+J)觸發彈出窗口,選擇檢測范圍;您也可自定義快捷鍵。
掃描結果
檢測結果直接使用IDEA Run Inspection By Name功能的結果界面,插件的檢測結果分級為Blocker、Critical、Major。默認按等級分組,方便統計每個級別錯誤的數量。
默認情況我們在結果面板需要雙擊具體違規項才能打開對應的源文件,開啟Autoscroll To Source選項,單擊面板中的文件名、或者是具體的違規項的時候IDEA會自動打開對應的源文件。
QuickFix
對於實現Quick Fix的規則,在結果面板中可以直接一鍵修復 注意:IDEA14、15可以通過左下角的燈泡進行一鍵修復操作。
其他
面板中其他按鈕的功能大家自行探索吧,就不一一贅述了
代碼提交時檢測
在提交代碼框勾選Alibaba Code Guidelines選項
如果有違反手冊的地方會提示是否繼續提交,選擇取消后會自動對修改的代碼進行掃描