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
IfyouhavetheSDK
onyourpath,youcaninvokeitas“
projectdirectory.Youcanalsopointtoarandomdirectory,which(ifitisnotanAndroidproject)willbesearchedrecursivelyandallprojectsunderthatdirectorywillbechecked.(Andyoucanalsospecifymultipleprojectsseparatedbyspaces)
在AndroidSDK的tools下有个叫lint.bat的文件,它就是lint的命令行工具。
lint命令后可以带一个或多个参数,参数之间用空格隔开,参数表示的是需要使用lint进行扫描的Android项目的目录。
示例1
linux命令行
示例2
Window命令行
2.2、DisablingChecks(--disable)
在执行lint命令时可以通过--disable选项要指定关闭的检查规则项。--disable选项后接要关闭的检查规则项的id(比如示例3中的MissingTranslation)或检查规则项的类别(比如示例3中的Usability:Icons和示例4的Internationalization)。
关于lint检查项的id和类别(Category)等信息请参考《Android
Lint检查规则列表》
示例3
示例4
2.3、enablingChecks(--enable和--check)
lint的有些检查项默认是关闭的(disable),在执行lint命令时可以通过--enable选项开启它。-enable选项后接要开启的检查规则项的id(比如示例5中的MissingTranslation)或检查规则项的类别(示例5中的Usability:Icons)
示例5
在执行lint命令时可以通过--check选项来指定只进行某些检查。-check选项后接要开启的检查规则项的id(比如示例6中的MissingPrefix)
示例6
$lint--checkMissingPrefix/src/astrid/
2.4、检查项类别和检查项id
可以通过lint的--list选项来得到检查项类别和检查项id.
比如:
可以通过lint的--show选项后跟检查项id来得到一个检查项的详细说明.
比如:
当然你也可以通过《Android
Lint检查规则列表》来查阅检查项的id等详细信息
2.4、html形式的report
在lint中,我们可以通过--html选项接文件路径的形式把代码扫描结果以html文件的形式进行输出。
示例6
html输出报告如图2所示
图2
Bydefault,linkstosourcefileswilljustuselocalfile://pathresources.YoucanremaptheURLstoadifferentprefixwiththe--urloption.
Forexample:
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
theproject,whichisalsoreadbythecommandlinetool.Thus,youcanignorewarningsfromtheUI,andcheckinthe
withyoursourceprojects,andothersrunninglintwillnotseewarningsyouhaveignored(presumablybecausetheyhavebeenmanuallyverified).
你的选择在被存在Android工程目录下的
关于此的详细内容请参考《AndroidLint检查规则的定制(基本篇)》
结束!
参照文章:
一、简介
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的检查规则做些简单的定制,请参考《
如果你想对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,asexplained
图3-9
(Ifyoudonotseethelintfixactioninthequickfixlist,seetheKnownBugssection)
Thesechoicesarestoredinafilenamed
lint.xmlin
theproject,whichisalsoreadbythecommandlinetool.Thus,youcanignorewarningsfromtheUI,andcheckinthe
lint.xmlfile
withyoursourceprojects,andothersrunninglintwillnotseewarningsyouhaveignored(presumablybecausetheyhavebeenmanuallyverified).
你的选择在被存在Android工程目录下的
lint.xml文件中
关于此的详细内容请参考《
结束!
相关文章推荐
- Android LayoutInflater原理分析(一)
- Android的数据持久化存储
- Android代码静态检查工具---android lint
- android 中popupwindow 和类似360悬浮小球
- Android ScrollView
- Android之SimpleAdapter
- Android: 在 TextView 里使用删除线
- Android中实现两次点击返回键退出本程序
- Android Handler加massage
- android开发Fragment not attached to Activity异常解决
- Android内存泄漏检测-LeakCanary
- Spinner 的 点击问题
- Android开发——Intent中的各种FLAG
- Android总结篇系列:Android Intent
- Android Service
- Android总结篇系列:Android广播机制
- 使用AndroidStudio一分钟实现Navigation Drawer 导航抽屉效果
- Android取消EditText自动获取焦点默认行为
- 五种控制Android应用的权限的方法
- Android启动外部Activity时必须添加的Flag