当我通过分析 -> 检查代码在 Android Studio 中运行 lint 时,我可以从多种要查找的内容中进行选择。
当我转到 lint 的命令行版本并列出所有要检查的可用内容 (lint --list) 时,我得到的列表不包括我在 Android Studio 中看到的所有检查。
例如,我可以在 Android Studio 中使用 ID ConstantConditions 运行检查,但无法在命令行上运行它。
~/app [master] lint --check ConstantConditions --xml results.xml app
Invalid id or category "ConstantConditions".
Android Studio 是否使用其他版本的 lint?以下是有关 lint 命令行版本的一些信息:
~/app [master] which lint
lint is /Users/Mark/android-sdk-macosx/tools/lint
~/app [master] lint --version
lint: version 24.3.3
最佳答案
IntelliJ IDEA 有一个“检查”的概念,Android Studio 继承了这一点。对于 Android Studio 检查引擎报告的任何给定问题,可以有三个理论来源:
一种库存 IDEA 检查,Android Studio 简单地采用了这种检查。
Android Studio 特定的检查,针对可能只能从 IDE 内部而不是外部 Lint 工具轻松检测到的内容。
来自 Lint 的东西。
我不知道 #2 是否真的被任何东西使用,但它完全在可能性范围内。
就您的错误而言,要么不是 Lint(例如 IDEA 检查),要么检查的表示方式与等效的命令行之间存在命名差异。由于这些内容没有特别详细的记录,所以很难说到底发生了什么。
但是,一般来说,不要假设您看到 Android Studio 发出的所有内容都一定来自 Lint。
关于命令行上的 Android lint 缺少问题组(与 Android Studio 中提供的选项相比),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31686335/