android官方技术文档翻译——Android Lint
本文译自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 规则。
命令行用法
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禁用检查
您可以通过添加 --disable argument,禁用一个特定的检查,或一列的检查,例如:
$ lint --disable MissingTranslation,UnusedIds,Usability:Icons /src/astrid/注意,您也可以列出类别,比如上面的“Usability:Icons”,就是用性类别的图标子类别。
--enable标志启用它们。最后,您可以通过
--check标志指定运行哪些确切的检查。这让你可以在代码库中查找一个具体的问题,比如:
$ lint --check MissingPrefix /src/astrid/如果要找出哪个 id 和类别是可用的,请运行
$ lint --listValid issue categories:CorrectnessSecurityPerformanceUsabilityUsability:IconsAccessibilityInternationalizationValid 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 MissingPrefixMissingPrefix-------------Summary: Detect XML attributes not using the Android namespacePriority: 8 / 10Severity: WarningCategory: CorrectnessMost Android views have attributes in the Android namespace. Whenreferencing these attributes you *must* include the namespace prefix,or your attribute will be interpreted by aapt as just a customattribute.HTML 报表
- 它包含每个问题相关的更长的解释,并通过一个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 中的用法
Eclipse Lint UI),
- 自动修复许多警告
- Lint 可以在各种编辑器操作中自动运行
- 屏幕某些错误类型及特定的错误实例
- 配置问题检查严重程度
- 从 lint 视图直接跳转到问题源码
Lint 自动化
- 导出 APK。在这种情况下,会以特殊模式运行 lint,它将只查找致命错误 (这样会更快),并且如果发现了任何错误的时候会中止导出。你可以在 Lint 选项中关闭它。
- 编辑并保存和 XML 文件,例如布局文件或清单文件。在这种情况下,所有适用于给定文件的文件范围检查都会运行,并且会为任何已发现的问题加上编辑器的标记。
- 使用布局编辑器。每个 UI 操作后,在布局文件上会运行文件范围检查 (如各种 layoutopt 规则),并且结果将显示在一个特别的 lint 窗口(当发现错误时它可以从显示在布局编辑器的右上角的错误标记中打开)。
Lint 窗口
要在一个项目上运行 Lint,请在包浏览器中选择项目,然后单击 Lint 工具栏上的功能(见下面的图片)。
或者您可以在项目上右击,在 Android Tools 子菜单中,有一个“运行 Lint”的功能。它将打开一个 Lint 窗口,其中包含各种错误。选择一个错误将会在右侧的文本区显示相关联的解释。
如果 lint 视图上有任何错误,你可以在错误上双击,来跳转到相关联的源代码位置。每个警告图标将显示其严重程度,并具对于已修复的警告(见下一节)会有一个小灯泡重叠。
该窗口也有一个操作栏(在右上角),它可以让你
- 再次运行 lint 检查以刷新结果 (在刷新期间它会变成一个 Stop 按钮,用于中止检查)
- 如果有错误,运行与此错误相关联的修复
- 忽略此修复
- 删除警告标记
- 删除所有的警告标记
快速修复
- 从 lint 视图中,单击灯泡来调用一个修复程序。
- 从布局编辑器警告摘要中,单击修复按钮来修复。
- 从 XML 代码编辑器中,调用快速修复 (Ctrl+1 或Command+1)并选择与该警告关联的快速修复。
取消错误警告的显示
- 仅忽略此文件中的这个警告
- 忽略此项目中的这个警告
- 在此期间忽略此警告。
- 通过添加注解或属性忽略此广告, 此处有解释。
(如果你在 quickfix 列表找不到 lint 的修复操作,请参阅 已知 Bug 章节)
这些选择都存储项目里名为lint.xml的文件中,可以通过命令行工具读取。因此,您可以在 UI 中忽略警告,并在你的源项目关联的lint.xml文件中进行记录,其他运行着的lint将不会看到你已经忽略的警告(大概是因为已经手动验证了)。
选项
如果你选择了一个问题,您可以在右下角的下拉列表中编辑其严重程度。这使您可以把某些问题指定为 Error(即会在启用了靠近顶部的对话框中的选项的情况下中止导出 APK)。
要完全关闭问题检查,请选择“Ignore”作为严重程度。
请注意此操作不会编辑每个项目的 lint 设置
。打开项目设置对话框 (右击该项目),你将在这里找到 Android Lint 的属性页。在选项对话框中手动严重性编辑也会与取消显示的错误一起被记录在lint.xml文件中,所以您的团队中的其他人将会获得你对这个项目编辑的相同的严重性设置。
android官方技术文档翻译——Android Lint的更多相关文章
- Android官方技术文档翻译——Gradle 插件用户指南(5)
昨晚把第五章未译完的几句话攻克了.只是第六章没怎么译,明后天又是周末,假设周一前第六章翻译完的话,周一再发第六章. 本文译自Android官方技术文档<Gradle Plugin User Gu ...
- Android官方技术文档翻译——Gradle 插件用户指南(4)
最近赶项目,白天基本没时间,只有晚上在家的时候才能看一看.昨天晚上只翻译完了第四章,今天就只发第四章吧. 本文译自Android官方技术文档<Gradle Plugin User Guide&g ...
- Android官方技术文档翻译——Gradle 插件用户指南(7)
本文译自Android官方技术文档<Gradle Plugin User Guide>,原文地址:http://tools.android.com/tech-docs/new-build- ...
- Android官方技术文档翻译——Gradle 插件用户指南(6)
没想到翻译这篇<Gradle 插件用户指南>拖了差不多一个月,还跨年了.不过还好,在2号时终于一口气把剩下的给翻译完了(其实那天剩下的也就不到一章). 今天先发一下第六章,明天再发第七章. ...
- Android官方技术文档翻译——Gradle 插件用户指南(1-3)
不知道是什么网络问题,上午一直发不了博客,其它页面基本正常,就是在写博客这里,每次打开都是响应超时.刚才用了VPN,顺便试了一下,竟然能够编辑.想是CDN之类的问题吧. 这次翻译的是Gradle 插件 ...
- Android官方技术文档翻译——新构建系统概述
本文译自Android官方技术文档<New Build System>,原文地址:http://tools.android.com/tech-docs/new-build-system. ...
- Android官方技术文档翻译——开发工具的构建概述
本文译自Android官方技术文档<Build Overview>,原文地址:http://tools.android.com/build. 因为<Android Lint Chec ...
- Android官方技术文档翻译——Ant 任务
本文译自Android官方技术文档<Ant Tasks>,原文地址:http://tools.android.com/tech-docs/ant-tasks. 由于是抽着时间译的.所以这篇 ...
- Android官方技术文档翻译——IntelliJ 项目迁移
本文译自Android官方技术文档<Migrating from IntelliJ Projects>,原文地址:http://tools.android.com/tech-docs/ne ...
随机推荐
- 原生JS实现圆周运动
<body> <div id="ball" style="width:20px; height:20px; background:red; border ...
- SpringMVC 教程 - Handler Method
原文链接:https://www.codemore.top/cates/Backend/post/2018-04-21/spring-mvc-handler-methods 由注解@RequestMa ...
- jdk和tomcat配置
1.一次成功的JAVA环境变量配置,必须要配置一下三个系统变量:JAVA_HOME(变量值为JDK的路径),PATH(变量值:%JAVA_HOME%\bin;),CLASS_PATH(变量值为JDK中 ...
- 给定 n×n 的实数矩阵,每行和每列都是递增的,求这 n^2 个数的中位数。
#define COL 4 #define ROW 4 int findMedian(int matrix[][COL], int row, int col) { int* arr = new int ...
- Lucene 6.0下使用IK分词器
Lucene 6.0使用IK分词器需要修改修改IKAnalyzer和IKTokenizer. 使用时先新建一个MyIKTokenizer类,一个MyIkAnalyzer类: MyIKTokenizer ...
- cassandra 常见问题
摘要 本文主要介绍在部署cassandra集群以及使用cassandra过程中遇到的一些问题. 文章只发布在CSDN 和个人站点 更多nosql文章可以访问stone fang 个人主页 正文 Q1: ...
- ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse
ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse 书中,大部分出现hydro的地方,直接替换为indigo或ja ...
- 【安卓开发】为什么不能往Android的Application对象里存储数据
在一个App里面总有一些数据需要在多个地方用到.这些数据可能是一个 session token,一次费时计算的结果等.通常为了避免activity之间传递对象的开销 ,这些数据一般都会保存到持久化存储 ...
- Effective C++ ——资源管理
条款13:以对象来管理资源 在C++中我们经常会涉及到资源的申请与申请,一般都是由关键字new 和 delete来操作的,两者都是成对存在的,缺一不可,否则会出现意想不到的问题,例如: class I ...
- 如何使用《DB 查询分析器》高效地生成旬报货运量数据
如何使用<DB 查询分析器>高效地生成旬报货运量数据 马根峰 (广东联合电子服务股份有限公司, 广州 510300) 1 引言 中国本土 ...