Lint
是Android Studio
中提供的代碼分析工具,它可以檢查出代碼當中存在的問題,定義該問題的嚴重程度,並給出相應的解決方案,這樣咱們就能夠快速地定位和修復問題。 整個lint
檢查的架構以下圖所示:html
App Source Files
:對應於咱們工程當中的源文件,包括Java
代碼、XML
文件、Icons
圖片、ProGuard configuration files
。lint.xml
:定義了須要檢查的問題,以及該問題對應的等級。lint tool
:靜態的代碼掃描工具,咱們能夠從命令行或者Android Studio
中啓動,它會根據lint.xml
中定義的規則,來檢查App Source Files
中的代碼。lint
檢查結果:把lint tool
檢測出的問題分爲不一樣的類別,方便開發者修復,目前問題分爲如下幾類:
下面,咱們就分如下幾部分來介紹lint
的使用:android
lint
檢查的範圍lint
lint
檢查無用資源Gradle
配置Lint
使用Lint
配置選File -> Settings
,在其中搜索lint
,能夠獲得以下的界面: bash
Profile
,同時能夠將這個配置文件導出用於以後的項目:
它會保存成爲
xml
文件,假如咱們相對於默認的配置有所修改,那麼會在文件中添加一條記錄:
Lint
使用Lint
的步驟以下: 第一步:點擊Analyze -> Inspect Code
,以後,會彈出下面的界面: 架構
Whole Project
:整個工程Module Browser-Browser
:當前咱們所處的模塊File xxx
:某個文件Custom Space
:自定義的範圍,下拉列表中通常包括:Project Files
:全部項目文件Project Production Files
:項目的代碼文件Project Test Files
:項目的測試文件OpenFiles
:當前打開的文件Module xx
:某個模塊Current File
:當前文件點擊右邊的……
,能夠定義本身的Scope
: 工具
咱們在上面選擇對整個項目進行分析,以後會在下面獲得分析的結果: 測試
Name
:文件名Location
:文件所處位置Problem synopsis
:問題的具體描述,一般會給出解決的方法Problen resolution
:提供了一些快速修復問題的途徑,只須要點一下連接,就會執行它所描述的操做。Suppress
:若是想要忽略這條錯誤,那麼須要怎麼作。在上面的操做當中,咱們是分析了全部的問題,有時候,咱們只想處理某一方面的問題,那麼能夠經過另外一個入口來分析,Analyze -> Run inspection by name
,以後會彈出一個窗口,然咱們選擇須要檢查的問題類型: gradle
2.2
同樣的選擇檢查文件範圍的窗口:
假如咱們選擇了
Unused resources
,那麼最後的結果是這樣的,咱們只會看到和這個問題相關的代碼:
lint
刪除無用資源文件在通過一段時間的開發以後,咱們項目中不免會出現無用的資源文件,而Lint
就提供了很好的方式,日常,咱們對於資源的無效引用方式主要有如下幾種:ui
drawable
在任何地方都沒有用到這種方式很好理解,Lint
必定會爲咱們檢查出來spa
drawable
僅僅被style.xml
引用,可是style
沒有被Java
代碼,或者xml
文件引用:style
和
drawable
沒有被引用:
drawable
被style.xml
引用,style
又被layout
引用,可是layout
沒有被引用:layout
、
drawable
和
style
沒有被引用
3.3
相同,可是layout
被Java
代碼所引用,而Java
代碼沒有被引用:Unused resources
是檢測不出來的,
這時候,就須要用到另一個分類,
Unused declaration
,此時的檢測結果爲:
咱們在上面點擊右鍵,而後選擇
Safe delete
就能夠刪除這個類了。
經過Unused declaration
和Unused resources
結合,就能夠刪除咱們大多數無用的資源,而小部分因爲代碼引用到,可是由於業務邏輯變了,致使不可能走到那一路的邏輯這種狀況,就只能經過開發者本身處理了。.net
gradle
構建時的配置當咱們使用Gradle
構建時,能夠經過lintoptions
配置選項,並定義是否須要中止編譯,強制讓開發者處理較爲嚴重的問題,這些選項以下表:
android {
lintOptions {
// true--關閉lint報告的分析進度
quiet true
// true--錯誤發生後中止gradle構建
abortOnError false
// true--只報告error
ignoreWarnings true
// true--忽略有錯誤的文件的全/絕對路徑(默認是true)
//absolutePaths true
// true--檢查全部問題點,包含其餘默認關閉項
checkAllWarnings true
// true--全部warning當作error
warningsAsErrors true
// 關閉指定問題檢查
disable 'TypographyFractions','TypographyQuotes'
// 打開指定問題檢查
enable 'RtlHardcoded','RtlCompat', 'RtlEnabled'
// 僅檢查指定問題
check 'NewApi', 'InlinedApi'
// true--error輸出文件不包含源碼行號
noLines true
// true--顯示錯誤的全部發生位置,不截取
showAll true
// 回退lint設置(默認規則)
lintConfig file("default-lint.xml")
// true--生成txt格式報告(默認false)
textReport true
// 重定向輸出;能夠是文件或'stdout'
textOutput 'stdout'
// true--生成XML格式報告
xmlReport false
// 指定xml報告文檔(默認lint-results.xml)
xmlOutput file("lint-report.xml")
// true--生成HTML報告(帶問題解釋,源碼位置,等)
htmlReport true
// html報告可選路徑(構建器默認是lint-results.html )
htmlOutput file("lint-report.html")
// true--全部正式版構建執行規則生成崩潰的lint檢查,若是有崩潰問題將中止構建
checkReleaseBuilds true
// 在發佈版本編譯時檢查(即便不包含lint目標),指定問題的規則生成崩潰
fatal 'NewApi', 'InlineApi'
// 指定問題的規則生成錯誤
error 'Wakelock', 'TextViewEdits'
// 指定問題的規則生成警告
warning 'ResourceAsColor'
// 忽略指定問題的規則(同關閉檢查)
ignore 'TypographyQuotes'
}
}
複製代碼
經過lint
能在編寫代碼的過程當中,實時地發現一些問題,這不只有利於提升應用的質量,咱們還能夠經過lint
提供的提示來了解到怎麼樣編寫高效的代碼。
1.http://blog.csdn.net/lihenair/article/details/50915441
2.http://hubingforever.blog.163.com/blog/static/17104057920121069261691/
3.http://www.jianshu.com/p/74a50b770816