国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

阿里巴巴Java代碼規(guī)約插件p3c-pmd使用指南與實(shí)現(xiàn)解析

worldligang / 3289人閱讀

摘要:年月底,阿里巴巴集團(tuán)發(fā)布了阿里巴巴開發(fā)手冊終極版,年月日,在杭州云棲大會(huì)上,代碼規(guī)約插件全球首發(fā),插件支持以上版本和以上版本。阿里巴巴代碼規(guī)約插件安裝阿里代碼規(guī)約插件有插件和插件。

2017年9月底,阿里巴巴集團(tuán)發(fā)布了《阿里巴巴Java開發(fā)手冊》PDF終極版,2017年10月14日,在2017杭州云棲大會(huì)上,Java代碼規(guī)約插件全球首發(fā),p3c-pmd插件支持Eclipse4.2以上版本和IDEA14.1.7以上版本。

阿里巴巴Java代碼規(guī)約插件安裝

阿里Java代碼規(guī)約插件有Eclipse插件和IDEA插件。

Eclipse插件安裝

Eclipse版插件支持4.2(Juno,JDK1.8+)及以上版本,通過 Help
-- Install New Software 然后輸入https://p3c.alibaba.com/plugi... 即可看到安裝列表。可以通過 Help-- Check for Udates 進(jìn)行插件新版檢測。

勾選Ali-CodeAnalysis,Next,安裝完成后重啟即可。

IDEA插件安裝

IDEA版的插件已發(fā)布到IDEA官方倉庫中(最低支持版本14.1.7,JDK1.7+),只需打開File-- Settings --Plugins -- Browse repositories 輸入 Alibaba 搜索便可以看到對應(yīng)插件,點(diǎn)擊安裝等待安裝完成。IDEA會(huì)自動(dòng)檢測插件新版并提示。
File--Setting--Plugins--Browse repositories

檢索alibaba,第一個(gè)就是Alibaba Java Coding Guidelines,點(diǎn)擊右側(cè)Install即可,可以看到下載量是6天前已經(jīng)發(fā)布。安裝完畢后重啟IDEA即可。

重啟IDEA后,可以看到Tools菜單下面有阿里編程規(guī)約的插件,有三項(xiàng)子功能:
編程規(guī)約掃描(快捷鍵Ctrl+Alt+Shift+J)、
關(guān)閉/打開實(shí)時(shí)檢測功能、
切換語言至英文(English):點(diǎn)擊后提示:SmartFox Intellij IDEA Plugin切換語言成功,重啟后生效
中文界面如下:

英文界面如下:

阿里代碼規(guī)約插件的使用

這里僅僅以IDEA環(huán)境為例進(jìn)行說明,Eclipse操作類似

代碼檢查 Inspections

File-Settings-Editor- Inspections,打開后右側(cè)找到Ali-Check,可以看到很多代碼檢查規(guī)則,可以修改規(guī)則對應(yīng)提示的顏色。這里一共有55條規(guī)則。

以編程規(guī)約之命名風(fēng)格為例:

變量test_Double命名不符合駝峰形式,高亮顯示,Ctrl+F1給出修改提示

常量Test_CONSTANT命名不符合規(guī)范,高亮顯示,Ctrl+F1給出修改提示

代碼分析Code Analyze

在當(dāng)前類中右鍵或者在左側(cè)Project視圖中類名稱上右鍵,選擇Alibaba Coding Guidelines Analyze, 可以對某一個(gè)類進(jìn)行代碼分析;也可以直接在Project視圖中,項(xiàng)目的包上面單擊右鍵,選擇Alibaba Coding Guidelines Analyze,可以批量分析包中所有類


分析結(jié)果在IDEA底部逐條給出,我們還是對上面的類進(jìn)行分析,結(jié)果如下:


單擊紅色矩形框可以跳轉(zhuǎn)到代碼所在行。

P3C-PMD插件實(shí)現(xiàn)規(guī)則說明

P3C-PMD插件基于PMD實(shí)現(xiàn)了《阿里巴巴Java開發(fā)手冊》中涉及的48條規(guī)則。
編程規(guī)約 (六)并發(fā)處理,實(shí)現(xiàn)了1、2、3、4、5、10、11、12等8條規(guī)則;
編程規(guī)約(五)集合處理,實(shí)現(xiàn)了4、5、6、7、9、11等6條規(guī)則;
編程規(guī)約(一)命名風(fēng)格,實(shí)現(xiàn)了1、2、3、4、5、6、7、8、9、13等10條規(guī)則;
編程規(guī)約(二)常量定義,實(shí)現(xiàn)了1、2等2條規(guī)則;
編程規(guī)約(四)OOP規(guī)約,實(shí)現(xiàn)了5、6、7、8、9、12、17等7條規(guī)則;
編程規(guī)約(七)控制語句,實(shí)現(xiàn)了1、2、4等3條規(guī)則;
編程規(guī)約(八)注釋規(guī)約,實(shí)現(xiàn)了1、2、3、4、5等5條規(guī)則;
編程規(guī)約(九)其他,實(shí)現(xiàn)了1、3、4、5等4條規(guī)則;
異常日志 (一)異常處理,實(shí)現(xiàn)了5、7、10等3條規(guī)則;

PMD執(zhí)行Java代碼分析的原理

PMD是一種代碼靜態(tài)分析工具,當(dāng)使用PMD規(guī)則分析Java源碼時(shí),PMD首先利用JavaCC和EBNF文法產(chǎn)生了一個(gè)語法分析器,用來分析普通文本形式的Java代碼,產(chǎn)生符合特定語法結(jié)構(gòu)的語法,同時(shí)又在JavaCC的基礎(chǔ)上添加了語義的概念即JJTree,通過JJTree的一次轉(zhuǎn)換,這樣就將Java代碼轉(zhuǎn)換成了一個(gè)AST,AST是Java符號(hào)流之上的語義層,PMD把AST處理成一個(gè)符號(hào)表。然后編寫PMD規(guī)則,一個(gè)PMD規(guī)則可以看成是一個(gè)Visitor,通過遍歷AST找出多個(gè)對象之間的一種特定模式,即代碼所存在的問題。
自定義PMD實(shí)現(xiàn)規(guī)則有如下2種方式:
(1). 自定義Java類并繼承AbstractJavaRule抽象類,重寫visit()方法,并在xml規(guī)則文件中引用該類。

name:自定義規(guī)則的名字;

language:要檢查的語言

message:該規(guī)則被觸發(fā)時(shí),給出的消息提示;

class:規(guī)則使用類的全類名;

description:規(guī)則的描述信息;

priority:優(yōu)先級(jí)別,從高到低依次是1-Blocker, 2-Critical, 3-Urgent, 4-important, 5-Warning;

example:在CDATA標(biāo)簽中書寫一個(gè)該規(guī)則對應(yīng)的實(shí)例。
示例:

(2). 自定義XPATH表達(dá)式,編寫xml規(guī)則,在規(guī)則的properties-property節(jié)點(diǎn)中定義XPATH表達(dá)式,該表達(dá)式是依賴于抽象語法樹AST的。

name:自定義規(guī)則的名字;

language:要檢查的語言

message:該規(guī)則被觸發(fā)時(shí),給出的消息提示;

class: xPath規(guī)則統(tǒng)一配置為net.sourceforge.pmd.lang.rule. XPathRule;

description:規(guī)則的描述信息;

priority:優(yōu)先級(jí)別,從高到低依次是1-Blocker, 2-Critical, 3-Urgent, 4-important, 5-Warning;

example:在CDATA標(biāo)簽中書寫一個(gè)該規(guī)則對應(yīng)的實(shí)例。

properties:這個(gè)是xpath必須配置的,其子節(jié)點(diǎn)property,value值使用CDATA標(biāo)簽配置對應(yīng)的xpath表達(dá)式的形式,可以有多個(gè)property。
示例:

阿里代碼規(guī)約插件p3c-pmd源碼實(shí)現(xiàn)解析

p3c-pmd的項(xiàng)目開源托管在github上,可以自行去https://github.com/alibaba/p3c下載,項(xiàng)目是maven管理,項(xiàng)目代碼結(jié)構(gòu)如下:

p3c-pmd插件的實(shí)現(xiàn)是基于pmd的,更具體的來說是基于pmd-java的,因?yàn)閜md不僅支持java代碼分析,還支持其他多種語言。具體實(shí)現(xiàn)自定義規(guī)則的方式當(dāng)然也是上節(jié)所介紹的2種方式:自定義Java類和XPATH規(guī)則。
p3c-pmd插件封裝了2個(gè)抽象類,分別介紹如下:
(1). 第一個(gè)是AbstractAliRule 繼承了pmd的 AbstractJavaRule并重寫visit(node,data)方法;AbstractPojoRule又繼承了AbstractAliRule,用于檢測Java類是否有Pojo。

第二個(gè)是AbstractXpathRule繼承了pmd的抽象類XPathRule,用于處理XPATH規(guī)則。

最后給大家一個(gè)小小的福利,我把p3c-pmd項(xiàng)目的源碼分包生成了對應(yīng)的類圖,大家可以自行下載,關(guān)注Java技術(shù)日志訂閱號(hào)后,在消息框回復(fù)關(guān)鍵字:p3c或pmd可以獲取類圖下載地址。

本訂閱號(hào)提供Java相關(guān)技術(shù)分享,從Java編程基礎(chǔ)到Java高級(jí)技術(shù),從JavaWeb技術(shù)基礎(chǔ)Jsp、Servlet、JDBC到SSH、SSM開發(fā)框架,從REST風(fēng)格接口設(shè)計(jì)到分布式項(xiàng)目實(shí)戰(zhàn)。剖析主流開源技術(shù)框架,用親身實(shí)踐來譜寫深度Java技術(shù)日志?!?/p>

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/67874.html

相關(guān)文章

  • # 在Gradle中使用阿里巴巴Java開發(fā)規(guī)約插件進(jìn)行代碼檢查

    摘要:也就是說,在不運(yùn)行程序的情況下報(bào)告錯(cuò)誤。此外,用戶還可以自己定義規(guī)則,檢查代碼是否符合某些特定的編碼規(guī)范。使用短寫方式運(yùn)行任務(wù)輸出的檢測報(bào)告在我們定義的目錄里可以找到 在Gradle中使用阿里巴巴Java開發(fā)規(guī)約插件進(jìn)行代碼檢查 概述   最近阿里發(fā)布了《阿里巴巴Java開發(fā)手冊》,一時(shí)間無數(shù)阿里擁躉如獲武穆遺書,就在近日阿里又順便發(fā)布了,可以輕松的在碼字階段獲得相應(yīng)的編碼提示,那么,...

    Invoker 評(píng)論0 收藏0
  • 常識(shí)之外的規(guī)范——阿里java開發(fā)手冊筆記(全章節(jié))

    摘要:說明這篇文章是我第一次認(rèn)真閱讀阿里巴巴開發(fā)手冊終極版的筆記。說明本手冊明確防止是調(diào)用者的責(zé)任。一年半載后,那么單元測試幾乎處于廢棄狀態(tài)。好的單元測試能夠最大限度地規(guī)避線上故障。 說明 這篇文章是我第一次(認(rèn)真)閱讀《阿里巴巴 Java 開發(fā)手冊(終極版)》的筆記。手冊本身對規(guī)范的講解已經(jīng)非常詳細(xì)了,如果你已經(jīng)有一定的開發(fā)經(jīng)驗(yàn)并且有良好的編碼習(xí)慣和意識(shí),會(huì)發(fā)現(xiàn)大部分規(guī)范是符合常識(shí)的。所以...

    Martin91 評(píng)論0 收藏0
  • IntelliJ IDEA 18 周歲,吐血推進(jìn)珍藏已久的必裝插件

    摘要:代碼規(guī)約掃描插件以今年年初發(fā)布的阿里巴巴開發(fā)規(guī)約為標(biāo)準(zhǔn),作為的插件形式存在,檢測代碼中存在不規(guī)范得位置然后給予提示。 IntelliJ IDEA是目前最好最強(qiáng)最智能的Java IDE,前幾天,他剛剛年滿18歲。 showImg(https://segmentfault.com/img/remote/1460000017974611);? 本文,給大家推薦幾款我私藏已久的,自己經(jīng)常使用的...

    趙春朋 評(píng)論0 收藏0
  • 阿里Java開發(fā)手冊節(jié)選(嵩山版)

    摘要:虛靜出內(nèi)功代碼規(guī)范節(jié)選代碼命名均不能以下劃線或者美元符號(hào)開始,也不能以下劃線或美元符號(hào)結(jié)束所有編程相關(guān)命名都嚴(yán)禁使用拼音和英文混合方式,也不允許直接使用中文類名使用風(fēng)格,但以下情形例外等,正確命名示例等方法名參數(shù)名成員 ...

    xuhong 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<