android官方技术文档翻译――Android Lint
Android Lint是在ADT 16(和 Tools 16)引入的一个新工具,可以扫描Android 项目源码中潜在的bug 。它可同时作为一个命令行工具,以及集??成在Eclipse(如下所述),和IntelliJ(详细信息)中。这个架构是有意独立于IDE的,因此它有希望与其他的IDE,其他的构建工具和持续集成系统集成。
本文引用地址:https://www.eepw.com.cn/article/201609/304306.htm
以下是它进行扫描的一些错误类型的例子:
缺少翻译(和未使用的翻译)
布局性能问题(老的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
InefficientWeight: Looks for inefficient weight declarations in LinearLayouts
ScrollViewSize: Checks that ScrollViews use wrap_content in scrolling dimension
MergeRootFrame: Checks whether a root
...
使用--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 文件名 作为参数:
评论