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