IDEA 插件推薦 —— 讓你寫出好代碼的神器!

概述

今天介紹的插件主要是圍繞編碼規(guī)范的。有追求的程序員,往往都有代碼潔癖,要盡量減少代碼的「壞味道」。

代碼靜態(tài)檢查是有很多種類,例如圈復(fù)雜度、重復(fù)率等。業(yè)界提供了很多靜態(tài)檢查的插件來(lái)識(shí)別這些不合規(guī)的代碼,幫助提高項(xiàng)目的質(zhì)量。比較知名的一個(gè)產(chǎn)品是 SonarQube,它提供了一個(gè)「門禁」平臺(tái),集成了很多靜態(tài)檢查檢查。下次有機(jī)會(huì)介紹一下該平臺(tái)的搭建。

本文主要介紹 IDEA 中對(duì)于 Java 語(yǔ)言靜態(tài)檢查的好插件:

Alibaba Java Coding Guidelines

阿里巴巴 Java 編碼指南插件支持。

首先說(shuō)說(shuō)阿里的 p3c 項(xiàng)目,它的 Github 主頁(yè)地址是:https://github.com/alibaba/p3c 阿里之前開源過一份 Java 開發(fā)手冊(cè)。手冊(cè)從編程規(guī)約、異常日志、單元測(cè)試、MySQL 數(shù)據(jù)庫(kù)、工程結(jié)構(gòu)、設(shè)計(jì)規(guī)約等角度,介紹了阿里的 Java 開發(fā)規(guī)范,這個(gè)對(duì)于 Java 新手幫助挺大的,能夠?qū)W到不少東西。有一些坑可能老司機(jī)也會(huì)翻車。

泰山版-圖片來(lái)PDF 文檔,侵刪

開發(fā)人員 Coding 時(shí),可能就忘記規(guī)范了,寫出來(lái)的代碼還是會(huì)有『壞味道』。這時(shí)候Alibaba Java Coding Guidelines 插件就派上用場(chǎng)了。它會(huì)根據(jù)上面的 Java 開發(fā)規(guī)范對(duì)你的代碼進(jìn)行檢查,不符合規(guī)范的代碼會(huì)有提示,并給出修改建議。阿里作為國(guó)內(nèi) Java 大廠,基于成千上萬(wàn)的工程師總結(jié)出來(lái)的踩坑經(jīng)驗(yàn),我相信給出的規(guī)范建議還是比較可靠的。

上個(gè)栗子:

  String str = "hello";
  for (int i = 0; i < 100; i++) {
      str = str + "world!";
  }

先不要往下看,試著分析一下這段代碼哪里可以優(yōu)化?

錯(cuò)誤示例

其實(shí),插鍵掃描的結(jié)果不僅有這個(gè)問題,還有『魔法數(shù)字』的問題。插件的用法,見下面的截圖。

示例

除此以外,建議在 IDEA 進(jìn)行代碼提交時(shí),勾選上它提供的檢查項(xiàng)按鈕,這樣如果有不合規(guī)的代碼進(jìn)行提交,就會(huì)提醒你修改:

commit-checks-job

CheckStyle-IDEA

插件

項(xiàng)目主頁(yè):https://github.com/jshiell/checkstyle-idea

安裝好之后,進(jìn)入設(shè)置,勾選上你要選用的默認(rèn)檢查規(guī)范:

kl0L2s

大廠往往都有自己的語(yǔ)言規(guī)范,可以導(dǎo)入選用:

導(dǎo)入規(guī)則

右鍵菜單,選擇 Check Current File 即可檢查當(dāng)前文件是否符合編碼規(guī)范:

使用

檢查結(jié)果:

效果

如果不符合規(guī)范的寫法有點(diǎn)多,整改起來(lái)就會(huì)很痛苦了,這時(shí)候該怎么辦?有一個(gè)功能叫格式化代碼(Reformat Code),快捷鍵是:

  • Mac:Command+Option+L
  • Win:Ctrl+Shift+L

如果想按照你指定的規(guī)則進(jìn)行格式化,可以按照如下方式進(jìn)行自定義:

格式化規(guī)則導(dǎo)入

FindBugs-IDEA

FindBugs 是一款老牌 Java 靜態(tài)檢查插件了。它的功能和阿里 p3c 那個(gè)插件很像,只不過它歷史悠久、國(guó)際化一點(diǎn)。它同樣的可以掃描代碼,發(fā)現(xiàn)一些可能會(huì)引入 Bug 的代碼段,給出參考建議。

啟動(dòng) FindBugs 的方式,右鍵菜單中,F(xiàn)indbugs 提供了好幾個(gè)選項(xiàng):

啟動(dòng)
  • Analyze Current File:檢查當(dāng)前文件
  • Analyze Class uner Cursor:檢查光標(biāo)處的類
  • Analyze Package Files:檢查包文件
  • Analyze Modul Files:檢查 Module 文件
  • Analyze Project Files:檢查項(xiàng)目文件
  • Analyze Scope Files:檢查指定范圍內(nèi)的文件
  • Analyze All Modified Files:檢查所有修改過的文件
  • Analyze changelist files:檢查變更列表中的文件

檢查結(jié)果:

結(jié)果

檢查結(jié)果分為如下類別:

  • Bad practice:不好的做法,代碼違反了公認(rèn)的最佳實(shí)踐標(biāo)準(zhǔn);
  • Malicious code vulnerbility:惡意的代碼漏洞;
  • Correctness:可能不正確,比如錯(cuò)誤的強(qiáng)制類型轉(zhuǎn)換;
  • Performance:潛在的性能問題;
  • Security:安全性;
  • Dodgy code:糟糕的代碼,F(xiàn)indBugs團(tuán)隊(duì)認(rèn)為該類型下的問題代碼導(dǎo) Bug 的可能性很高;
  • Experimental:實(shí)驗(yàn);
  • Multithreaded correctness:關(guān)注于同步和多線程問題;
  • Internationalization:國(guó)際化

掃描出來(lái)的結(jié)果怎么看懂,官網(wǎng)有專門的一頁(yè)介紹 FindBugs Bug Description http://findbugs.sourceforge.net/bugDescriptions.html

看懂結(jié)果

除了上面右鍵菜單啟動(dòng)檢查之外,還可以在相應(yīng)文件夾右鍵菜單中啟動(dòng):

選中檢查

針對(duì)檢查的嚴(yán)格程度,其實(shí)是可以調(diào)節(jié)的,建議修改為 low,這樣會(huì)盡可能的掃描出有潛在 Bug 的代碼片段:

嚴(yán)格程度

總結(jié)

以上是目前工作中經(jīng)常用到的靜態(tài)代碼檢查插鍵,雖然不是用了它們就真的能寫出好代碼,但是這些工具的確能夠讓你能夠在前人的肩膀上少踩一些坑。比如阿里的那個(gè)檢查插鍵,你可以按照它的提示,對(duì)照著他們的 Java 開發(fā)手冊(cè)查看,分析一下,為何他們會(huì)有如此的規(guī)約。高樓大廈不都是一磚一瓦砌成的嘛?小知識(shí)點(diǎn)的基礎(chǔ)打扎實(shí)了,才能走得更高!

關(guān)注

由于國(guó)內(nèi)網(wǎng)絡(luò)問題,我提前將最新版的《阿里巴巴 Java 開發(fā)手冊(cè)(泰山版).pdf》上傳至云盤了,有需要的小伙伴公眾號(hào)后臺(tái)回復(fù) 泰山版 即可獲得下載鏈接。

一言

上周的寫的一篇文章分享到微信群里,群友有人指出來(lái)標(biāo)題有錯(cuò)別字,真是有點(diǎn)尷尬!其實(shí),我寫文章也比較隨意,也是最近才開始堅(jiān)持每周至少輸出一篇分享的。但想想既然寫了,就要盡量保證質(zhì)量。引以為戒,以后要認(rèn)真點(diǎn)才行!

目前分享的內(nèi)容主要是開發(fā)環(huán)境、效率工具等。自己一直對(duì)這方面的文章比較感興趣,因此之前就有相關(guān)積累。今后希望能通過閱讀帶來(lái)一些讀書總結(jié)的分享,也希望關(guān)注的同學(xué)后臺(tái)多留言,給出你的建議,感謝~

生命不息,折騰不止!關(guān)注 「Coder 魔法院」,祝你 Niubilitiy !

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容