您的位置:首页 > 移动开发 > Android开发

android lint简介

2015-10-29 16:48 489 查看
英文原文:http://tools.android.com/tips/lint

参照文章:/article/1697797.html
一、简介
AndroidLint是SDKTools16(ADT16)之后才引入的工具,通过它对Android工程源代码进行扫描和检查,可发现潜在的问题,以便程序员及早修正这个问题。AndroidLint提供了命令行方式执行,还可与IDE(如Eclipse)集成,并提供了html形式的输出报告。
由于AndroidLint在最初设计时就考虑到了independent于IDE,所以它可以很方便的与项目中的其他自动系统(配置/Build/测试等)集成.
AndroidLint主要用于检查以下这些错误:

1、Missingtranslations(andunusedtranslations)没有翻译的文本
2、Layoutperformanceproblems(alltheissuestheoldlayoutopttoolusedtofind,andmore)
3、Unusedresources未使用的冗余资源
4、Inconsistentarraysizes(whenarraysaredefinedinmultipleconfigurations)在多个配置中的数组大小不一致文件
5、Accessibilityandinternationalizationproblems(hardcodedstrings,missingcontentDescription,etc)
6、Iconproblems(likemissingdensities,duplicateicons,wrongsizes,etc)
7、Usabilityproblems(likenotspecifyinganinputtypeonatextfield)
8、Manifesterrors

当然AndroidLint远远不至检查以上的错误,更多的内容请参考《Android
Lint检查规则列表

在Eclipse中可以在菜单Window->Preference->“LintEerrochecking”中设置规则的检查级别,如图1所示。
检查级别可以是:
Default
Fatal
Errro
Waring
Information
Ingore(即不检查)

图1



如果你只是想对lint的检查规则做些简单的定制,请参考《AndroidLint检查规则的定制(基本篇)》或英文官方文档
如果你想对lint的检查规则做些高级的定制,请参考官方文档Writing
NewLintChecksandWriting
CustomLintRules.
二、命令行中使用Lint
2.1、基本使用

ThereisacommandlinetoolintheSDKtools/directorycalled
lint
.
IfyouhavetheSDK
tools/
directory
onyourpath,youcaninvokeitas“
lint
”.JustpointtoaspecificAndroid
projectdirectory.Youcanalsopointtoarandomdirectory,which(ifitisnotanAndroidproject)willbesearchedrecursivelyandallprojectsunderthatdirectorywillbechecked.(Andyoucanalsospecifymultipleprojectsseparatedbyspaces)
在AndroidSDK的tools下有个叫lint.bat的文件,它就是lint的命令行工具。
lint命令后可以带一个或多个参数,参数之间用空格隔开,参数表示的是需要使用lint进行扫描的Android项目的目录。
示例1
linux命令行
<pstyle="margin-top:0px;margin-bottom:10px;padding-top:0px;padding-bottom:0px;"></p><div><spanclass="pln"> lint</span><spanclass="pun"style="color:rgb(102,102,0);">/</span><spanclass="pln">src</span><spanclass="pun"style="color:rgb(102,102,0);">/</span><spanclass="pln">astrid</span><spanclass="pun"style="color:rgb(102,102,0);">/</span></div><div><spanclass="typ"style="color:rgb(102,0,102);">Scanning</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">GreenDroid</span><spanclass="pun"style="color:rgb(102,102,0);">-</span><spanclass="typ"style="color:rgb(102,0,102);">GoogleAPIs</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">..</span></div><div><spanclass="typ"style="color:rgb(102,0,102);">Scanning</span><spanclass="pln">stream</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">...</span></div><div><spanclass="typ"style="color:rgb(102,0,102);">Scanning</span><spanclass="pln">api</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">...........................</span></div><div><spanclass="typ"style="color:rgb(102,0,102);">Scanning</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">GDCatalog</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">.......................</span></div><div><spanclass="typ"style="color:rgb(102,0,102);">Scanning</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">GreenDroid</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">...........................................................</span></div><div><spanclass="typ"style="color:rgb(102,0,102);">Scanning</span><spanclass="pln">tests</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">...</span></div><div><spanclass="typ"style="color:rgb(102,0,102);">Scanning</span><spanclass="pln">filters</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">....</span></div><div><spanclass="typ"style="color:rgb(102,0,102);">Scanning</span><spanclass="pln">tests</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">.....</span></div><div><spanclass="typ"style="color:rgb(102,0,102);">Scanning</span><spanclass="pln">astrid</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">....................................................................................................................................................</span></div><div><spanclass="typ"style="color:rgb(102,0,102);">Scanning</span><spanclass="pln">simple</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">.......</span></div><div><spanclass="pln">api</span><spanclass="pun"style="color:rgb(102,102,0);">/</span><spanclass="pln">res</span><spanclass="pun"style="color:rgb(102,102,0);">/</span><spanclass="pln">values</span><spanclass="pun"style="color:rgb(102,102,0);">-</span><spanclass="pln">ca</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Error</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Locale</span><spanclass="pln">ca</span><spanclass="kwd"style="color:rgb(0,0,136);">is</span><spanclass="pln">missingtranslations</span><spanclass="kwd"style="color:rgb(0,0,136);">for</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln">sync_SPr_bgwifi_key</span><spanclass="pun"style="color:rgb(102,102,0);">,</span><spanclass="pln">sync_SPr_forget_key</span><spanclass="pun"style="color:rgb(102,102,0);">,</span><spanclass="pln">sync_SPr_interval_values</span><spanclass="pun"style="color:rgb(102,102,0);">,</span><spanclass="pln">sync_SPr_logged_in_prefix</span><spanclass="pun"style="color:rgb(102,102,0);">...</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">(</span><spanclass="lit"style="color:rgb(0,102,102);">2</span><spanclass="pln">more</span><spanclass="pun"style="color:rgb(102,102,0);">)</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="typ"style="color:rgb(102,0,102);">MissingTranslation</span><spanclass="pun"style="color:rgb(102,102,0);">]</span></div><div><spanclass="pln">astrid</span><spanclass="pun"style="color:rgb(102,102,0);">/</span><spanclass="pln">res</span><spanclass="pun"style="color:rgb(102,102,0);">/</span><spanclass="pln">values</span><spanclass="pun"style="color:rgb(102,102,0);">-</span><spanclass="pln">ca</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Error</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Locale</span><spanclass="pln">ca</span><spanclass="kwd"style="color:rgb(0,0,136);">is</span><spanclass="pln">missingtranslations</span><spanclass="kwd"style="color:rgb(0,0,136);">for</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln">DLG_cancel</span><spanclass="pun"style="color:rgb(102,102,0);">,</span><spanclass="pln">DLG_dismiss</span><spanclass="pun"style="color:rgb(102,102,0);">,</span><spanclass="pln">DLG_ok</span><spanclass="pun"style="color:rgb(102,102,0);">,</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">EPr_deactivated</span><spanclass="pun"style="color:rgb(102,102,0);">...</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">(</span><spanclass="lit"style="color:rgb(0,102,102);">117</span><spanclass="pln">more</span><spanclass="pun"style="color:rgb(102,102,0);">)</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="typ"style="color:rgb(102,0,102);">MissingTranslation</span><spanclass="pun"style="color:rgb(102,102,0);">]</span></div><div><spanclass="pln">api</span><spanclass="pun"style="color:rgb(102,102,0);">/</span><spanclass="pln">res</span><spanclass="pun"style="color:rgb(102,102,0);">/</span><spanclass="pln">values</span><spanclass="pun"style="color:rgb(102,102,0);">-</span><spanclass="pln">cs</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Error</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Locale</span><spanclass="pln">cs</span><spanclass="kwd"style="color:rgb(0,0,136);">is</span><spanclass="pln">missingtranslations</span><spanclass="kwd"style="color:rgb(0,0,136);">for</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln">sync_SPr_bgwifi_key</span><spanclass="pun"style="color:rgb(102,102,0);">,</span><spanclass="pln">sync_SPr_forget_key</span><spanclass="pun"style="color:rgb(102,102,0);">,</span><spanclass="pln">sync_SPr_interval_values</span><spanclass="pun"style="color:rgb(102,102,0);">,</span><spanclass="pln">sync_SPr_logged_in_prefix</span><spanclass="pun"style="color:rgb(102,102,0);">...</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">(</span><spanclass="lit"style="color:rgb(0,102,102);">2</span><spanclass="pln">more</span><spanclass="pun"style="color:rgb(102,102,0);">)</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="typ"style="color:rgb(102,0,102);">MissingTranslation</span><spanclass="pun"style="color:rgb(102,102,0);">]</span></div><div><spanclass="pun"style="color:rgb(102,102,0);">(</span><spanclass="pln">manylinesomitted</span><spanclass="pun"style="color:rgb(102,102,0);">)</span></div><div><spanclass="lit"style="color:rgb(0,102,102);">43</span><spanclass="pln">errors</span><spanclass="pun"style="color:rgb(102,102,0);">,</span><spanclass="pln"></span><spanclass="lit"style="color:rgb(0,102,102);">466</span><spanclass="pln">warnings</span></div><pstyle="margin-top:0px;margin-bottom:10px;padding-top:0px;padding-bottom:0px;"></p>

示例2
Window命令行
<pstyle="margin-top:0px;margin-bottom:10px;padding-top:0px;padding-bottom:0px;"></p><div><spanclass="pln">C</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln">\Documents</span><spanclass="kwd"style="color:rgb(0,0,136);">and</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Settings</span><spanclass="pln">\Administrator</span><spanclass="pun"style="color:rgb(102,102,0);">></span><spanclass="pln">lintD</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln">\workspace\Test</span>

<spanclass="typ"style="color:rgb(102,0,102);">Scanning</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Test</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">.........................................................................................................</span>
<spanclass="pun"style="color:rgb(102,102,0);">........................................................................................................................</span>
<spanclass="pun"style="color:rgb(102,102,0);">...................</span>
<spanclass="typ"style="color:rgb(102,0,102);">Scanning</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Test</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">(</span><spanclass="typ"style="color:rgb(102,0,102);">Phase</span><spanclass="pln"></span><spanclass="lit"style="color:rgb(0,102,102);">2</span><spanclass="pun"style="color:rgb(102,102,0);">):</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">......</span>
<spanclass="pln">res\layout\internet_image_demo</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">xml</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="lit"style="color:rgb(0,102,102);">9</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Warning</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">The</span><spanclass="pln">id</span><spanclass="str"style="color:rgb(0,136,0);">"button1"</span><spanclass="pln"></span><spanclass="kwd"style="color:rgb(0,0,136);">is</span><spanclass="pln"></span><spanclass="kwd"style="color:rgb(0,0,136);">not</span><spanclass="pln">referringtoanyviews</span><spanclass="kwd"style="color:rgb(0,0,136);">in</span><spanclass="pln"></span><spanclass="kwd"style="color:rgb(0,0,136);">this</span><spanclass="pln">layout</span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="typ"style="color:rgb(102,0,102);">UnknownIdI</span>
<spanclass="pln">nLayout</span><spanclass="pun"style="color:rgb(102,102,0);">]</span>
<spanclass="pln">android</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln">layout_alignLeft</span><spanclass="pun"style="color:rgb(102,102,0);">=</span><spanclass="str"style="color:rgb(0,136,0);">"@+id/button1"</span>
<spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">^</span>
<spanclass="pln">res\layout\internet_image_demo</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">xml</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="lit"style="color:rgb(0,102,102);">10</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Warning</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">The</span><spanclass="pln">id</span><spanclass="str"style="color:rgb(0,136,0);">"textView1"</span><spanclass="pln"></span><spanclass="kwd"style="color:rgb(0,0,136);">is</span><spanclass="pln"></span><spanclass="kwd"style="color:rgb(0,0,136);">not</span><spanclass="pln">referringtoanyviews</span><spanclass="kwd"style="color:rgb(0,0,136);">in</span><spanclass="pln"></span><spanclass="kwd"style="color:rgb(0,0,136);">this</span><spanclass="pln">layout</span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="typ"style="color:rgb(102,0,102);">Unknown</span>
<spanclass="typ"style="color:rgb(102,0,102);">IdInLayout</span><spanclass="pun"style="color:rgb(102,102,0);">]</span>
<spanclass="pln">android</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln">layout_below</span><spanclass="pun"style="color:rgb(102,102,0);">=</span><spanclass="str"style="color:rgb(0,136,0);">"@+id/textView1"</span>
<spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">^</span>
<spanclass="typ"style="color:rgb(102,0,102);">AndroidManifest</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">xml</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="lit"style="color:rgb(0,102,102);">52</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Warning</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Exported</span><spanclass="pln">receiverdoes</span><spanclass="kwd"style="color:rgb(0,0,136);">not</span><spanclass="pln"></span><spanclass="kwd"style="color:rgb(0,0,136);">require</span><spanclass="pln">permission</span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="typ"style="color:rgb(102,0,102);">ExportedReceiver</span><spanclass="pun"style="color:rgb(102,102,0);">]</span>
<spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);"><</span><spanclass="pln">receiverandroid</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln">name</span><spanclass="pun"style="color:rgb(102,102,0);">=</span><spanclass="str"style="color:rgb(0,136,0);">".AlarmReceiver"</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">></span>
<spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">^</span>
<spanclass="pln">res\menu\activity_main</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">xml</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Warning</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">The</span><spanclass="pln">resourceR</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">menu</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">activity_mainappearstobeunused</span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="typ"style="color:rgb(102,0,102);">UnusedResources</span><spanclass="pun"style="color:rgb(102,102,0);">]</span>
<spanclass="pln">res\drawable</span><spanclass="pun"style="color:rgb(102,102,0);">-</span><spanclass="pln">hdpi\ic_action_search</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">png</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Warning</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">The</span><spanclass="pln">resourceR</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">drawable</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">ic_action_searchappearstobeunused</span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="typ"style="color:rgb(102,0,102);">UnusedRe</span>
<spanclass="pln">sources</span><spanclass="pun"style="color:rgb(102,102,0);">]</span>
<spanclass="pln">res\values\strings</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">xml</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="lit"style="color:rgb(0,102,102);">7</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Warning</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">The</span><spanclass="pln">resourceR</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="kwd"style="color:rgb(0,0,136);">string</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">helloappearstobeunused</span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="typ"style="color:rgb(102,0,102);">UnusedResources</span><spanclass="pun"style="color:rgb(102,102,0);">]</span>
<spanclass="pun"style="color:rgb(102,102,0);"><</span><spanclass="kwd"style="color:rgb(0,0,136);">string</span><spanclass="pln">name</span><spanclass="pun"style="color:rgb(102,102,0);">=</span><spanclass="str"style="color:rgb(0,136,0);">"hello"</span><spanclass="pun"style="color:rgb(102,102,0);">>你好!</</span><spanclass="kwd"style="color:rgb(0,0,136);">string</span><spanclass="pun"style="color:rgb(102,102,0);">></span>
<spanclass="pun"style="color:rgb(102,102,0);">^</span>
<spanclass="pln">res\drawable</span><spanclass="pun"style="color:rgb(102,102,0);">-</span><spanclass="pln">mdpi</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Warning</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Missing</span><spanclass="pln">thefollowingdrawables</span><spanclass="kwd"style="color:rgb(0,0,136);">in</span><spanclass="pln">drawable</span><spanclass="pun"style="color:rgb(102,102,0);">-</span><spanclass="pln">mdpi</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln">icon</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">png</span><spanclass="pun"style="color:rgb(102,102,0);">,</span><spanclass="pln">icon2</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">png</span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="typ"style="color:rgb(102,0,102);">IconDensities</span><spanclass="pun"style="color:rgb(102,102,0);">]</span>
<spanclass="pln">res\drawable</span><spanclass="pun"style="color:rgb(102,102,0);">-</span><spanclass="pln">xhdpi</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Warning</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Missing</span><spanclass="pln">thefollowingdrawables</span><spanclass="kwd"style="color:rgb(0,0,136);">in</span><spanclass="pln">drawable</span><spanclass="pun"style="color:rgb(102,102,0);">-</span><spanclass="pln">xhdpi</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln">icon</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">png</span><spanclass="pun"style="color:rgb(102,102,0);">,</span><spanclass="pln">icon2</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">png</span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="typ"style="color:rgb(102,0,102);">IconDensities</span><spanclass="pun"style="color:rgb(102,102,0);">]</span>
<spanclass="pln">res\layout\internet_image_demo</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">xml</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="lit"style="color:rgb(0,102,102);">5</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Warning</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="typ"style="color:rgb(102,0,102);">Accessibility</span><spanclass="pun"style="color:rgb(102,102,0);">]</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Missing</span><spanclass="pln">contentDescriptionattributeonimage</span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="typ"style="color:rgb(102,0,102);">ContentDes</span>
<spanclass="pln">cription</span><spanclass="pun"style="color:rgb(102,102,0);">]</span>
<spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);"><</span><spanclass="typ"style="color:rgb(102,0,102);">ImageView</span>
<spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">^</span>
<spanclass="pln">res\layout\activity_main</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">xml</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="lit"style="color:rgb(0,102,102);">17</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Warning</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="pln">I18N</span><spanclass="pun"style="color:rgb(102,102,0);">]</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Hardcoded</span><spanclass="pln"></span><spanclass="kwd"style="color:rgb(0,0,136);">string</span><spanclass="pln"></span><spanclass="str"style="color:rgb(0,136,0);">"goHello"</span><spanclass="pun"style="color:rgb(102,102,0);">,</span><spanclass="pln">should</span><spanclass="kwd"style="color:rgb(0,0,136);">use</span><spanclass="pln"></span><spanclass="lit"style="color:rgb(0,102,102);">@string</span><spanclass="pln">resource</span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="typ"style="color:rgb(102,0,102);">HardcodedText</span>
<spanclass="pun"style="color:rgb(102,102,0);">]</span>
<spanclass="pln">android</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln">text</span><spanclass="pun"style="color:rgb(102,102,0);">=</span><spanclass="str"style="color:rgb(0,136,0);">"goHello"</span>
<spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">^</span>
<spanclass="pln">res\layout\activity_main</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">xml</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="lit"style="color:rgb(0,102,102);">23</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Warning</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="pln">I18N</span><spanclass="pun"style="color:rgb(102,102,0);">]</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Hardcoded</span><spanclass="pln"></span><spanclass="kwd"style="color:rgb(0,0,136);">string</span><spanclass="pln"></span><spanclass="str"style="color:rgb(0,136,0);">"打印所有任务栈信息"</span><spanclass="pun"style="color:rgb(102,102,0);">,</span><spanclass="pln">should</span><spanclass="kwd"style="color:rgb(0,0,136);">use</span><spanclass="pln"></span><spanclass="lit"style="color:rgb(0,102,102);">@string</span><spanclass="pln">resource</span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="typ"style="color:rgb(102,0,102);">Har</span>
<spanclass="pln">dcodedText</span><spanclass="pun"style="color:rgb(102,102,0);">]</span>
<spanclass="pln">android</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln">text</span><spanclass="pun"style="color:rgb(102,102,0);">=</span><spanclass="str"style="color:rgb(0,136,0);">"打印所有任务栈信息"</span>
<spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">^</span>
<spanclass="pln">res\layout\activity_main</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">xml</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="lit"style="color:rgb(0,102,102);">29</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Warning</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="pln">I18N</span><spanclass="pun"style="color:rgb(102,102,0);">]</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Hardcoded</span><spanclass="pln"></span><spanclass="kwd"style="color:rgb(0,0,136);">string</span><spanclass="pln"></span><spanclass="str"style="color:rgb(0,136,0);">"打印所有服务信息"</span><spanclass="pun"style="color:rgb(102,102,0);">,</span><spanclass="pln">should</span><spanclass="kwd"style="color:rgb(0,0,136);">use</span><spanclass="pln"></span><spanclass="lit"style="color:rgb(0,102,102);">@string</span><spanclass="pln">resource</span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="typ"style="color:rgb(102,0,102);">Hardc</span>
<spanclass="pln">odedText</span><spanclass="pun"style="color:rgb(102,102,0);">]</span>
<spanclass="pln">android</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln">text</span><spanclass="pun"style="color:rgb(102,102,0);">=</span><spanclass="str"style="color:rgb(0,136,0);">"打印所有服务信息"</span>
<spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">^</span>
<spanclass="pln">res\layout\activity_main</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">xml</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="lit"style="color:rgb(0,102,102);">35</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Warning</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="pln">I18N</span><spanclass="pun"style="color:rgb(102,102,0);">]</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Hardcoded</span><spanclass="pln"></span><spanclass="kwd"style="color:rgb(0,0,136);">string</span><spanclass="pln"></span><spanclass="str"style="color:rgb(0,136,0);">"打印进程信息"</span><spanclass="pun"style="color:rgb(102,102,0);">,</span><spanclass="pln">should</span><spanclass="kwd"style="color:rgb(0,0,136);">use</span><spanclass="pln"></span><spanclass="lit"style="color:rgb(0,102,102);">@string</span><spanclass="pln">resource</span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="typ"style="color:rgb(102,0,102);">Hardcoded</span>
<spanclass="typ"style="color:rgb(102,0,102);">Text</span><spanclass="pun"style="color:rgb(102,102,0);">]</span>
<spanclass="pln">android</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln">text</span><spanclass="pun"style="color:rgb(102,102,0);">=</span><spanclass="str"style="color:rgb(0,136,0);">"打印进程信息"</span>
<spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">^</span>
<spanclass="pln">res\layout\hello</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">xml</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="lit"style="color:rgb(0,102,102);">23</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Warning</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="pln">I18N</span><spanclass="pun"style="color:rgb(102,102,0);">]</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Hardcoded</span><spanclass="pln"></span><spanclass="kwd"style="color:rgb(0,0,136);">string</span><spanclass="pln"></span><spanclass="str"style="color:rgb(0,136,0);">"pleaseclickme"</span><spanclass="pun"style="color:rgb(102,102,0);">,</span><spanclass="pln">should</span><spanclass="kwd"style="color:rgb(0,0,136);">use</span><spanclass="pln"></span><spanclass="lit"style="color:rgb(0,102,102);">@string</span><spanclass="pln">resource</span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="typ"style="color:rgb(102,0,102);">HardcodedText</span><spanclass="pun"style="color:rgb(102,102,0);">]</span>

<spanclass="pln">android</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln">text</span><spanclass="pun"style="color:rgb(102,102,0);">=</span><spanclass="str"style="color:rgb(0,136,0);">"pleaseclickme"</span>
<spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">^</span>
<spanclass="lit"style="color:rgb(0,102,102);">0</span><spanclass="pln">errors</span><spanclass="pun"style="color:rgb(102,102,0);">,</span><spanclass="pln"></span><spanclass="lit"style="color:rgb(0,102,102);">14</span><spanclass="pln">warnings</span>
</div><div>
</div><pstyle="margin-top:0px;margin-bottom:10px;padding-top:0px;padding-bottom:0px;"></p>

2.2、DisablingChecks(--disable
在执行lint命令时可以通过--disable选项要指定关闭的检查规则项。--disable选项后接要关闭的检查规则项的id(比如示例3中的MissingTranslation)或检查规则项的类别(比如示例3中的Usability:Icons和示例4的Internationalization)。
关于lint检查项的id和类别(Category)等信息请参考《Android
Lint检查规则列表》
示例3
<pstyle="margin-top:0px;margin-bottom:10px;padding-top:0px;padding-bottom:0px;"><spanclass="pln">$lint</span><spanclass="pun"style="color:rgb(102,102,0);">--</span><spanclass="pln">disable</span><spanclass="typ"style="color:rgb(102,0,102);">MissingTranslation</span><spanclass="pun"style="color:rgb(102,102,0);">,</span><spanclass="typ"style="color:rgb(102,0,102);">UnusedIds</span><spanclass="pun"style="color:rgb(102,102,0);">,</span><spanclass="typ"style="color:rgb(102,0,102);">Usability</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="typ"style="color:rgb(102,0,102);">Icons</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">/</span><spanclass="pln">src</span><spanclass="pun"style="color:rgb(102,102,0);">/</span><spanclass="pln">astrid</span><spanclass="pun"style="color:rgb(102,102,0);">/</span></p>

示例4
<pstyle="margin-top:0px;margin-bottom:10px;padding-top:0px;padding-bottom:0px;"></p><div><spanclass="pln">C</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln">\Documents</span><spanclass="kwd"style="color:rgb(0,0,136);">and</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Settings</span><spanclass="pln">\Administrator</span><spanclass="pun"style="color:rgb(102,102,0);">></span><spanclass="pln">lint</span><spanclass="pun"style="color:rgb(102,102,0);">--</span><spanclass="pln">disable</span><spanclass="typ"style="color:rgb(102,0,102);">Internationalization</span><spanclass="pln">D</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln">\workspace\Test</span></div><div>
</div><div><spanclass="typ"style="color:rgb(102,0,102);">Scanning</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Test</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">.........................................................................................................</span></div><div><spanclass="pun"style="color:rgb(102,102,0);">........................................................................................................................</span></div><div><spanclass="pun"style="color:rgb(102,102,0);">...................</span></div><div><spanclass="typ"style="color:rgb(102,0,102);">Scanning</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Test</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">(</span><spanclass="typ"style="color:rgb(102,0,102);">Phase</span><spanclass="pln"></span><spanclass="lit"style="color:rgb(0,102,102);">2</span><spanclass="pun"style="color:rgb(102,102,0);">):</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">......</span></div><div><spanclass="pln">res\layout\internet_image_demo</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">xml</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="lit"style="color:rgb(0,102,102);">9</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Warning</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">The</span><spanclass="pln">id</span><spanclass="str"style="color:rgb(0,136,0);">"button1"</span><spanclass="pln"></span><spanclass="kwd"style="color:rgb(0,0,136);">is</span><spanclass="pln"></span><spanclass="kwd"style="color:rgb(0,0,136);">not</span><spanclass="pln">referringtoanyviews</span><spanclass="kwd"style="color:rgb(0,0,136);">in</span><spanclass="pln"></span><spanclass="kwd"style="color:rgb(0,0,136);">this</span><spanclass="pln">layout</span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="typ"style="color:rgb(102,0,102);">UnknownIdI</span></div><div><spanclass="typ"style="color:rgb(102,0,102);">nLayout</span><spanclass="pun"style="color:rgb(102,102,0);">]</span></div><div><spanclass="pln">    android</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln">layout_alignLeft</span><spanclass="pun"style="color:rgb(102,102,0);">=</span><spanclass="str"style="color:rgb(0,136,0);">"@+id/button1"</span></div><div><spanclass="pln">    </span><spanclass="pun"style="color:rgb(102,102,0);">^</span></div><div><spanclass="pln">res\layout\internet_image_demo</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">xml</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="lit"style="color:rgb(0,102,102);">10</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Warning</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">The</span><spanclass="pln">id</span><spanclass="str"style="color:rgb(0,136,0);">"textView1"</span><spanclass="pln"></span><spanclass="kwd"style="color:rgb(0,0,136);">is</span><spanclass="pln"></span><spanclass="kwd"style="color:rgb(0,0,136);">not</span><spanclass="pln">referringtoanyviews</span><spanclass="kwd"style="color:rgb(0,0,136);">in</span><spanclass="pln"></span><spanclass="kwd"style="color:rgb(0,0,136);">this</span><spanclass="pln">layout</span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="typ"style="color:rgb(102,0,102);">Unknown</span></div><div><spanclass="typ"style="color:rgb(102,0,102);">IdInLayout</span><spanclass="pun"style="color:rgb(102,102,0);">]</span></div><div><spanclass="pln">    android</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln">layout_below</span><spanclass="pun"style="color:rgb(102,102,0);">=</span><spanclass="str"style="color:rgb(0,136,0);">"@+id/textView1"</span></div><div><spanclass="pln">    </span><spanclass="pun"style="color:rgb(102,102,0);">^</span></div><div><spanclass="typ"style="color:rgb(102,0,102);">AndroidManifest</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">xml</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="lit"style="color:rgb(0,102,102);">52</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Warning</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Exported</span><spanclass="pln">receiverdoes</span><spanclass="kwd"style="color:rgb(0,0,136);">not</span><spanclass="pln"></span><spanclass="kwd"style="color:rgb(0,0,136);">require</span><spanclass="pln">permission</span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="typ"style="color:rgb(102,0,102);">ExportedReceiver</span><spanclass="pun"style="color:rgb(102,102,0);">]</span></div><div><spanclass="pln">    </span><spanclass="pun"style="color:rgb(102,102,0);"><</span><spanclass="pln">receiverandroid</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln">name</span><spanclass="pun"style="color:rgb(102,102,0);">=</span><spanclass="str"style="color:rgb(0,136,0);">".AlarmReceiver"</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">></span></div><div><spanclass="pln">    </span><spanclass="pun"style="color:rgb(102,102,0);">^</span></div><div><spanclass="pln">res\menu\activity_main</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">xml</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Warning</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">The</span><spanclass="pln">resourceR</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">menu</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">activity_mainappearstobeunused</span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="typ"style="color:rgb(102,0,102);">UnusedResources</span><spanclass="pun"style="color:rgb(102,102,0);">]</span></div><div><spanclass="pln">res\drawable</span><spanclass="pun"style="color:rgb(102,102,0);">-</span><spanclass="pln">hdpi\ic_action_search</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">png</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Warning</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">The</span><spanclass="pln">resourceR</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">drawable</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">ic_action_searchappearstobeunused</span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="typ"style="color:rgb(102,0,102);">UnusedRe</span></div><div><spanclass="typ"style="color:rgb(102,0,102);">sources</span><spanclass="pun"style="color:rgb(102,102,0);">]</span></div><div><spanclass="pln">res\values\strings</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">xml</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="lit"style="color:rgb(0,102,102);">7</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Warning</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">The</span><spanclass="pln">resourceR</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="kwd"style="color:rgb(0,0,136);">string</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">helloappearstobeunused</span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="typ"style="color:rgb(102,0,102);">UnusedResources</span><spanclass="pun"style="color:rgb(102,102,0);">]</span></div><div><spanclass="pun"style="color:rgb(102,102,0);"><</span><spanclass="kwd"style="color:rgb(0,0,136);">string</span><spanclass="pln">name</span><spanclass="pun"style="color:rgb(102,102,0);">=</span><spanclass="str"style="color:rgb(0,136,0);">"hello"</span><spanclass="pun"style="color:rgb(102,102,0);">>你好!</</span><spanclass="kwd"style="color:rgb(0,0,136);">string</span><spanclass="pun"style="color:rgb(102,102,0);">></span></div><div><spanclass="pun"style="color:rgb(102,102,0);">^</span></div><div><spanclass="pln">res\drawable</span><spanclass="pun"style="color:rgb(102,102,0);">-</span><spanclass="pln">mdpi</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Warning</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Missing</span><spanclass="pln">thefollowingdrawables</span><spanclass="kwd"style="color:rgb(0,0,136);">in</span><spanclass="pln">drawable</span><spanclass="pun"style="color:rgb(102,102,0);">-</span><spanclass="pln">mdpi</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln">icon</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">png</span><spanclass="pun"style="color:rgb(102,102,0);">,</span><spanclass="pln">icon2</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">png</span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="typ"style="color:rgb(102,0,102);">IconDensities</span><spanclass="pun"style="color:rgb(102,102,0);">]</span></div><div><spanclass="pln">res\drawable</span><spanclass="pun"style="color:rgb(102,102,0);">-</span><spanclass="pln">xhdpi</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Warning</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Missing</span><spanclass="pln">thefollowingdrawables</span><spanclass="kwd"style="color:rgb(0,0,136);">in</span><spanclass="pln">drawable</span><spanclass="pun"style="color:rgb(102,102,0);">-</span><spanclass="pln">xhdpi</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln">icon</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">png</span><spanclass="pun"style="color:rgb(102,102,0);">,</span><spanclass="pln">icon2</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">png</span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="typ"style="color:rgb(102,0,102);">IconDensities</span><spanclass="pun"style="color:rgb(102,102,0);">]</span></div><div><spanclass="pln">res\layout\internet_image_demo</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">xml</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="lit"style="color:rgb(0,102,102);">5</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Warning</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="typ"style="color:rgb(102,0,102);">Accessibility</span><spanclass="pun"style="color:rgb(102,102,0);">]</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Missing</span><spanclass="pln">contentDescriptionattributeonimage</span><spanclass="pun"style="color:rgb(102,102,0);">[</span><spanclass="typ"style="color:rgb(102,0,102);">ContentDes</span></div><div><spanclass="typ"style="color:rgb(102,0,102);">cription</span><spanclass="pun"style="color:rgb(102,102,0);">]</span></div><div><spanclass="pln">  </span><spanclass="pun"style="color:rgb(102,102,0);"><</span><spanclass="typ"style="color:rgb(102,0,102);">ImageView</span></div><div><spanclass="pln">  </span><spanclass="pun"style="color:rgb(102,102,0);">^</span></div><div><spanclass="lit"style="color:rgb(0,102,102);">0</span><spanclass="pln">errors</span><spanclass="pun"style="color:rgb(102,102,0);">,</span><spanclass="pln"></span><spanclass="lit"style="color:rgb(0,102,102);">9</span><spanclass="pln">warnings</span></div><pstyle="margin-top:0px;margin-bottom:10px;padding-top:0px;padding-bottom:0px;"></p>

2.3、enablingChecks(--enable和--check)
lint的有些检查项默认是关闭的(disable),在执行lint命令时可以通过--enable选项开启它。-enable选项后接要开启的检查规则项的id(比如示例5中的MissingTranslation)或检查规则项的类别(示例5中的Usability:Icons)
示例5
<pstyle="margin-top:0px;margin-bottom:10px;padding-top:0px;padding-bottom:0px;"><spanclass="pln">$lint</span><spanclass="pun"style="color:rgb(102,102,0);">--</span><spanclass="pln">disable</span><spanclass="typ"style="color:rgb(102,0,102);">MissingTranslation</span><spanclass="pun"style="color:rgb(102,102,0);">,</span><spanclass="typ"style="color:rgb(102,0,102);">UnusedIds</span><spanclass="pun"style="color:rgb(102,102,0);">,</span><spanclass="typ"style="color:rgb(102,0,102);">Usability</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="typ"style="color:rgb(102,0,102);">Icons</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">/</span><spanclass="pln">src</span><spanclass="pun"style="color:rgb(102,102,0);">/</span><spanclass="pln">astrid</span><spanclass="pun"style="color:rgb(102,102,0);">/</span></p>

在执行lint命令时可以通过--check选项来指定只进行某些检查。-check选项后接要开启的检查规则项的id(比如示例6中的MissingPrefix)
示例6
$lint--checkMissingPrefix/src/astrid/
2.4、检查项类别和检查项id
可以通过lint的--list选项来得到检查项类别和检查项id.
比如:
$
lint
--list


Validissuecategories:


Correctness


Security


Performance


Usability


Usability:Icons


Accessibility


Internationalization


Validissueid's:


"ContentDescription":EnsuresthatimagewidgetsprovideacontentDescription


"DuplicateIds":Checksforduplicateidswithinasinglelayout


"StateListReachable":Looksforunreachablestatesina<selector>


"InefficientWeight":LooksforinefficientweightdeclarationsinLinearLayouts


"ScrollViewSize":ChecksthatScrollViewsusewrap_contentinscrollingdimension


"MergeRootFrame":Checkswhetheraroot<FrameLayout>canbereplacedwitha<merge>tag


...


可以通过lint的--show选项后跟检查项id来得到一个检查项的详细说明.
比如:
$lint--showMissingPrefix


MissingPrefix


-------------


Summary:DetectXMLattributesnotusingtheAndroidnamespace


Priority:8/10


Severity:Warning


Category:Correctness


MostAndroidviewshaveattributesintheAndroidnamespace.When


referencingtheseattributesyou*must*includethenamespaceprefix,


oryourattributewillbeinterpretedbyaaptasjustacustom


attribute.

当然你也可以通过《Android
Lint检查规则列表》来查阅检查项的id等详细信息
2.4、html形式的report
在lint中,我们可以通过--html选项接文件路径的形式把代码扫描结果以html文件的形式进行输出。
示例6
<pstyle="margin-top:0px;margin-bottom:10px;padding-top:0px;padding-bottom:0px;"></p><div><spanclass="pln">C</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln">\Documents</span><spanclass="kwd"style="color:rgb(0,0,136);">and</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Settings</span><spanclass="pln">\Administrator</span><spanclass="pun"style="color:rgb(102,102,0);">></span><spanclass="pln">lint</span><spanclass="pun"style="color:rgb(102,102,0);">--</span><spanclass="pln">htmlD</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln">\workspace\Test\report</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">htm</span></div><div><spanclass="pln">lD</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln">\workspace\Test</span></div><div>
</div><div><spanclass="typ"style="color:rgb(102,0,102);">Scanning</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Test</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">.................................................................</span></div><div><spanclass="pun"style="color:rgb(102,102,0);">................................................................................</span></div><div><spanclass="pun"style="color:rgb(102,102,0);">................................................................................</span></div><div><spanclass="pun"style="color:rgb(102,102,0);">...................</span></div><div><spanclass="typ"style="color:rgb(102,0,102);">Scanning</span><spanclass="pln"></span><spanclass="typ"style="color:rgb(102,0,102);">Test</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">(</span><spanclass="typ"style="color:rgb(102,0,102);">Phase</span><spanclass="pln"></span><spanclass="lit"style="color:rgb(0,102,102);">2</span><spanclass="pun"style="color:rgb(102,102,0);">):</span><spanclass="pln"></span><spanclass="pun"style="color:rgb(102,102,0);">......</span></div><div><spanclass="typ"style="color:rgb(102,0,102);">Wrote</span><spanclass="pln">HTMLreporttoD</span><spanclass="pun"style="color:rgb(102,102,0);">:</span><spanclass="pln">\workspace\Test\report</span><spanclass="pun"style="color:rgb(102,102,0);">.</span><spanclass="pln">html</span></div><pstyle="margin-top:0px;margin-bottom:10px;padding-top:0px;padding-bottom:0px;"></p>

html输出报告如图2所示
图2



Bydefault,linkstosourcefileswilljustuselocalfile://pathresources.YoucanremaptheURLstoadifferentprefixwiththe--urloption.
Forexample:

$lint--html/tmp/report.html--url/src/MyProj=http://buildserver/src/MyProj


2.5、命令行帮助
在lint中,你可以使用--help选项来得到lint命令的一些帮助信息。
示例7
lint--help
三、Eclispe中使用Lint
从ADT16开始,lint就集成到了ADT中。该它在lint命令行的基础上新增了以下功能

Automaticfixesformanywarnings自动修正大量警告

Lintgetsrunautomaticallyonvariouseditingoperations当编辑操作完成后,立即自动运行

Abilitytosuppresstypesoferrorsaswellasspecificinstancesofanerror可以suppress(忽略)一种类型的erro,也可以suppress(忽略)特定的一个erro

Abilitytoconfigureissueseverities能够配置issue(问题)的severities(严重性)

Jumpdirectlytotheproblemsourcefromthelintview通过lint视图能直接跳转到其问题对应的源码处

3.1、AutomaticLint
Lint将在以下情况下自动运行:

ExportanAPK.Inthiscaseitrunslintinaspecialmodewhichonlylooksforfatalerrors(whichisfaster)andabortstheexportifanyfatalerrorsarefound.YoucanturnoffthisintheLintOptions.在导出APK文件的时候,lint会做快速的扫描,以寻找fatal的错误。如果发现有fatal的错误,导出APK的操作将被迫终止

EditandSaveandXMLfile,suchasalayoutfileoramanifestfile.Inthiscase,allthefile-scopechecksthatapplytothegivenfilearerunandeditormarkersareaddedforanyissuesfound.编辑和保存XML文件,lint也会自动扫描这些文件。另外从ADT20开始,对于java源码文件在编辑和保存后,lint也会对他们进行扫描。
Usethelayouteditor.AftereveryUIoperation,file-scope
checks(suchasthevariouslayoutoptrules)arerunonthelayoutfileandtheresultsareshowninaspeciallintwindow(whichcanbeopenedfromtheerrormarkerwhichshowsinthetoprightcornerofthelayouteditorwhenerrorsarefound).对于使用layout
editor来操作布局文件时,在每个UI操作后,lint也会自动扫描该布局文件。

3.2、LintWindow
在Eclipse中,你可以通过两种方式来手动进行lint的扫描:
一种方式是通过工具栏,双击图3-1中红色箭头指向的按钮,然后出现图3-2所示的下拉框,在该下拉选择要进行lint扫描的工程
图3-1



图3-2



一种方式是选中一个Android工程,单击右键,在下拉菜单中选择“Androidtools”->"Runlint:checkcommonerro",如图3-3所示
图3-3



运行lint之后,你将看到如图3-4图3-5所示的lint窗口
图3-4



图3-5



默认情况下,同一个类型的issue都是折叠成一块的,图3-4和图3-5是我手动展开的。
lint窗口的工具栏上有一些按钮,如图3-6所示
图3-6



它们的意义分别如下


Refresh,
whichre-runsthecurrentanalysisonthesameprojects


Fix,
whichautomaticallyfixestheissue(thisappliestoissueswhereaquickfixisavailable)


Suppress
thisissuewithanattributeorannotation


Ignore
inthisfile(savessuppressinformationinlint.xml)


Ignore
inthisproject(ditto)


Always
ignore


Delete
thislintmarker


Delete
alllintmarkers


ExpandAll,


Collapse
All


Configure
Columns用于设置在lintWindow中对于检查出的issue的哪些项显示哪些项不显示,如图3-7所示


Edit
OptionsEditOptions点击该按钮会弹出Lint
Preferencedialog,如图1或图3-8在里面你可以定制默认/全局的AndroidLint的基本检查规则,在其中可以设置所有项目默认的lint检查规则的检查级别,把检查级别(Severity)设为”ignore“,其实就是忽略(suppress)该检查规则

ConfigureColumnsletsyoueditwhichcolumnsarevisible.Thereareseveralnewcolumnsyoucandisplay,suchasCategory,Priority,etc,andyou
canclickoncolumnheaderstosortthedisplaybythegivencolumn.There'salsoanew"Location"column,shownbydefault,whichincorporatesseveraldifferentpiecesofinformation:thefilename,thelinenumber,theparentfoldername(usefulwhenlooking
attranslationorconfigurationissues),andtheprojectname:
ConfigureColumns用于设置在lintWindow中对于检查出的issue的哪些项显示哪些项不显示,如图3-7所示
图3-7



TheEditOptionsactionsbringsuptheLintPreferencedialog,whichhasalsobeenimproved.Youcannowsearchthroughtheoptionsbyfilter:
点击EditOptions按钮会弹出处理LintPreferencedialog,在里面可以定制默认/全局的AndroidLint的基本检查规则
图3-8



3.3、QuickFixes
Manylintwarningshaveautomaticfixes.Forexample,thevariouslayoutoptfixessuggestreplacements(e.g.replacewrap_contentwith0dp).

Fromthelintview(如图3-6所示),clickthelightbulb


toinvokeafix.

Fromthelayouteditorwarningsummary,clicktheFixbuttontofix.

AndfromtheXMLsourceeditor,invoketheQuickFix(Ctrl-1orCommand-1)andpickthequickfixassociatedwiththewarning.

3.4、SuppressingErrors(检查规则的基本定制)
Fromtheeditorquickfixmenu(如图3-9所示),
youcanalsochooseto

Ignorethewarninginthisfileonly

Ignorethewarninginthisproject

Ignorethewarning,period.

Ignorewarningsusingannotationsorattributes,asexplainedhere.

图3-9



(Ifyoudonotseethelintfixactioninthequickfixlist,seetheKnownBugssection)

Thesechoicesarestoredinafilenamed
lint.xml
in
theproject,whichisalsoreadbythecommandlinetool.Thus,youcanignorewarningsfromtheUI,andcheckinthe
lint.xml
file
withyoursourceprojects,andothersrunninglintwillnotseewarningsyouhaveignored(presumablybecausetheyhavebeenmanuallyverified).
你的选择在被存在Android工程目录下的
lint.xml
文件中
关于此的详细内容请参考《AndroidLint检查规则的定制(基本篇)
结束!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: