1歧强、介紹
Checkstyle是一種開發(fā)工具哪廓,可幫助程序員編寫符合編碼標準的Java代碼灭红。它使檢查Java代碼的過程自動化侣滩,從而使人類免于這項無聊(但重要)的任務(wù)。這使其成為希望實施編碼標準的項目的理想選擇变擒。
Checkstyle具有高度可配置性君珠,可以支持幾乎任何編碼標準。提供了一個示例配置文件娇斑,支持Sun Code Style策添,Google Java Style。
報告樣式:
特性/功能:
Checkstyle可以檢查源代碼的許多方面毫缆。它可以找到類設(shè)計問題唯竹,方法設(shè)計問題。它還能夠檢查代碼布局和格式問題苦丁。
官網(wǎng)地址:https://checkstyle.org/index.html
我的使用命令行方式運行 checkstyle 的 Demo 地址:
https://github.com/vir56k/demo/tree/master/checkstyle/%E5%91%BD%E4%BB%A4%E8%A1%8C%E6%96%B9%E5%BC%8Fcheckstyle/MyApplication444使用 gradle 方式集成 checkstyle 的demo:
https://github.com/vir56k/demo/tree/master/checkstyle/gradle%E6%96%B9%E5%BC%8Fcheckstyle
2浸颓、安裝/配置/使用
安裝方式有兩種
- 命令行 方式
- grade 方式
2.1、命令行方式
(1) 下載/安裝
下載地址: https://github.com/checkstyle/checkstyle/releases/
我這里下載的是 checkstyle-8.17-all.jar ,下載到本地是個 java包芬骄,我們在本地配置好java環(huán)境猾愿,即可通過 java 指令來啟動他。
(2) 配置規(guī)則(Style, Rule)
官網(wǎng)提供了兩種代碼風格的規(guī)則:
官網(wǎng)的關(guān)于風格的介紹: https://checkstyle.org/style_configs.html
我找到一個華為的 java Style 账阻,比較適合 Android 開發(fā)蒂秘。
下載地址: https://github.com/vir56k/demo/blob/master/checkstyle/MyApplication444/config/huawei_CheckStyle.xml
(3) 使用 checkstyle 檢查代碼風格
使用 google 風格
java -jar checkstyle-8.17-all.jar -c /google_checks.xml /Users/zhangyunfei/git/MyApplication33/app/src
使用 sun 風格
java -jar checkstyle-8.17-all.jar -c /sun_checks.xml /Users/zhangyunfei/git/MyApplication444
使用華為風格:
java -jar checkstyle-8.17-all.jar -c ./huawei_CheckStyle.xml /Users/zhangyunfei/git/MyApplication33/app/src/main/java
下面是我使用的示例截圖:
2.2、gradle 方式
常用的方式還是在gradle下配置
2.2.1 配置說明
gradle 方式 配置 checkstyle 腳本存放在 scripts 文件夾下
checkstyle.gradle grald腳本配置淘太,關(guān)鍵在這里
huawei_CheckStyle.xml 規(guī)則配置
suppressions.xml 規(guī)則配置
checkstyle.gradle 腳本內(nèi)容:
apply plugin: 'checkstyle'
def configDir = "${project.rootDir}/scripts"
def reportsDir = "${project.buildDir}/reports"
task checkstyle(type: Checkstyle) {
configFile file("$configDir/checkstyle/huawei_CheckStyle.xml")
configProperties.checkstyleSuppressionsPath = file("$configDir/checkstyle/suppressions.xml").absolutePath
source 'src'
include '**/*.java'
exclude '**/gen/**'
exclude '**/test/**'
exclude '**/androidTest/**'
classpath = files()
}
check.dependsOn 'checkstyle'
2.2.2 怎么應(yīng)用姻僧?
在 app 的 build.gradle 中加入下面引用
apply from: '../scripts/checkstyle/checkstyle.gradle'
2.2.3 執(zhí)行 checkstyle
./gradlew clean check
2.2.4 查看報告
報告存放于:app/build/reports/checkstyle/ 文件夾下
2.2.5 常見問題
gradle 下載不到包的問題规丽,請使用阿里鏡像,示例:
allprojects {
repositories {
maven { url "https://maven.aliyun.com/repository/jcenter/" }
maven { url "https://maven.aliyun.com/repository/gradle-plugin/" }
maven { url "https://maven.aliyun.com/repository/google/" }
jcenter()
google()
}
}
3撇贺、參考:
https://checkstyle.org/cmdline.html //命令下使用
https://github.com/checkstyle/checkstyle
https://github.com/checkstyle/checkstyle/releases/