安卓性能测试之Lint测试
pre { direction: ltr; color: rgba(0, 0, 10, 1); text-align: left }
pre.western { font-family: "Liberation Serif", serif; font-size: 12pt }
pre.cjk { font-family: "Droid Sans Fallback"; font-size: 12pt }
pre.ctl { font-family: "Droid Sans Fallback"; font-size: 12pt }
h2 { margin-top: 0.42cm; direction: ltr; color: rgba(0, 0, 10, 1); text-align: left }
h2.western { font-family: "Liberation Sans", sans-serif; font-size: 14pt; font-weight: normal }
h2.cjk { font-size: 14pt; font-weight: normal }
h2.ctl { font-size: 14pt; font-weight: normal }
h1 { margin-bottom: 0.21cm; direction: ltr; color: rgba(0, 0, 10, 1); text-align: left }
h1.western { font-family: "Liberation Sans", sans-serif; font-size: 14pt; font-weight: normal }
h1.cjk { font-family: "Droid Sans Fallback"; font-size: 14pt; font-weight: normal }
h1.ctl { font-family: "Droid Sans Fallback"; font-size: 14pt; font-weight: normal }
p { margin-bottom: 0.25cm; direction: ltr; color: rgba(0, 0, 10, 1); line-height: 120%; text-align: left }
p.western { font-family: "Liberation Serif", serif; font-size: 12pt }
p.cjk { font-family: "Droid Sans Fallback"; font-size: 12pt }
p.ctl { font-family: "Droid Sans Fallback"; font-size: 12pt }
code.ctl { font-family: "Liberation Mono", monospace }
1 lint简介
1.1 概述
lint是随Android SDK自带的一个静态代码分析工具。它用来对Android工程的源文件进行检查,找出在正确性、安全、性能、可使用性、可访问性及国际化等方面可能的bugs和可优化提升的地方。
1.2 lint工作流程
针对我们的项目,通过lint.xml配置lint分析的选项,执行检查后,会针对要分析的issue生成报告。
2 lint使用
有关lint的使用,有以下地方需要理解:
2.1 分析的范围
要对Android项目进行静态分析,首先就是指定要分析的源文件的范围。包括以下方面:
整个工程或模块。
目录和文件。
xml和java文件中使用标签和注解来忽略检查。
lint检查结果分warning和error两个等级,可以忽略warning问题。
2.2 检查的方面
lint工具提供了对代码的一系列不同方面的问题进行检查的功能。每一个问题(issue)都有它唯一的id。这些issue是分类的。
可以通过为工程配置lint.xml来指定要分析哪些方面的问题:
每个issue一个标签,可以指定它的严重性(severity)为ignore、error、warning等:
下面是一个lint.xml的示例:
<?xml
version="1.0" encoding="UTF-8"?>
<lint>
<!--
Disable the given check in this project -->
<issue
id="IconMissingDensityFolder" severity="ignore"
/>
<!--
Ignore the ObsoleteLayoutParam issue in the specified files -->
<issue
id="ObsoleteLayoutParam">
<ignore
path="res/layout/activation.xml" />
<ignore
path="res/layout-xlarge/activation.xml" />
</issue>
<!--
Ignore the UselessLeaf issue in the specified file -->
<issue
id="UselessLeaf">
<ignore
path="res/layout/main.xml" />
</issue>
<!--
Change the severity of hardcoded strings to "error" -->
<issue
id="HardcodedText" severity="error" />
</lint>
在xml和java文件中,也可以禁用lint检查:
To disable lint checking for a specific Java class or method, use the @SuppressLint annotation.
To disable lint checking for specific sections of your XML file, use the tools:ignore attribute.
2.3 生成报告
lint分析完成后,可以生成xml、html格式的文档。文档具体指出了代码在不同方面所发现的问题,每个问题项都指出了在源文件的位置和问题描述。
3.
在Android
Studio中使用
lint提供了命令行接口,所以可以作为单独工具被使用,或者集成到ide的构建流程中去。
在Android
Studio中,通过菜单或者在Project视图以及代码视图中的右键菜单中选择Analyze
> Inspect Code就可以打开lint检查的对话框Specify
Inspection
Scope,在这里设置好要进行代码分析的范围,确定后工具就开始对代码进行检查了,完成后会自动打开Inspection工具窗口。
根据检测的类型分为以下三类:
1.
检测整个工程,以上截图中有
“Whole
project” 选项,选中即可。
2.
检测部分模块,比如
“/package/apps/Settings”
模块,首先在Android
Studio 左边的目录列表中点击选中这个模块的根目录,然后执行Analyze
> Inspect Code打开lint检查的对话框Specify
Inspection Scope,界面中就已经显示选中了刚才的“/package/apps/Settings”
模块,点击ok即可。
3.
检测某个文件,一种方法是打开这个文件,然后执行Analyze
> Inspect Code打开lint检查的对话框Specify
Inspection Scope,界面选中的就是当前打开的文件。另一中就是在目录中选中该文件,然后执行Analyze
> Inspect Code打开lint检查的对话框Specify
Inspection Scope。
下图,左边是分类了的问题,选中一个问题后,右边是针对此问题的详细说明。
Location指出了发生问题在源文件的位置,Problem
synopsis问题概要给出了此问题的解释,可以看到,在MaterialHeader类的源文件的21行,字段mPtrFrameLayout可以被
转换为局部变量使用。(局部变量具有更快的访问速度,而且更精确的变量范围具有更好的维护性)
在Android
Studio生成lint报告后,可以在Inspection工具窗口中快速定位到代码位置,就像logcat工具窗口那样,在下图右边,Problem
resolution标题下有“Convert
to
local”的连接,点击后可直接将当前问题修复!
Inspection窗口左边的工具栏,可以Export当前的分析结果为xml或html文件。
安卓性能测试之Lint测试的更多相关文章
- 【腾讯优测干货分享】安卓专项测试之GPU测试探索
本文来自于Dev Club 开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57c7ffdc0569a1191bce8a63 作者:章未哲——腾讯SNG质 ...
- 安卓app测试之Monkey测试
一.Monkey特点 1.运行时机:一般是产品稳定后 首轮功能测试完成的夜间进行 2.需要知道packageName 3.目的:主要测试产品是否存在崩溃问题和ANR问题. 二.获取包名的两个方法 首先 ...
- 性能测试之LoardRunner 测试场景监控关注的几点
1.系统业务处理能力,即通常我们在进行性能测试的时候,在特定的硬件和软件环境下考察的业务处理能力,即“事物”,需要关注当前.平时.峰值以及长远未来业务发展情况,考虑不同业务的处理数量,从而设定相应的业 ...
- 安卓性能测试之 adb shell 常用命令
pm list packages 列出包名adb shell pm list packages:列出所有的包名.adb shell dumpsys package:列出所有的安装应用的信息adb sh ...
- Shell脚本 | 性能测试之启动流量
安卓应用的流量统计有多种方式,点击「阅读原文」可以看到一篇别人写的文章,关于安卓流量数据的获取,写的挺全的,列举了几种不同方式的优劣.(见文末参考链接) 今天我要分享的是通过脚本一键获取应用的启动流量 ...
- 性能测试之Windows常见性能计数器
性能计数器(counter)是描述服务器或操作系统性能的一些数据指标.计数器在性能测试中发挥着“监控和分析”的关键作用,尤其是在分析系统的可扩展性.进行性能瓶颈的定位时,对计数器的取值的分析非常关键. ...
- [转载]软件测试之Web测试经典总结
转载自:软件测试之Web测试经典总结 基于Web的系统测试在基于Web的系统开发中,如果缺乏严格的过程,我们在开发.发布.实施和维护Web的过程中,可能就会碰到一些严重的问题,失败的可能性很大.而且, ...
- 性能测试培训:Ajax接口级性能测试之jmeter版
性能测试培训:Ajax接口级性能测试之jmeter版 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.在poptest认为工具 ...
- 老李分享知识:性能测试之TPS和吞吐率
老李分享知识:性能测试之TPS和吞吐率 当增大系统的压力(或添加并发用户数)时,吞吐率和TPS的改变曲线呈大体一致,则系统基本稳定. 若压力增大时,吞吐率的曲线添加到一定程度后出现改变缓 ...
随机推荐
- Linux下配置远程免密登录
第一步: 输入ssh-keygen: [root@localhost zookeeper-3.5.7]# ssh-keygen Generating public/private rsa key pa ...
- linux 系统 解决php -v查看到版本于phpinfo()打印的版本不一致问题
发现问题的原因: 安装zip扩展后,配置成功,但是使用gitlab合并的时候发生错误,经检查,使用phpinfo打印出来的php版本为7.1,而使用linux度服务器 运行 php -v的版本却是5. ...
- 实践2:如何使用word2vec和k-means聚类寻找相似的城市
理解业务 一个需求:把相似的目的地整理出来,然后可以通过这些相似目的地做相关推荐,或者是相关目的地的推荐 准备数据 Word2Vec算法:可以学习输入的文本,并输出一个词向量模型 对数据进行清洗,去出 ...
- 从读写角度,带你了解数仓的IO基本框架
摘要:本文从读取和写入的角度分别描述了行存和列存的IO模型,并对文件结构做了简单介绍. 本文分享自华为云社区<GaussDB(DWS)基本IO框架>,作者: Naibaoofficial. ...
- CF809E题解
给定一个排列 \(a_i\) 和一棵树,求: \[\frac 1 {n(n-1)}\sum_{i=1}^n\sum_{j=1}^n \varphi(a_i \times a_j) \times dis ...
- python 装饰器的使用
装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景,比如:插入日志.性能测试.事务处理.缓存.权 ...
- [Java编程思想] 第二章 一切都是对象
第二章 一切都是对象 2.1 用引用操纵对象 创建一个String引用: String s; 这里所创建的只是引用,并不是对象. 创建一个引用的同时便初始化: String s = &qu ...
- Python:用pyinstrument做性能分析
导引 在计算密集型计算或一些Web应用中,我们常常需要对代码做性能分析.在Python中,最原始的方法即是使用time包中的time函数(该函数以秒为计时单位): from time import s ...
- 配置 PackMan 镜像
一.参考链接 阿里云镜像站 二.PackMan 镜像介绍 Packman 是 OpenSUSE 最大的第三方软件源,主要为 OpenSUSE 提供额外的软件包,包括音视频解码器.多媒体应用.游戏等. ...
- python轻松入门——爬取豆瓣Top250时出现403报错
关于爬虫程序的418+403报错. 1.按F12打开"开发者调试页面"如下图所示:按步骤,选中Network,找到使用的接口,获取到浏览器访问的信息. 我们需要把自己的python ...