andorid lint

(一)Lint简介

Android SDK提供了一个代码扫描工具,称为lint。可以帮助您轻松地识别并纠正问题与结构质量的代码,不必执行应用程序或编写任何测试用例。每个问题检测到该工具报告的一个描述消息和严重性级别,您可以快速地优先考虑的关键改进。您还可以配置一个问题的严重性级别,忽略不相关的问题,或提高的严重程度。这个工具有一个命令行接口,所以您可以很容易地集成到您的自动化测试过程。

Lint 工具可以检查你android工程潜在的bug和优化改进,以确保正确性、安全性、性能、可用性、可访问性和国际性。您可以从命令行运行lint,或eclipse中运行lint。

(二)运行方式

 

(三)常见类型:

1. Correctness:Messeges

(1)字符串国际化不完全

(2)国际化的字符串,在默认位置(default locale),没有定义  

2.Correctness

(1)Xml中view的id重名

(2)代码中使用的某些API高于Manifest中的Min SDK

(3)字符串国际化中,同一名字的的String-Array对应的item值不相同 (4)Activity没有注册到Manifest

(5)使用已经废弃的api

(6)避免使用px,使用dp

(7)添加不需要的权限

3.Performance

(1) 避免在绘制或者解析布局(draw/layout)时,分配对象。eg,Ondraw()中实例化Paint().

(2)Layout中无用的参数。

(3)可优化的布局:如一个线性布局(一个Imageview和一个TextView),可被TextView和一个Compound Drawable代替。

(4)可优化的代码:如SparseArray可代替一个Interger2Object的Hashmap

(5)优化layout,比如如果子view都是wrap_content,则设置android:baselineAligned为false,则When set to false, prevents the layout from aligning its children's baselines.

(6)使用FloatMath代替Math,执行sin()和ceil(),以避免float的两次转换。

(7)Nested weight (内外均有weight)将拖累执行效果

(8)未被使用的资源

(9)Overdraw 即指定theme的activity会自己绘制背景,但是布局中会再一次设置背景

(10)View或view的父亲没有用

4.Security

(1)设置setJavascriptEnable将导致脚本攻击漏洞(XSS vulnerabilities)

5.Usability:Icons

(1) 图片尺寸在转换成不同dpi时,存在不能整除的问题,比如2*24px

(2)显示有些base 和browser的资源名不同,但图片内容完全相同。

6.Usability

(1)自定义view缺少默认的构造方法

7.Usability:Typography

(1)特殊字符需用编码代替,如“_”需要用“–”

8.Accessibility

(1)ImageView缺少src内容

 (四)忽略Lint

忽略 lint ,在工程中的lint.xml中加入要忽略检查的类型:

eg:

<?xml version="1.0" encoding="UTF-8"?>
<lint>

<issue
id="HardcodedText"
severity="ignore" />

<issue
id="InflateParams"
severity="ignore" />

</lint>

原文地址:https://www.cnblogs.com/lianghui66/p/5257125.html