lintOptions——安卓gradle

目錄
一、前言
二、LintOptions 的結構簡析
三、LintOptions 的屬性
四、LintOptions 的方法
五、寫在最後

一、前言

今天分享的是 lintOptions 配置,其作用是 協助我們發現項目中代碼質量問題

二、LintOptions 的結構簡析

2.1 LintOptions 的存在位置

android {
    lintOptions {
    	// lintOptions 的配置
    }
}

2.2 LintOptions 的繼承

按照老規矩,我們知道 gradle 的配置均會映射到一個java類。

LintOptions 映射到 com.android.build.gradle.internal.dsl.LintOptions 類,其繼承結構如下

LintOptions
com.android.builder.model.LintOptions
Serializable

2.3 LintOptions 運行

./gradlew app:lint

注意小點

  • window環境使用 gradlew,mac 使用 ./gradlew
  • 使用 app:lint 可以追加變體,我們這裏只有 releasedebug 所以,可以使用 app:lintReleaseapp: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]

此時我們有兩個解決方案:

  1. 將 abortOnError 置爲false,讓錯誤不會中止我們的編譯,但不建議這麼做
  2. 解決檢測出來的問題,讓編譯正常運行,以上面這一段爲例,則是將沒有使用到的資源進行移除即可。

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配置,請進傳送門

如果覺得本篇博文對你有所啓發或是解決了困惑,給個贊或關注我呀,小盆友會繼續分享更多的優質文章。

或是請我喝杯咖啡吧,小盆友會更加信心百倍的寫下去

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章