项目规范性检测工具Lint
项目规范性检测工具lint.bat
一、Lint基本概念介绍
Android Lint是SDK Tools 16 (ADT 16)之后才引入的工具,通过它对Android工程源代码进行扫描和检查,可发现潜在的问题,以便程序员及早修正这个问题。Android Lint提供了命令行方式执行,还可与IDE(如Eclipse)集成,并提供了html形式的输出报告。
由于Android Lint在最初设计时就考虑到了independent于IDE,所以它可以很方便的与项目中的其他自动系统(配置/ Build / 测试等)集成。Android Lint主要用于检查以下这些错误:
当然Android Lint远远不只检查以上列出的8中错误,这里不一一给出,想了解更多的小伙伴可以参考相关文档。
在Eclipse中可以在菜单Window->Preference->“Lint Error Checking”中设置规则的检查级别,如图1所示。

点开界面上的Severity下拉箭头,可以看到Lint的检查级别从高到低分别是:
Default
Fatal
Errro
Waring
Information
Ingore(即不检查)
二、Lint命令行使用方法
命令行的操作,自然是先从路径说起了。
Lint的命令名称为lint.bat,完整路径为SDK安装目录下的tools文件夹中,比如我的为:“E:\Android\Android Eclipse\sdk\tools\lint.bat”。为了以后能够快速使用该命令,建议将路径“E:\Android\Android Eclipse\sdk\tools”加入系统环境变量中。
常规的用法格式为:lint.bat Project_Full_Path --xml Project_Result.xml --html Project_Result.html。其中:
Project_Full_Path为项目完整的路径名,也可以先定位到项目上一级目录然后在此写上项目名即可。如先定位于目录“E:\Android\Project”,工程名为LoginUMQQ,那么具体的命令为:lint.bat LoginUMQQ --xml LoginUMQQ_Result.xml --html LoginUMQQ_Result.html。
--xml和--html指定项目检测内容的输出格式,而Project_Result.xml和Project_Result.html为对应的结果输出文件。
一般来说,项目越大,检测过程耗时越长,不过速度是非常快的。下面给出检测命令及结果图:

此时,在指定目录下就可以看到生成的文件了:

这里说明一下,文件夹LoginUMQQ_Result_files中给出了error(红色圆形感叹号)、warning(灰色三角形感叹号)、run(一般不用理会)的图标,还有一个css格式文件。如下图:

通过这三个图标在html文件中浏览检测结果时可以清楚地知道某条信息是对应哪个类别,打开html文件后,有各种信息的分类和数目:

以图中2条未使用的属性为例(UnusedAttribute),直接点击会跳转到对应说明:

可以发现,Lint工具真的非常给力。对于未使用的属性资源,细化到了真实的代码(包括目录、文件名、代码块)。当然,经过测试,检测结果中的其他资源也类似地方便定位与修改。注意图中下半部分给出的解释信息,分析结果还会给出warnings或errors的修改优先级,数字越大,优先级越高,最高为10;最后一段会针对当前的警告信息做一个详细的解释,还包括推荐做法。
虽然,检测结果中的错误并不等同于Eclipse等工具在进行工程编译时的错误(会让程序终止运行),但是根据检测信息对项目进行响应的修改绝对是一个好习惯。这样做的好处有很多,如删除冗余不用的图片、xml等资源文件会让项目变得整洁,减小整体容量;注释(或删除)文件中多余的变量定义可以让文件易读、易维护。
其实,在实际的项目管理中,若像图片这样的整体资源(或整个xml文件)是用不到的,那么可以直接删除,保险起见、也可以在其他地方进行备份。而如果要在某个文件中对部分不用的变量进行剔除,一般采用的专业做法是进行注释,而不是简单粗暴的删除,以防以后需要重新使用这些变量,而且留下痕迹也便于查看谁对该文件做过修改。
项目规范性检测工具Lint的更多相关文章
- eslint 代码检测工具
jshint 检测工具不够灵活下,道格拉斯(何许人也?json创造者,javascript重要任务,犀牛那本书就是他写的). 文档地址: 中文地址 English 安装 利用npm全局安装eslint ...
- Kotlin Android项目静态检查工具的使用
Kotlin Android项目静态检查工具的使用 Kotlin Android项目可用的静态检查工具: Android官方的Lint, 第三方的ktlint和detekt. 静态检查工具 静态检查工 ...
- Python代码规范性检测
一定要注重代码规范,按照平时的代码管理,可以将Python代码规范检测分为两种: 静态本地检测:可以借助静态检查工具,比如:Flake8,Pylint等,调研了一下,用Flake8的相对较多,功能满足 ...
- [转]Android开源项目第二篇——工具库篇
本文为那些不错的Android开源项目第二篇--开发工具库篇,主要介绍常用的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容.多 ...
- Android开源项目第二篇——工具库篇
本文为那些不错的Android开源项目第二篇——开发工具库篇,**主要介绍常用的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容 ...
- [转载]浅谈C/C++内存泄漏及其检测工具
http://dev.yesky.com/147/2356147_3.shtml 对于一个c/c++程序员来说,内存泄漏是一个常见的也是令人头疼的问题.已经有许多技术被研究出来以应对这个问题,比如Sm ...
- Cocos开发中性能优化工具介绍之Visual Studio内存泄漏检测工具——Visual Leak Detector
那么在Windows下有什么好的内存泄漏检测工具呢?微软提供Visual Studio开发工具本身没有什么太好的内存泄漏检测功能,我们可以使用第三方工具Visual Leak Detector(以下简 ...
- VS项目重命名工具
VS项目重命名工具 VS项目整体重命名工具 不再为项目重命名和修改命名空间而烦恼,简单几个字,但是开发加上测试大量项目,前前后后竟然跨越了1个月,汗...不过真正的开发时间可能2-3天的样子. 一. ...
- 实时Bug检测工具Bugsnag发布API更新
原文地址: http://www.uml.org.cn/itnews/2013082609.asp 在应用开发过程中,开发者常常会碰到一个非常头疼的问题,就是应用崩溃.而Bugsnag可以很好地解决这 ...
随机推荐
- SQL server基础知识(表操作、数据约束、多表链接查询)
SQL server基础知识 一.基础知识 (1).存储结构:数据库->表->数据 (2).管理数据库 增加:create database 数据库名称 删除:drop database ...
- Servlet/JSP-02 Servlet相关类
ServletConfig / ServletContext / ServletRequest / ServletResponse 一. ServletConfig:封装了Servlet得配置信息,并 ...
- 连载《一个程序猿的生命周期》-28、被忽悠来的单身HR(女同志)
一个程序猿的生命周期 微信平台 口 号:职业交流,职业规划:面对现实,用心去交流.感悟. 公众号:iterlifetime 百木-ITer职业交流奋斗 群:141588103 微 博:h ...
- 3-2-1-0-GO
正式开始第3份工作,入职第2天,午饭后与Team Leader谈了1个多小时,很有收获. 首先,不同的公司有不同的企业文化和规章制度,需要尊重且入乡随俗,尽快学习并适应,争取早日融入公司和团队当中去, ...
- UNITY 2D入门基础教程
Unity4.3增加了原生的2D开发环境,新建项目时选2D http://blog.1vr.cn/?p=1422
- ANE接入平台心得记录(安卓)
开发环境:FlashBuilder4.7 AIR13.0 Eclipse 由于我懒得陪安卓的开发环境所以我下载了包含安卓SDK Manager的Eclipse,其实直接用FlashBuilder开发A ...
- java 26 - 6 网络编程之 TCP协议 传输思路 以及 代码
TCP传输 Socket和ServerSocket 建立客户端和服务器 建立连接后,通过Socket中的IO流进行数据的传输 关闭socket 同样,客户端与服务器是两个独立的应用程序 TCP协议发送 ...
- Eclipse tooltip变黑的修正
- 自己封装的操作DOM方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Linux收集
1.rsync快速删除文件 rsync --delete -avH /empty /rmdir 选项说明: –delete-before 接收者在传输之前进行删除操作 –progress 在传输时显示 ...