概述
最近阿里發(fā)布了《阿里巴巴Java開(kāi)發(fā)手冊(cè)》,一時(shí)間無(wú)數(shù)阿里擁躉如獲武穆遺書,就在近日阿里又順便發(fā)布了<阿里巴巴java開(kāi)發(fā)規(guī)約插件>,可以輕松的在碼字階段獲得相應(yīng)的編碼提示,那么,在Gradle中如何應(yīng)用阿里開(kāi)發(fā)規(guī)約
進(jìn)行代碼檢查 呢.且看下文.
阿里的開(kāi)發(fā)規(guī)約插件是基于PMD進(jìn)行的代碼檢測(cè),所以在Gradle應(yīng)用阿里開(kāi)發(fā)規(guī)約
檢查只需要使用gradle
提供的pmd
插件即可達(dá)成目的.
目前阿里開(kāi)發(fā)規(guī)約提供了如下一些規(guī)則配置,要應(yīng)用這些配置只需要將他們配置到pmd
的檢查規(guī)則中即可.
- ali-comment.xml
- ali-concurrent.xml
- ali-constant.xml
- ali-exception.xml
- ali-flowcontrol.xml
- ali-naming.xml
- ali-oop.xml
- ali-orm.xml
- ali-other.xml
- ali-set.xml
PMD介紹
PMD(Project Manager Design)是一種開(kāi)源分析Java代碼錯(cuò)誤的工具他嚷。與其他分析工具不同的是揩瞪,PMD通過(guò)靜態(tài)分析獲知代碼錯(cuò)誤。也就是說(shuō),在不運(yùn)行Java程序的情況下報(bào)告錯(cuò)誤伊佃。PMD附帶了許多可以直接使用的規(guī)則情龄,利用這些規(guī)則可以找出Java源程序的許多問(wèn)題灭忠。此外简卧,用戶還可以自己定義規(guī)則,檢查Java代碼是否符合某些特定的編碼規(guī)范族跛。
PMD的核心是JavaCC解析器生成器闰挡。PMD結(jié)合運(yùn)用JavaCC和EBNF(擴(kuò)展巴科斯-諾爾范式,Extended Backus-Naur Formal)語(yǔ)法礁哄,再加上JJTree长酗,把Java源代碼解析成抽象語(yǔ)法樹(AST,Abstract Syntax Tree)桐绒。
-----以上內(nèi)容引自百度百科-PMD條目
使用
apply plugin: 'java'
apply plugin: 'pmd'
ext {
p3c = "1.3.0"
}
pmd {
consoleOutput = true
reportsDir = file("build/reports/pmd")
ruleSets = [
"java-ali-comment"
]
}
repositories {
jcenter()
}
dependencies {
pmd "com.alibaba.p3c:p3c-pmd:${p3c}"
}
這里有幾個(gè)需要注意的點(diǎn)
- gradle的pmd插件為
rule
都添加了默認(rèn)的java-
前綴,一定不要丟掉 - dependencies中依賴的范圍是
pmd
,這樣依賴才會(huì)加到pmdClasspath
中為pmd
所用 - 關(guān)于本插件的一些其它配置可以查看
pmd插件dsl手冊(cè)
運(yùn)行檢查
該插件提供了如下幾個(gè)任務(wù)
任務(wù)名稱 | 描述 |
---|---|
pmdMain | 檢查src/main/java下的代碼 |
pmdTest | 檢查src/main/test下的代碼 |
pmdSourceSet | 檢查給定范圍的代碼 |
check | 檢查源碼和單元測(cè)試代碼 |
可以按照需求運(yùn)行對(duì)應(yīng)任務(wù)進(jìn)行代碼檢查夺脾。
//使用短寫方式運(yùn)行pmdMain任務(wù)
gradle pM
輸出的檢測(cè)報(bào)告在我們定義的目錄里可以找到build/reports/pmd