【移动应用开发技术】Android开发中如何使用Lint优化代码_第1页
【移动应用开发技术】Android开发中如何使用Lint优化代码_第2页
【移动应用开发技术】Android开发中如何使用Lint优化代码_第3页
【移动应用开发技术】Android开发中如何使用Lint优化代码_第4页
【移动应用开发技术】Android开发中如何使用Lint优化代码_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】Android开发中如何使用Lint优化代码

这篇文章将为大家详细讲解有关Android开发中如何使用Lint优化代码,文章内容质量较高,因此在下分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。前言在保证代码没有功能问题,完成业务开发之余,有追求的程序员还要追求代码的规范、可维护性。今天,以“成为优秀的程序员”为目标的拭心将和大家一起精益求精,学习使用Lint优化我们的代码。什么是LintLint是AndroidStudio提供的代码扫描分析工具

,它可以帮助我们发现代码结构/质量问题,同时提供一些解决方案,而且这个过程不需要我们手写测试用例。Lint发现的每个问题都有描述信息和等级(和测试发现bug很相似),我们可以很方便地定位问题,同时按照严重程度进行解决。当然这个“严重程度”我们可以手动调节,有些原则问题不容侵犯,必须提升到error,而有的个别问题也可以无视,毕竟人非圣贤孰能无过嘛。Lint工作方式简单介绍Lint会根据预先配置的检测标准检查我们Android项目的源文件,发现潜在的bug或者可以优化的地方,优化的内容主要包括以下几方面:Correctness:不够***的编码,比如硬编码、使用过时API等Performance:对性能有影响的编码,比如:静态引用,循环引用等Internationalization:国际化,直接使用汉字,没有使用资源引用等Security:不安全的编码,比如在WebView中允许使用JavaScriptInterface等Lint检测代码的过程如下图所示:App源文件:包括Java代码,XML代码,图标,以及ProGuard配置文件等lint.xml:Lint检测的执行标准配置文件,我们可以修改它来允许或者禁止报告一些问题从命令行运行LintLint的命令很简单:lint

[flags]

<project

directory>Lint也可以使用Gradle运行:Windows:gradlew

lintMac:./gradlew

lint具体命令行相关的操作这里就不介绍了,因为这个过程实在太痛苦,上一张命令行运行Lint后得到的XML文件截图让你体验一下:我们还是直接进入Lint的GUI操作吧。AndroidStudio中使用LintAndroidStudio中内置了Lint,我们小手一点就可以直接使用。Lint的使用路径:工具栏->Analyze->InspectCode…点击InspectCode后会弹出检查范围的对话框:默认是检查整个项目,我们可以点击Customscope自定义检查范围。点击右边的下拉框,会出现以下选择:分别有:ProjectFiles:所有项目文件ProjectProductionFiles:项目的代码文件ProjectTestFiles:项目的测试文件OpenFiles:当前打开的文件Module‘app’:主要的app模块CurrentFile:当前文件除了内置的选项我们还可以自己选择特定的类进行检查,点击下图中的红色框部分:会弹出自定义范围选择框,默认是空的,我们可以点击左上角的“+”号新增一个检查范围:-Local:只能当前项目使用-Shared:其他AndroidStudio项目也可以使用我们选择Shared,然后起个帅气的名字“ShixinCuteLint”,默认按项目显示,这时检查的文件数为0:上图中右边的四个按钮表示要操作的类型:Include:包括当前文件夹内的文件,但不包括他的子文件夹IncludeRecursively:包括当前文件夹以及它的子文件夹内所有的文件夹,递归添加Exclude:移除当前文件夹,不包括子文件夹ExcludeRecursively:移除当前文件夹及所有子文件夹我们点击左边的app文件夹后,点击右边的IncludeRecursively按钮,把app下的所有文件添加到检查列表:可以看到,这时app下的文件都变绿了,总共有689个文件夹要扫描。点击OK进行检测,稍等一会儿,会弹出Inspection对话框,显示检查结果,没想到我的代码居然有1769个警告!这数字触目惊心啊:我们主要关注红框内的警告,先来看看我的代码Performance有什么问题:哈哈,没想到我还有这么多进步空间!上图可以看到,Lint真是神器,可以帮我们发现自己忽略或者没有意识到的问题,尤其是性能方面,如果你觉得自己代码想优化又不知道从何做起,不妨让Lint

给你指指路。团队中建立代码规范利器:提升、降低问题的等级虽然Lint可以帮我们检查代码的问题,但多人合作时,我们更期望可以在写代码时就发现问题、解决问题。鉴于团队成员中水平良莠不齐,靠个人意识有时候很难保证质量,这时可以修改Lint对于特定问题的警告等级,以最直观的IDE提示来警醒成员。Lint的警告严重程度有以下几种:UnusedEntry:没有使用的属性,灰色,很不起眼Typo:拼写错误,绿色波浪下划线,也不太起眼ServerProblem:服务器错误?好像不是Info:注释文档,绿色,比较显眼WeakWarning:比较弱的警告,提示比较弱Warning:警告,略微显眼一点Error:错误,最显眼的一个日常开发中,好一点的程序员会关注Warning的警告,根据警告优化代码,但那也只是很少一部分。但是红色的Error

就不一样了,基本上看到就想要消灭掉。我们拿命名拼写错误举个例子。类、对象、遍历拼写错误看起来不是什么问题,但是如果你见过大量的无意义或者错误命名,你一定会赞同我的接下来做法。默认的拼写错误是Typo,提示很弱,所以常被人忽略:上面的String类型变量login写成了logn,Lint默认对拼写错误是个下滑波浪线,很不起眼。我们修改一下。打开Preferences/Settings,搜索Inspections,会出现Lint的检测配置页面:要修改拼写的警告等级,搜索“spelling”:然后选择出现的Typo,再点击右边的Severity就是严重程度,改成Error,OK。可以看到,现在拼写错误就会出现红色的错误警告了,让你不好好写变量名!Lint虽好,也不能贪杯。Lint就像是一个洁癖患者,虽然可以让我们代码干净许多,但是如果真要把它提示的全解决,恐怕老板要发怒了:给你发工资天天玩电脑,怎么不出活呢?!Lint报的某些警告的确是没必要,这时我们可以选择忽略这些警告。忽略警告可以分两种:在Java代码中在XML文件夹中在Java代码中忽略Lint警告:忽略Lint警告的注解跟@SuppressWarnings很类似,@SuppressLint(“忽略的警告名称”)。下面的代码演示了如何忽略Lint对使用新API的警告:@SuppressLint("NewApi")

@Override

public

void

onCreate(Bundle

savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

}要是你不清楚要忽略的警告具体是什么名字,那就直接忽略all,当然是当前类/方法/对象:@SuppressLint("all")在XML代码中忽略Lint警告:只需两步:xml中声明tools命名空间使用tools:ignore=”忽略的警告名”例如:<LinearLayout

xmlns:android="/apk/res/android"

xmlns:tools="/tools"

tools:ignore="all"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

android:background="@color/white">Gradle中配置LintGradle中也可以配置Lint的关键操作,比如是否开启Lint警告,或者关闭指定的警告。在module下的build.gradle中添加lintOptions{…},样例代码如下:android

{

...

lintOptions

{

//

Turns

off

checks

for

the

issue

IDs

you

specify.

disable

'TypographyFractions','TypographyQuotes'

//

Turns

on

checks

for

the

issue

IDs

you

specify.

These

checks

are

in

//

addition

to

the

default

lint

checks.

enable

'RtlHardcoded','RtlCompat',

'RtlEnabled'

//

To

enable

checks

for

only

a

subset

of

issue

IDs

and

ignore

all

others,

//

list

the

issue

IDs

with

the

'check'

property

instead.

This

property

overrides

//

any

issue

IDs

you

enable

or

disable

using

the

properties

above.

check

'NewApi',

'InlinedApi'

//

If

set

to

true,

turns

off

analysis

progress

reporting

by

lint.

quiet

true

//

if

set

to

true

(default),

stops

the

build

if

errors

are

found.

abortOnError

false

//

if

true,

only

report

errors.

ignoreWarnings

true

}

}

...自动删除查找出来的无用资源文件代码迭代版本一多,很容易会遗留一些无用的代码、资源文件,我们可以使用Lint进行清除。点击AndroidStudi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论