android官方技术文档翻译——Android Lint(转)

2023-05-16

本文译自androd官方技术文档《Android Lint》,原文地址:http://tools.android.com/tips/lint。

转自:http://blog.csdn.net/maosidiaoxian/article/details/41592783

 

Android Lint

Android Lint是在ADT 16(和 Tools 16)引入的一个新工具,可以扫描Android 项目源码中潜在的bug 。它可同时作为一个命令行工具,以及集​​成在Eclipse(如下所述),和IntelliJ(详细信息)中。这个架构是有意独立于IDE的,因此它有希望与其他的IDE,其他的构建工具和持续集成系统集成。

以下是它进行扫描的一些错误类型的例子:

  • 缺少翻译(和未使用的翻译)
  • 布局性能问题(老的layoutopt工具会用于查找所有这样的问题,和除此之外更多的问题)
  • 未使用的资源
  • 不一致的数组大小(当在多个配置中定义数组)
  • 可访问性和国际化问题(硬编码字符串,缺少contentDescription等)
  • 图标问题 (如丢失密度、 重复图标、 错误尺寸等)
  • 可用性问题 (如不在文本字段上指定输入的类型)
  • 清单错误
以及其他更多的问题。
 
请参阅 此文档以了解当前 lint 检查的问题的完整列表。
有关如何取消显示(suppress)特定的 lint 警告信息,请参阅 取消警告显示的文档.
 
如果你对编写自定义的lint 检查有兴趣,可以参阅 编写新的 Lint 检查和 编写自定义 Lint 规则。

命令行用法

在 SDK 工具目录有一个命令行工具叫做  lint
如果在你的path上已经配置了 SDK 的 tools/ 目录,您可以使用“ lint”来调用它。只需指向一个特定的 Android 项目目录。你也可以指向一个随机的目录,(如果它不是一个 Android 的项目)将以递归方式搜索,并将检查该目录下的所有项目。(你还可以指定通过空格分隔的多个项目)。
$ lint /src/astrid/
Scanning GreenDroid-GoogleAPIs: ..
Scanning stream: ...
Scanning api: ...........................
Scanning GDCatalog: .......................
Scanning GreenDroid: ...........................................................
Scanning tests: ...
Scanning filters: ....
Scanning tests: .....
Scanning astrid: ....................................................................................................................................................
Scanning simple: .......
api/res/values-ca: Error: Locale ca is missing translations for: sync_SPr_bgwifi_key, sync_SPr_forget_key, sync_SPr_interval_values, sync_SPr_logged_in_prefix... (2 more) [MissingTranslation]
astrid/res/values-ca: Error: Locale ca is missing translations for: DLG_cancel, DLG_dismiss, DLG_ok, EPr_deactivated... (117 more) [MissingTranslation]
api/res/values-cs: Error: Locale cs is missing translations for: sync_SPr_bgwifi_key, sync_SPr_forget_key, sync_SPr_interval_values, sync_SPr_logged_in_prefix... (2 more) [MissingTranslation]
(many lines omitted)
43 errors, 466 warnings

禁用检查

每种错误类型的“ID”都显示在错误消息后面的括号中,如上面的“MissingTranslation”。

您可以通过添加 --disable argument,禁用一个特定的检查,或一列的检查,例如: 
$ lint --disable MissingTranslation,UnusedIds,Usability:Icons /src/astrid/

注意,您也可以列出类别,比如上面的“Usability:Icons”,就是用性类别的图标子类别。 
 
有些检查默认情况下牌禁用状态。可以通过添加 --enable标志启用它们。

最后,您可以通过 --check标志指定运行哪些确切的检查。这让你可以在代码库中查找一个具体的问题,比如: 
$ lint --check MissingPrefix /src/astrid/

如果要找出哪个 id 和类别是可用的,请运行 
$ lint --list
Valid issue categories:
Correctness
Security
Performance
Usability
Usability:Icons
Accessibility
Internationalization

Valid issue id's:
"ContentDescription": Ensures that image widgets provide a contentDescription
"DuplicateIds": Checks for duplicate ids within a single layout
"StateListReachable": Looks for unreachable states in a <selector>
"InefficientWeight": Looks for inefficient weight declarations in LinearLayouts
"ScrollViewSize": Checks that ScrollViews use wrap_content in scrolling dimension
"MergeRootFrame": Checks whether a root <FrameLayout> can be replaced with a <merge> tag
...

使用 --show命令加上 id 列表或类别 (或不带参数查看全部)可以获取指定的问题的解释:

$ lint --show MissingPrefix
MissingPrefix
-------------
Summary: Detect XML attributes not using the Android namespace

Priority: 8 / 10
Severity: Warning
Category: Correctness

Most Android views have attributes in the Android namespace. When
referencing these attributes you *must* include the namespace prefix,
or your attribute will be interpreted by aapt as just a custom
attribute.

HTML 报表

这个命令行工具还可以生成HTML报告。这相比普通的 lint 输出有一定的优势:
  • 它包含每个问题相关的更长的解释,并通过一个More info 的属性提供关于这个问题的更详细信息的链接。
  • 它包含有错误的实际的源代码行 (上下各有三行代码的一个窗口)。
  • 它可以包含关联到该源代码文件的链接
  • 对于错误图标,为能够比较起见,在报告中会显示图标本身
要生成 HTML 报告,只需要添加 --html 文件名 作为参数:
$ lint --html /tmp/report.html

默认情况下,链接到源代码文件将只使用本地的 file:// 路径资源。您可以通过 --url 选项把 URL 重新映射向不同的前缀。例如:
$ lint --html /tmp/report.html --url /src/MyProj=http://buildserver/src/MyProj

其他命令行选项

运行 lint --help以获取可用参数的相关信息。

Eclipse 中的用法

注: 此文档是在 lint 首次发布时编写的。Eclipse 集成已经有了显著的提高。欲了解更多最新的详细信息,请参阅 新的Eclipse Lint UI(New Eclipse Lint UI),
布局编辑器 Lint 反馈(Layout Editor Lint Feedback) 和  Lint 保存(Lint On Save).
 
Lint 在 ADT 16及更高的版本上集成。该集成 提供了上述 Lint 命令行版本的几个功能:
  • 自动修复许多警告
  • Lint 可以在各种编辑器操作中自动运行
  • 屏幕某些错误类型及特定的错误实例
  • 配置问题检查严重程度
  • 从 lint 视图直接跳转到问题源码

Lint 自动化

在以下情况时 lint 会自动运行:
  • 导出 APK。在这种情况下,会以特殊模式运行 lint,它将只查找致命错误 (这样会更快),并且如果发现了任何错误的时候会中止导出。你可以在 Lint 选项中关闭它。
  • 编辑并保存和 XML 文件,例如布局文件或清单文件。在这种情况下,所有适用于给定文件的文件范围检查都会运行,并且会为任何已发现的问题加上编辑器的标记。
  • 使用布局编辑器。每个 UI 操作后,在布局文件上会运行文件范围检查 (如各种 layoutopt 规则),并且结果将显示在一个特别的 lint 窗口(当发现错误时它可以从显示在布局编辑器的右上角的错误标记中打开)。

Lint 窗口

要在一个项目上运行 Lint,请在包浏览器中选择项目,然后单击 Lint 工具栏上的功能(见下面的图片)。

或者您可以在项目上右击,在 Android Tools 子菜单中,有一个“运行 Lint”的功能。它将打开一个 Lint 窗口,其中包含各种错误。选择一个错误将会在右侧的文本区显示相关联的解释。

如果 lint 视图上有任何错误,你可以在错误上双击,来跳转到相关联的源代码位置。每个警告图标将显示其严重程度,并具对于已修复的警告(见下一节)会有一个小灯泡重叠。

该窗口也有一个操作栏(在右上角),它可以让你
  • 再次运行 lint 检查以刷新结果 (在刷新期间它会变成一个 Stop 按钮,用于中止检查)
  • 如果有错误,运行与此错误相关联的修复
  • 忽略此修复
  • 删除警告标记
  • 删除所有的警告标记

快速修复

许多 lint 警告有自动修复功能。例如,各种 layoutopt 修复的替换提示 (如替换 wrap_content 为 0dp)。 
  • 从 lint 视图中,单击灯泡来调用一个修复程序。
  • 从布局编辑器警告摘要中,单击修复按钮来修复。
  • 从 XML 代码编辑器中,调用快速修复 (Ctrl+1 或Command+1)并选择与该警告关联的快速修复。

取消错误警告的显示

从编辑器快速修复菜单中,你也可以选择
  • 仅忽略此文件中的这个警告
  • 忽略此项目中的这个警告
  • 在此期间忽略此警告。
  • 通过添加注解或属性忽略此广告, 此处有解释。
(如果你在 quickfix 列表找不到 lint 的修复操作,请参阅 已知 Bug 章节)

这些选择都存储项目里名为 lint.xml的文件中,可以通过命令行工具读取。因此,您可以在 UI 中忽略警告,并在你的源项目关联的 lint.xml文件中进行记录,其他运行着的lint将不会看到你已经忽略的警告(大概是因为已经手动验证了)。

选项

要编辑用于所有项目备用选项的 lint 全局选项,可以调用正常的 Eclipse 选项对话框,并选择 Android > Lint Options:

如果你选择了一个问题,您可以在右下角的下拉列表中编辑其严重程度。这使您可以把某些问题指定为 Error(即会在启用了靠近顶部的对话框中的选项的情况下中止导出 APK)。

要完全关闭问题检查,请选择“Ignore”作为严重程度。 
请注意此操作不会编辑每个项目的 lint 设置
。打开项目设置对话框 (右击该项目),你将在这里找到 Android Lint 的属性页。在选项对话框中手动严重性编辑也会与取消显示的错误一起被记录在 lint.xml文件中,所以您的团队中的其他人将会获得你对这个项目编辑的相同的严重性设置。 
子页  (2): 取消 Lint 警告的显示(Suppressing Lint Warnings) 编写一个 Lint 检查(Writing a Lint Check)

 

转载于:https://www.cnblogs.com/liyuzhao/p/4868186.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android官方技术文档翻译——Android Lint(转) 的相关文章

  • SQL基本语句及用法

    目录 一 基本SQL语句用法及概述 1 常用MySQL命令 2 语法规范 3 SQL语句分类 二 数据查询语言 1 基础查询 1 xff09 查询的字段列表可以是字段 常量 表达式 函数等 2 xff09 使用别名 xff0c 字段名和别名
  • PyCharm 社区版 安装 教程(Windows)

    注 xff1a 如果已经安装过python 3 5 及以上版本的解释执行器则跳过此步骤 下载 PyCharm 社区版 软件 PyCharm windows 版本 安装包如下 Thank you for downloading PyCharm
  • 监控zabbix面试题

    目录 1 我们可以用zabbix监控哪些 2 zabbix的主动监控与被动监控 3 Zabbix监控做过哪些 4 zabbix监控mysql的四大性能指标 5 配置zabbix自定义监控流程 6 安全组是什么 xff0c 限制了3306的入
  • 系统运维面试题

    目录 1 什么是运维 什么是游戏运维 2 在工作中 xff0c 运维人员经常需要跟运营人员打交道 xff0c 请问运营人员是做什么工作的 xff1f 3 请描述下linux 系统的开机启动过程 4 为什么连接的时候是三次握手 xff0c 关
  • Xshell的使用

    本文修改于 xff1a 高效使用XSHELL 简书 jianshu com https www jianshu com p 67b83d3f2e40 一 XShell的概述 1 XSHELL是什么 Xshell是用于Windows平台的功能
  • linux下解压rar和7z压缩文件

    在windows下我们压缩解压文件通常后缀为rar xff0c 在linux下我们压缩解压文件通常后缀为tar 默认在linux下我们不能解压压缩rar文件 我们可以下载rarlinux安装包实现解压压缩后缀为rar的包 下载地址 xff1
  • go语言,简单分析和了解

    Go 本地化 该指南也有其他语言版本 xff1a Brazilian Portuguese Portugu s do BrasilCatalan Catal Spanish Espa olFrench Fran aisHebrew Japa
  • Filebeat输出json格式的日志并指定message字段的值

    目录 1 开启json格式所需的字段概述 2 配置示例 3 如果问题没有解决可点击官网 1 开启json格式所需的字段概述 filebeat配置input要有以下字段 json keys under root true json overw
  • Prometheus添加邮件告警和企业微信机器人告警

    我们将在 Prometheus 服务器上编写警报规则 xff0c 这些规则将使用我们收集的指标并在指定的阈值或标准上触发警报 xff0c 收到警报后 xff0c Alertmanager 会处理警报并根据其标签进行路由 一旦路径确定 xff
  • docker部署简易Prometheus

    注 xff1a 部署前可以先系统的学习一下 xff1a Introduction Prometheus中文技术文档 在之后需要书写自定义告警的 xff0c 需要在学习一下PromQL语言 xff0c 一般网上也能搜到 xff0c 可以在安装
  • k8s面试题-进阶

    1 简述etcd及其特点 etcd是CoreOS团队发起的开源项目 xff0c 是一个管理配置信息和服务发现 xff08 service discovery xff09 的项目 xff0c 它的目标是构建一个高可用的分布式键值 xff08
  • 制作Alpine Linux镜像报错errors: 15 distinct packages available

    1 执行报错 执行docker build t 镜像 版本 f Dockerfile 报错 xff1a 2 查看网上的解决思路 网上文档解决思路 xff1a 这边我做了一下改变把这些写入了dockerfile 加了几个RUN RUN rm
  • 如何确定 Python 变量的类型?

    问 xff1a 如何查看变量的类型 xff1f xff08 例如无符号 32 位 xff09 答1 huntsbot com聚合了超过10 43 全球外包任务平台的外包需求 xff0c 寻找外包任务与机会变的简单与高效 使用 type 内置
  • arch linux 登录普通用户显示 "Login incorrect"

    创建用户时指定了 shell xff0c 但是指定 shell 不存在 用 root 登录查看有哪些 shell chsh l 或 span class token function cat span etc shells 用编辑器打开 e
  • 生产者消费者模型

    什么是生产者消费者模型 xff1f span class token variable 生产者和消费是操作系统中一种重要的模型 xff0c 它描述的是一种等待和通知的机制 span 一 概念引入 日常生活中 xff0c 每当我们缺少某些生活
  • Mariadb-Mysql服务器

    1 安装服务 root 64 ftp2 yum install y mariadb 2 启动服务 root 64 ftp2 systemctl start mariadb 3 进入Mysql 因为默认进入Mysql是不需要密码的 xff0c
  • Vmware批量开关机脚本

    运行Windows脚本批量开关Vmware虚拟机 1 vmrun T ws start opt VMware win2k8r2 vmx nogui启动无图形界面虚拟机 xff08 T 是区分宿主机的类型 xff0c ws server se
  • linux下proxy设定的一般方法

    在linux下配置测试环境时 xff0c 经常遇到代理服务器配置的相关问题 xff0c 在这里总结一些 xff0c 为以后节省些时间 也希望对需要的人有所帮助 linux下proxy的常规设置 一般是把如下环境变量的设置放到 etc pro
  • 计算机视觉中的论文常见单词总结

    前言 本文对计算机视觉论文中常出现的单词进行了汇总 xff0c 对于不具备直接阅读英文文献的读者 xff0c 可以考虑把这些单词给背了 之前的文章 计算机视觉中的高效阅读论文的方法总结 中提到了如何掌握阅读英文文献的能力 xff0c 我就是
  • android常见面试题与我自己的回答 (二)

    1 xff0c android process 解决访问SharedPreferences xff0c 不在同一进程 private SharedPreferencesDB Context cxt this context 61 cxt C

随机推荐