目錄
一、前言
二、LintOptions 的結構簡析
三、LintOptions 的屬性
四、LintOptions 的方法
五、寫在最後
一、前言
今天分享的是 lintOptions 配置,其作用是 協助我們發現項目中代碼質量問題。
二、LintOptions 的結構簡析
2.1 LintOptions 的存在位置
android {
lintOptions {
// lintOptions 的配置
}
}
2.2 LintOptions 的繼承
按照老規矩,我們知道 gradle 的配置均會映射到一個java類。
LintOptions 映射到 com.android.build.gradle.internal.dsl.LintOptions
類,其繼承結構如下
2.3 LintOptions 運行
./gradlew app:lint
注意小點
- window環境使用
gradlew
,mac 使用./gradlew
- 使用
app:lint
可以追加變體,我們這裏只有release
和debug
所以,可以使用app:lintRelease
和app:lintDebug
分別對變體運行檢查。
三、LintOptions 的屬性
3.1 abortOnError
- 類型:boolean
- 描述:是否發現錯誤,則停止構建。
- 使用方法:
lintOptions {
abortOnError true
}
- 囉嗦一下:
平常在打release包的時候,lint會默認開啓檢查,所以有時會看到類似如下的提示:
> Lint found errors in the project; aborting build.
Fix the issues identified by lint, or add the following to your build script to proceed with errors:
...
android {
lintOptions {
abortOnError false
}
}
...
The first 3 errors (out of 6) were:
/Users/zinc/Documents/code/gradle/GradleStudy/app/src/main/res/drawable/ic_arrow_drop_down_black_24dp.xml:1: Error: The resource R.drawable.ic_arrow_drop_down_black_24dp appears to be unused [UnusedResources]
<vector xmlns:android="http://schemas.android.com/apk/res/android"
^
/Users/zinc/Documents/code/gradle/GradleStudy/app/src/main/res/drawable/ic_launcher_background.xml:2: Error: The resource R.drawable.ic_launcher_background appears to be unused [UnusedResources]
<vector xmlns:android="http://schemas.android.com/apk/res/android"
^
/Users/zinc/Documents/code/gradle/GradleStudy/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: Error: The resource R.mipmap.ic_launcher_round appears to be unused [UnusedResources]
此時我們有兩個解決方案:
- 將 abortOnError 置爲false,讓錯誤不會中止我們的編譯,但不建議這麼做。
- 解決檢測出來的問題,讓編譯正常運行,以上面這一段爲例,則是將沒有使用到的資源進行移除即可。
3.2 absolutePaths
- 類型:boolean
- 描述:報告文檔是否輸出全路徑,默認爲相對路徑
- 使用方法:
lintOptions {
absolutePaths false
}
相對路徑時,圖中紅色部分路徑則相對於我們設置該屬性的 gradle 文件做起始地。
3.3 check
- 類型:Set< String >
- 描述:設置只檢查的類型。
可以設置的類型id可以使用
lint --list
進行查看
- 使用方法:
lintOptions {
// 只檢查 未使用的 資源
check 'UnusedResources'
}
3.4 checkAllWarnings
- 類型:boolean
- 描述:是否檢查所有警告,默認情況下,有些警告的檢查類型是關閉的。開啓時,則會全部檢查。
- 使用方法:
lintOptions {
checkAllWarnings true
}
3.5 checkReleaseBuilds
- 類型:boolean
- 描述:在 release 版本是否檢查 fatal 類型錯誤,默認release版本爲開啓。開啓後,檢查到 fatal 類型錯誤則會關閉。
- 使用方法:
lintOptions {
checkReleaseBuilds true
}
3.6 disable
- 類型:Set< String >
- 描述:關閉某個檢查的類型,填寫的值爲類型的id,可以通過
lint --list
查看支持的id。 - 使用方法:
lintOptions {
// 關閉 UnusedResources 檢查
disable 'UnusedResources'
}
3.7 enable
- 類型:Set< String >
- 描述:開啓某個檢查的類型,填寫的值爲類型id,可以通過
lint --list
查看支持的id。 - 使用方法:
lintOptions{
enable 'UnusedResources'
}
3.8 htmlOutput
- 類型:File
- 描述:指定一個文件,用於輸出 html 類型的文件。會覆蓋原有的內容。
- 使用方法:
lintOptions {
// 指定輸出到 htmlReport.html 文件,相對的路徑是設置這個屬性的gradle的地址。
htmlOutput file('htmlReport.html')
}
3.9 htmlReport
- 類型:boolean
- 描述:是否輸出 html 類型報告,默認開啓
- 使用方法:
lintOptions {
htmlReport true
}
3.10 ignoreWarnings
- 類型:boolean
- 描述:是否忽略警告,只檢查error。
- 使用方法:
lintOptions {
ignoreWarnings true
}
3.11 lintConfig
- 類型:File
- 描述:配置用作備用的默認配置文件。如果有一個 檢查的類型id 被設置爲error級別的錯誤,而在 lintConfig 配置的文件中設置爲ignore,最終還是被認爲 error 級別,簡而言之lintConfig優先級最低。
- 使用方法:
lintOptions {
lintConfig file('lint/rule_lint.xml')
}
lint/rule_lint.xml 內容如下
<?xml version="1.0" encoding="utf-8"?>
<lint>
<!-- id可以通過 "lint \-\-list" 查看支持的id-->
<!-- severity 是設置的提示級別 -->
<issue id="UnusedResources" severity="error"/>
</lint>
3.12 quiet
- 類型:boolean
- 描述:是否關閉一些信息輸出,例如報告文件路徑的輸出
- 使用方法:
lintOptions {
quiet true
}
3.13 showAll
- 類型:boolean
- 描述:是否輸出全信息,不對信息縮減。
- 使用方法:
lintOptions {
showAll true
}
3.14 textOutput
- 類型:File
- 描述:檢查報告以文本類型輸出的路徑。
- 使用方法:
lintOptions {
textOutput file('report/zincTextReport.txt')
}
3.15 textReport
- 類型:boolean
- 描述:是否開啓檢查報告以文本類型輸出。
- 使用方法:
lintOptions {
textReport true
}
3.16 warningsAsErrors
- 類型:boolean
- 描述:是否將全部的警告作爲錯誤輸出
- 使用方法:
lintOptions {
warningsAsErrors true
}
3.17 xmlOutput
- 類型:File
- 描述:檢查報告以xml類型輸出的路徑。
- 使用方法:
lintOptions {
xmlOutput file('report/zincXmlReport.xml')
}
3.18 xmlReport
- 類型:boolean
- 描述:是否開啓檢查報告以文本類型輸出。
- 使用方法:
lintOptions {
xmlReport true
}
四、LintOptions 的方法
4.1 check
- check(id)
- check(ids)
id 只能添加一個,ids可以添加多個
描述:用於添加檢查的類型id,id可以通過lint --list
查看。
使用方法:
lintOptions {
check 'id1'
check 'id1','id2'
}
4.2 disable
- disable(id)
- disable(ids)
id 只能添加一個,ids可以添加多個
描述:用於關閉檢查的類型id,id可以通過lint --list
查看。
使用方法:
lintOptions {
disable 'id1'
disable 'id1','id2'
}
4.3 enable
- enable(id)
- enable(ids)
id 只能添加一個,ids可以添加多個
描述:用於開啓檢查的類型id,id可以通過lint --list
查看。
使用方法:
lintOptions {
enable 'id1'
enable 'id1','id2'
}
4.4 error
- error(id)
- error(ids)
id 只能添加一個,ids可以添加多個
描述:用於將檢查的類型id置爲 error錯誤。
使用方法:
lintOptions {
error 'id1'
error 'id1','id2'
}
4.5 fatal
- fatal(id)
- fatal(ids)
id 只能添加一個,ids可以添加多個
描述:用於將檢查的類型id置爲 fatal錯誤。
使用方法:
lintOptions {
fatal 'id1'
fatal 'id1','id2'
}
4.5 ignore
- ignore(id)
- ignore(ids)
id 只能添加一個,ids可以添加多個
描述:用於將檢查的類型id置爲 ignore忽略。
使用方法:
lintOptions {
ignore 'id1'
ignore 'id1','id2'
}
4.6 warning
- warning(id)
- warning(ids)
id 只能添加一個,ids可以添加多個
描述:用於將檢查的類型id置爲 warning錯誤。
使用方法:
lintOptions {
warning 'id1'
warning 'id1','id2'
}
五、寫在最後
Gradle項目地址:Github傳送門
本篇博文的lintOptions配置,請進傳送門
如果覺得本篇博文對你有所啓發或是解決了困惑,給個贊或關注我呀,小盆友會繼續分享更多的優質文章。
或是請我喝杯咖啡吧,小盆友會更加信心百倍的寫下去