摘要:年月底,阿里巴巴集團發(fā)布了阿里巴巴開發(fā)手冊終極版,年月日,在杭州云棲大會上,代碼規(guī)約插件全球首發(fā),插件支持以上版本和以上版本。阿里巴巴代碼規(guī)約插件安裝阿里代碼規(guī)約插件有插件和插件。
阿里巴巴Java代碼規(guī)約插件安裝2017年9月底,阿里巴巴集團發(fā)布了《阿里巴巴Java開發(fā)手冊》PDF終極版,2017年10月14日,在2017杭州云棲大會上,Java代碼規(guī)約插件全球首發(fā),p3c-pmd插件支持Eclipse4.2以上版本和IDEA14.1.7以上版本。
阿里Java代碼規(guī)約插件有Eclipse插件和IDEA插件。
Eclipse插件安裝Eclipse版插件支持4.2(Juno,JDK1.8+)及以上版本,通過 Help
-- Install New Software 然后輸入https://p3c.alibaba.com/plugi... 即可看到安裝列表??梢酝ㄟ^ Help-- Check for Udates 進行插件新版檢測。
勾選Ali-CodeAnalysis,Next,安裝完成后重啟即可。
IDEA插件安裝IDEA版的插件已發(fā)布到IDEA官方倉庫中(最低支持版本14.1.7,JDK1.7+),只需打開File-- Settings --Plugins -- Browse repositories 輸入 Alibaba 搜索便可以看到對應插件,點擊安裝等待安裝完成。IDEA會自動檢測插件新版并提示。
File--Setting--Plugins--Browse repositories
檢索alibaba,第一個就是Alibaba Java Coding Guidelines,點擊右側(cè)Install即可,可以看到下載量是6天前已經(jīng)發(fā)布。安裝完畢后重啟IDEA即可。
重啟IDEA后,可以看到Tools菜單下面有阿里編程規(guī)約的插件,有三項子功能:
編程規(guī)約掃描(快捷鍵Ctrl+Alt+Shift+J)、
關閉/打開實時檢測功能、
切換語言至英文(English):點擊后提示:SmartFox Intellij IDEA Plugin切換語言成功,重啟后生效
中文界面如下:
英文界面如下:
阿里代碼規(guī)約插件的使用這里僅僅以IDEA環(huán)境為例進行說明,Eclipse操作類似
代碼檢查 InspectionsFile-Settings-Editor- Inspections,打開后右側(cè)找到Ali-Check,可以看到很多代碼檢查規(guī)則,可以修改規(guī)則對應提示的顏色。這里一共有55條規(guī)則。
以編程規(guī)約之命名風格為例:
變量test_Double命名不符合駝峰形式,高亮顯示,Ctrl+F1給出修改提示
常量Test_CONSTANT命名不符合規(guī)范,高亮顯示,Ctrl+F1給出修改提示
代碼分析Code Analyze在當前類中右鍵或者在左側(cè)Project視圖中類名稱上右鍵,選擇Alibaba Coding Guidelines Analyze, 可以對某一個類進行代碼分析;也可以直接在Project視圖中,項目的包上面單擊右鍵,選擇Alibaba Coding Guidelines Analyze,可以批量分析包中所有類
分析結(jié)果在IDEA底部逐條給出,我們還是對上面的類進行分析,結(jié)果如下:
單擊紅色矩形框可以跳轉(zhuǎn)到代碼所在行。
P3C-PMD插件基于PMD實現(xiàn)了《阿里巴巴Java開發(fā)手冊》中涉及的48條規(guī)則。
編程規(guī)約 (六)并發(fā)處理,實現(xiàn)了1、2、3、4、5、10、11、12等8條規(guī)則;
編程規(guī)約(五)集合處理,實現(xiàn)了4、5、6、7、9、11等6條規(guī)則;
編程規(guī)約(一)命名風格,實現(xiàn)了1、2、3、4、5、6、7、8、9、13等10條規(guī)則;
編程規(guī)約(二)常量定義,實現(xiàn)了1、2等2條規(guī)則;
編程規(guī)約(四)OOP規(guī)約,實現(xiàn)了5、6、7、8、9、12、17等7條規(guī)則;
編程規(guī)約(七)控制語句,實現(xiàn)了1、2、4等3條規(guī)則;
編程規(guī)約(八)注釋規(guī)約,實現(xiàn)了1、2、3、4、5等5條規(guī)則;
編程規(guī)約(九)其他,實現(xiàn)了1、3、4、5等4條規(guī)則;
異常日志 (一)異常處理,實現(xiàn)了5、7、10等3條規(guī)則;
PMD是一種代碼靜態(tài)分析工具,當使用PMD規(guī)則分析Java源碼時,PMD首先利用JavaCC和EBNF文法產(chǎn)生了一個語法分析器,用來分析普通文本形式的Java代碼,產(chǎn)生符合特定語法結(jié)構(gòu)的語法,同時又在JavaCC的基礎上添加了語義的概念即JJTree,通過JJTree的一次轉(zhuǎn)換,這樣就將Java代碼轉(zhuǎn)換成了一個AST,AST是Java符號流之上的語義層,PMD把AST處理成一個符號表。然后編寫PMD規(guī)則,一個PMD規(guī)則可以看成是一個Visitor,通過遍歷AST找出多個對象之間的一種特定模式,即代碼所存在的問題。
自定義PMD實現(xiàn)規(guī)則有如下2種方式:
(1). 自定義Java類并繼承AbstractJavaRule抽象類,重寫visit()方法,并在xml規(guī)則文件中引用該類。
name:自定義規(guī)則的名字;
language:要檢查的語言
message:該規(guī)則被觸發(fā)時,給出的消息提示;
class:規(guī)則使用類的全類名;
description:規(guī)則的描述信息;
priority:優(yōu)先級別,從高到低依次是1-Blocker, 2-Critical, 3-Urgent, 4-important, 5-Warning;
example:在CDATA標簽中書寫一個該規(guī)則對應的實例。
示例:
(2). 自定義XPATH表達式,編寫xml規(guī)則,在規(guī)則的properties-property節(jié)點中定義XPATH表達式,該表達式是依賴于抽象語法樹AST的。
name:自定義規(guī)則的名字;
language:要檢查的語言
message:該規(guī)則被觸發(fā)時,給出的消息提示;
class: xPath規(guī)則統(tǒng)一配置為net.sourceforge.pmd.lang.rule. XPathRule;
description:規(guī)則的描述信息;
priority:優(yōu)先級別,從高到低依次是1-Blocker, 2-Critical, 3-Urgent, 4-important, 5-Warning;
example:在CDATA標簽中書寫一個該規(guī)則對應的實例。
properties:這個是xpath必須配置的,其子節(jié)點property,value值使用CDATA標簽配置對應的xpath表達式的形式,可以有多個property。
示例:
p3c-pmd的項目開源托管在github上,可以自行去https://github.com/alibaba/p3c下載,項目是maven管理,項目代碼結(jié)構(gòu)如下:
p3c-pmd插件的實現(xiàn)是基于pmd的,更具體的來說是基于pmd-java的,因為pmd不僅支持java代碼分析,還支持其他多種語言。具體實現(xiàn)自定義規(guī)則的方式當然也是上節(jié)所介紹的2種方式:自定義Java類和XPATH規(guī)則。
p3c-pmd插件封裝了2個抽象類,分別介紹如下:
(1). 第一個是AbstractAliRule 繼承了pmd的 AbstractJavaRule并重寫visit(node,data)方法;AbstractPojoRule又繼承了AbstractAliRule,用于檢測Java類是否有Pojo。
第二個是AbstractXpathRule繼承了pmd的抽象類XPathRule,用于處理XPATH規(guī)則。
最后給大家一個小小的福利,我把p3c-pmd項目的源碼分包生成了對應的類圖,大家可以自行下載,關注Java技術日志訂閱號后,在消息框回復關鍵字:p3c或pmd可以獲取類圖下載地址。
“
本訂閱號提供Java相關技術分享,從Java編程基礎到Java高級技術,從JavaWeb技術基礎Jsp、Servlet、JDBC到SSH、SSM開發(fā)框架,從REST風格接口設計到分布式項目實戰(zhàn)。剖析主流開源技術框架,用親身實踐來譜寫深度Java技術日志?!?/p>
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/67874.html
摘要:也就是說,在不運行程序的情況下報告錯誤。此外,用戶還可以自己定義規(guī)則,檢查代碼是否符合某些特定的編碼規(guī)范。使用短寫方式運行任務輸出的檢測報告在我們定義的目錄里可以找到 在Gradle中使用阿里巴巴Java開發(fā)規(guī)約插件進行代碼檢查 概述 最近阿里發(fā)布了《阿里巴巴Java開發(fā)手冊》,一時間無數(shù)阿里擁躉如獲武穆遺書,就在近日阿里又順便發(fā)布了,可以輕松的在碼字階段獲得相應的編碼提示,那么,...
摘要:說明這篇文章是我第一次認真閱讀阿里巴巴開發(fā)手冊終極版的筆記。說明本手冊明確防止是調(diào)用者的責任。一年半載后,那么單元測試幾乎處于廢棄狀態(tài)。好的單元測試能夠最大限度地規(guī)避線上故障。 說明 這篇文章是我第一次(認真)閱讀《阿里巴巴 Java 開發(fā)手冊(終極版)》的筆記。手冊本身對規(guī)范的講解已經(jīng)非常詳細了,如果你已經(jīng)有一定的開發(fā)經(jīng)驗并且有良好的編碼習慣和意識,會發(fā)現(xiàn)大部分規(guī)范是符合常識的。所以...
摘要:代碼規(guī)約掃描插件以今年年初發(fā)布的阿里巴巴開發(fā)規(guī)約為標準,作為的插件形式存在,檢測代碼中存在不規(guī)范得位置然后給予提示。 IntelliJ IDEA是目前最好最強最智能的Java IDE,前幾天,他剛剛年滿18歲。 showImg(https://segmentfault.com/img/remote/1460000017974611);? 本文,給大家推薦幾款我私藏已久的,自己經(jīng)常使用的...
摘要:虛靜出內(nèi)功代碼規(guī)范節(jié)選代碼命名均不能以下劃線或者美元符號開始,也不能以下劃線或美元符號結(jié)束所有編程相關命名都嚴禁使用拼音和英文混合方式,也不允許直接使用中文類名使用風格,但以下情形例外等,正確命名示例等方法名參數(shù)名成員 ...
閱讀 2154·2019-08-29 16:53
閱讀 2723·2019-08-29 16:07
閱讀 2071·2019-08-29 13:13
閱讀 3292·2019-08-26 13:57
閱讀 1355·2019-08-26 13:31
閱讀 2463·2019-08-26 13:22
閱讀 1245·2019-08-26 11:43
閱讀 2112·2019-08-23 17:14