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

資訊專欄INFORMATION COLUMN

阿里巴巴Java代碼規約插件p3c-pmd使用指南與實現解析

worldligang / 3306人閱讀

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

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

阿里巴巴Java代碼規約插件安裝

阿里Java代碼規約插件有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版的插件已發布到IDEA官方倉庫中(最低支持版本14.1.7,JDK1.7+),只需打開File-- Settings --Plugins -- Browse repositories 輸入 Alibaba 搜索便可以看到對應插件,點擊安裝等待安裝完成。IDEA會自動檢測插件新版并提示。
File--Setting--Plugins--Browse repositories

檢索alibaba,第一個就是Alibaba Java Coding Guidelines,點擊右側Install即可,可以看到下載量是6天前已經發布。安裝完畢后重啟IDEA即可。

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

英文界面如下:

阿里代碼規約插件的使用

這里僅僅以IDEA環境為例進行說明,Eclipse操作類似

代碼檢查 Inspections

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

以編程規約之命名風格為例:

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

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

代碼分析Code Analyze

在當前類中右鍵或者在左側Project視圖中類名稱上右鍵,選擇Alibaba Coding Guidelines Analyze, 可以對某一個類進行代碼分析;也可以直接在Project視圖中,項目的包上面單擊右鍵,選擇Alibaba Coding Guidelines Analyze,可以批量分析包中所有類


分析結果在IDEA底部逐條給出,我們還是對上面的類進行分析,結果如下:


單擊紅色矩形框可以跳轉到代碼所在行。

P3C-PMD插件實現規則說明

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

PMD執行Java代碼分析的原理

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

name:自定義規則的名字;

language:要檢查的語言

message:該規則被觸發時,給出的消息提示;

class:規則使用類的全類名;

description:規則的描述信息;

priority:優先級別,從高到低依次是1-Blocker, 2-Critical, 3-Urgent, 4-important, 5-Warning;

example:在CDATA標簽中書寫一個該規則對應的實例。
示例:

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

name:自定義規則的名字;

language:要檢查的語言

message:該規則被觸發時,給出的消息提示;

class: xPath規則統一配置為net.sourceforge.pmd.lang.rule. XPathRule;

description:規則的描述信息;

priority:優先級別,從高到低依次是1-Blocker, 2-Critical, 3-Urgent, 4-important, 5-Warning;

example:在CDATA標簽中書寫一個該規則對應的實例。

properties:這個是xpath必須配置的,其子節點property,value值使用CDATA標簽配置對應的xpath表達式的形式,可以有多個property。
示例:

阿里代碼規約插件p3c-pmd源碼實現解析

p3c-pmd的項目開源托管在github上,可以自行去https://github.com/alibaba/p3c下載,項目是maven管理,項目代碼結構如下:

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

第二個是AbstractXpathRule繼承了pmd的抽象類XPathRule,用于處理XPATH規則。

最后給大家一個小小的福利,我把p3c-pmd項目的源碼分包生成了對應的類圖,大家可以自行下載,關注Java技術日志訂閱號后,在消息框回復關鍵字:p3c或pmd可以獲取類圖下載地址。

本訂閱號提供Java相關技術分享,從Java編程基礎到Java高級技術,從JavaWeb技術基礎Jsp、Servlet、JDBC到SSH、SSM開發框架,從REST風格接口設計到分布式項目實戰。剖析主流開源技術框架,用親身實踐來譜寫深度Java技術日志?!?/p>

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/67874.html

相關文章

  • # 在Gradle中使用阿里巴巴Java開發規約插件進行代碼檢查

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

    Invoker 評論0 收藏0
  • 常識之外的規范——阿里java開發手冊筆記(全章節)

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

    Martin91 評論0 收藏0
  • IntelliJ IDEA 18 周歲,吐血推進珍藏已久的必裝插件

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

    趙春朋 評論0 收藏0
  • 阿里Java開發手冊節選(嵩山版)

    摘要:虛靜出內功代碼規范節選代碼命名均不能以下劃線或者美元符號開始,也不能以下劃線或美元符號結束所有編程相關命名都嚴禁使用拼音和英文混合方式,也不允許直接使用中文類名使用風格,但以下情形例外等,正確命名示例等方法名參數名成員 ...

    xuhong 評論0 收藏0

發表評論

0條評論

worldligang

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<