转自:http://blog.csdn.net/thl789/article/details/8037473
Android-Lint是SDK Tools 16 (ADT 16)之后才引入的工具,通过代码检查,可发现潜在的问题,并能对Android程序进行优化处理。Android-Lint提供了命令行方式执行,还可与IDE(如Eclipse)集成,并提供了html形式的输出报告。Android-Lint可以方便的与项目中的其他自动系统(配置/ Build / 测试等)集成。
Android-Lint相关的文章:
Android-Lint的简述:Lint检查哪些问题;如何使用;有哪些选项;与其他系统集成。
对Android-Lint发现的问题进行处理。可定制项目中采用的规则。
Android SDK Tools / ADT 20.0.3中所支持的默认检查的所有问题。
当然,最关键最权威的还是应该看官方网站:http://tools.android.com/tips/lint
一、Android-Lint检查的潜在问题
1.1问题描述-- Issue
Android-Lint所要检查的问题以Issue来描述。
Issue分9类(Category):Correctness/ Correctness: Messages / Security / Performance / Usability: Typography /Usability: Icons / Usability / Accessibility / Internationalization。
Issue以一个文本短语来作为id,对Issue的定制等操作都是基于id的。
Issue以Severity来标识该Issue的危害程度:Fatal / Error / Warning/ Information / Ignore。对Issue的忽略操作其实也就是降低它的Severity为Ignore。
1.2 检查的潜在问题
Android-Lint所检查的潜在问题,可以通过命令行$lint --show来获得所要扫描问题的详细列表。
下面简要列举Android-Lint所检查的常见问题:
- 1. Correctness
- 1) DuplicatedIds
- Layout中id应该唯一
- 2) NewApi
- 代码中使用的某些API高于Manifest中的Min SDK
- 3) InconsistentArrays
- 字符串国际化中,同一名字的的String-Array对应的item值不相同
- 4) Registered
- Activity/Service/ContentProvider没有通过AndroidManifest注册
- 5) Deprecated
- 使用已经废弃的API
- 6) PxUsage
- 避免使用px,使用dp
- 2. Correctness:Messeges
- 1) MissingTranslation
- 字符串国际化不完全
- 2) ExtraTranslation
- 国际化的字符串,在默认位置(defaultlocale),没有定义
- 3. Security
- 1) SetJavaScriptEnabled
- 不确定你的程序中确实需要JavaScript就不要执行SetJavaScriptEnabled。
- 2)ExportedContentProvider/ExportedReceiver/ExportedService/ExportedActivity
- ContentProvider/Receiver/Service/Activity的exported为true时,设置一个Permission,
- 让使用者获取了Permission才能使用。
- 3) HardcodedDebugMode
- 不要在manifest中设置android:debuggable。
- 设置它,编译的任何版本都要采用指定的debug模式。不设置,编译Eng版本采用debug模式;
- 编译User版本采用release模式。
- 4. Performance
- 1) DrawAllocation
- 避免在绘制或者解析布局(draw/layout)时分配对象。E.g.,Ondraw()中实例化Paint对象。
- 2) ObsoleteLayoutParam
- Layout中无用的参数。
- 3) UseCompoundDrawables
- 可优化的布局:如包含一个Imageview和一个TextView的线性布局,可被采用CompoundDrawable的TextView代替。
- 4) UseSparseArrays
- 尽量用Android的SparseArray代替Hashmap
- 5) DisableBaselineAlignment
- 如果LinearLayout被用于嵌套的layout空间计算,它的android:baselineAligned属性应该设置成false,
- 以加速layout计算。
- 6) FloatMath
- 使用FloatMath代替Math。
- 7) NestedWeights
- 避免嵌套weight,那将拖累执行效率
- 8) UnusedResources/UnusedIds
- 未被使用的资源会是程序变大,并且编译速度降低。
- 9) Overdraw
- 如果为RootView指定一个背景Drawable,会先用Theme的背景绘制一遍,然后才用指定的背景,
- 这就是所谓的“Overdraw”。
- 可以设置theme的background为null来避免。
- 10) UselessLeaf/UselessParent
- View或view的父亲没有用
- 5. Usability:Typography
- 1) TypographyDashes
- 特殊字符需用编码代替:“–”需要用“–”;“—”需要用“—”
- 2) TypographyEllipsis
- 特殊字符需用编码代替:“…”需要用“…”
- 3) TypographyOther
- 问题:“(c)”需要用“©”
- 6. Usability:Icons
- 1) IconNoDpi
- Icon在nodpi和指定dpi的目录下都出现。
- 2) GifUsage
- Image不要用GIF,最好用PNG,可以用JPG。
- 7. Usability
- 1) BackButton
- Android中不要设计有Back的按钮,Android中一般有Back的硬按键。
- 2) ButtonCase
- Button的“Ok”/“Cancel”显示大小写一定,不要全大写或全小写。有标准的资源的字符串,不要自己再定义
- ,而要用系统定义的:@android:string/ok和@android:string/cancel
- 8. Accessibility
- 1) ContentDescription
- ImageView和ImageButton应该提供contentDescription
- 9. Internationalization
- 1) HardcodeText
- 硬编码的字符串应该在资源里定义
- 2) EnforceUTF8
- 所有XML资源文件都应该以UTF-8编码
- ...
二、执行Android-Lint
1.1 Eclipse中执行
Eclipse中的Runs Android Lint的按钮。
点击它可执行对所有当前Workspace中的Android项目执行Android Lint;也可以点击它右边的下箭头,选择对某一个Android项目执行Android Lint。
执行Lint检查之后,检查的结果在Eclipse的Lint Warnings View里:
可以在这里解决问题或者定制忽略掉这些问题。
1.2 命令行执行
Lint的命令行指令在AndroidSDK Tools中,<android-sdk-root>\tools\下有lint.bat这个批处理文件。
执行>lint<dest>可对<dest>中的所有Android项目进行递归检查。
三、Android-Lint选项
Android-Lint在命令行下,提供了写参数选项,提供定制。
3.1 issue列表
- lint --show
- lint --list
通过show和list可以查看所有支持要检测的Issue列表:show显示详细的issue信息;list只是issue的id和summary的列表。
3.2 disable/enable/check issue
- lint --disable <list>
- lint --enable <list>
- lint --check <list>
Android-Lint所支持要检测的Issue列表,默认有检查(Severity为非Ignore)和忽略(Severity为Ignore)之分。
可以用disable不检查指定<list>中默认要检查的id或category;用enable检查指定<list>中默认忽略的id或category;用check只检查指定<list>中的id或category。
注意:
[1] disable/enable是在default列表的基础上,disable/enable给定列表里的;check是只检查列表里的。
[2] <list>是issue id或category列表,用逗号隔开。
3.3 html输出
- lint --html <filename>
- lint --html <filename> --url filepath=url
Android-Lint可以通过html选项指定本次检查的结果输出。
生成的html文件中,还会引用别的文件,可以通过url参数替换其中的地址,使其指向公共访问的地方。
3.4 指定全局配置文件
- lint --config <filename>
虽然disable/enable/check选项可以改变本次检查的问题行为,但是下次还要再次指定。可以通过config选项指定默认的全局配置文件。
注意:如果项目中已经有lint.xml文件,对于某条issue的检查来说,1先用项目中lint.xml的规则,然后是2config指定的规则,最后才是3系统默认的规则。
3.5 其他选项
- lint --help
Android-Lint还有很多其他选项,可以通过lint --help查看。
四、与其他系统集成
Android-Lint提供命令行和IDE集成方式。IDE可以极大提升个体单兵作战能力;而命令行则对团队作战至关重要。如果一个工具要被用于自动系统中,命令行执行模式是否支持是一个重要的指标。
Android-Lint已经完全具备,可以与现有的配置系统,自动Build系统以及自动测试系统集成:
- 配置系统中有资源加入或更改后;(触发的时机也可以是Daily Build/ Weekly Build / etc.)
- 触发自动Build系统做Build;
- Build完成之后,启动Android-Lint系统执行Lint做检查;
Lint检查的结果以html报告的形式连同自动测试结果一起作为判断这个版本质量的重要指标。
相关推荐
**正文** 在软件开发过程中,静态代码分析是一种重要的质量保证手段,它能够在代码执行...总之,PC-lint与Source Insight的结合使用,为开发者提供了一个强大且直观的静态代码分析环境,有助于实现高质量的C/C++编程。
- 命令: `c:\PCLint8x\lint-nt.exe` - 参数: `-i"c:\PCLint8x" std.lnt env-vc8.lnt "$(ItemFileName)$(ItemExt)"` - 初始目录: `$(ItemDir)` 确保选中“使用输出窗口”,以便在VS中查看PC-lint的输出。 2. **...
Android Lint Plugin for Jenkins Parses output from the Android lint tool and displays the results for analysis. https://wiki.jenkins-ci.org/display/JENKINS/Android Lint Plugin
2. 在“Lint Executable”一栏中,需要选择PC-LINT安装目录下的“lint”文件夹中的“lint-nt.exe”。这个可执行文件是PC-LINT的核心,负责实际的代码分析工作。 3. “Configuration File”部分要选择KEIL安装目录下...
通过选择该文件,可以将 PC-Lint 配置文件与 Keil ARM 编译器集成。 使用 PC-Lint 检查源代码 在 Keil MDK 中,可以使用 PC-Lint 检查源代码。PC-Lint 可以检测源代码中的各种问题,包括语法错误、逻辑错误、风格...
在Android开发过程中,lint工具是不可或缺的静态代码分析器,用于检测代码中的潜在问题和错误。自定义lint规则允许开发者根据项目需求扩展lint的功能,确保代码质量并遵循特定的编码规范。下面将详细介绍如何在...
在提供的压缩包文件中,我们可以看到"PC-lint-PLUS-eval-license.pdf",这很可能是PC-lint Plus的试用版许可证文件,通常包含了关于试用期限、功能限制以及如何激活软件的信息。对于初次使用者,这是了解如何合法...
The Android lint tool is a static code analysis tool that checks your Android project source files for potential bugs and optimization improvements for correctness, security, performance, usability, ...
开源项目-golangci-golangci-lint.zip,golangci-lint: next generation of linters runner, 5x faster than gometalinter, has a lot of features
PC-Lint 是一款功能强大的静态代码分析工具,广泛应用于软件开发中,它可以对源代码进行检查和分析,从而帮助开发者编写高质量的代码。在 Keil 中安装和配置 PC-Lint,可以对项目代码进行深入的分析和检查,提高代码...
PC-lint Plus 是一种静态分析工具,通过分析 C 和 C++ 源代码来发现软件中的缺陷。 像编译器一样,PC-lint Plus 解析您的源代码文件,执行语义分析,并构建一个抽象语法树来表示您的程序。从那里,PC-lint Plus 采用...
由于PC-lint Plus是商业软件,因此需要通过官方网站申请一个试用许可证(如文件名PC-lint-PLUS-eval-license.pdf所示),这个许可证通常有效期为30天,允许用户充分评估工具的功能。 许可证申请过程包括访问Gimpel ...
ember-cli-template-lint :red_circle: 已淘汰 :red_circle: ember-cli-template-lint已弃用!! 请直接使用 。 更多信息/背景: 基本信息ember-cli-template-lint将对您的模板进行整理,并为每个声明所有样式规则均...
# Ansible-lint 在 Ansible playbook 上运行 ansible-lint 的步骤。 依赖关系 此构建步骤取决于安装的 ansible / ansible-lint,如果缺少,则构建步骤将失败。 请将它们安装在您的盒子中 wercker.yml 您可以按如下...
`ansible-lint-action` 是一个专门为 GitHub Actions 设计的工具,可以在代码提交或合并请求时自动运行 ansible-lint,确保 Ansible playbooks 的质量始终保持在高标准。 这个 GitHub Marketplace 上的 `ansible-...
Android Lint是Android开发中的一个静态代码分析工具,它能够检查代码中的潜在问题,包括错误、性能优化建议、可用性问题、国际化问题等。"android-lint-plugin: Jenkins的Android Lint解析器插件"是将这个功能集成...
SublimeLinter-contrib-ruby-lint 这个插件为提供了一个接口。 它将与具有“Ruby”语法的文件一起使用。 安装 必须安装 SublimeLinter 3 才能使用此插件。 如果未安装 SublimeLinter 3,请按照的说明进行操作。 ...
同时,EJS-Lint的源代码是开放的,开发者可以查看和贡献代码,推动其不断优化和完善。 总之,EJS-Lint 是前端开发中的一款重要工具,通过提供强大的EJS模板语法检查,它可以帮助开发者提高工作效率,保证代码质量,...
### 让你的代码通过 PC-Lint 检查:深入解析与实践 #### PC-Lint 简介 PC-Lint是由Gimpel Software公司开发的一款静态代码分析工具,广泛应用于C/C++语言的源代码检查,以检测潜在的编程错误、编码规范问题以及...
《PC-Lint静态代码检查工具集成于VC6与VS2008的详细步骤》 PC-Lint是一款广泛使用的静态代码分析工具,主要用于检测C/C++代码中的潜在问题,如语法错误、潜在的运行时错误、风格问题以及不合规的编程习惯等。本文将...