Android 系列 3.13使用Android Lint的静态代码测试

来源:互联网 发布:php收银系统 编辑:程序博客网 时间:2024/06/05 17:08
3.13使用Android Lint的静态代码测试


问题
你的代码看起来不错,但你想看看它是否经过专家审查后通过。

通过Android Lint运行您的代码(包括在现代版本的Android SDK中,并由相关版本的IDE插件支持)。检查警告,并改进它需要它的代码。
讨论
第一个“Lint”程序起源于贝尔实验室的第七版研究Unix。史蒂夫约翰逊把它作为他的第一个便携式C编译器的发展的分支,在20世纪70年代末。这是在我的小书用Lint检查C程序(O'Reilly)。从那以后,人们一直在写类似lint的工具。一些知名的Java代码包括PMD,FindBugs和CheckStyle。前两个,加上一些其他工具,在我的2007年检查Java程序的书。最近一个与我们相关的是,当然,AndroidLint,标准Android SDK的一部分。
这些工具的每一个都是检查你的代码,并提供意见,基于专家级的语言和图书馆的知识。困难的部分是记住,他们只是意见。有一些情况下,你认为你比这个工具更了解,然后你会发现你错了。但是有些情况下你是对的。当然,电脑很难知道哪一个,所以没有一个有经验的开发人员的判断的替代品!
这些工具通常在您的代码中第一次运行它们时会发现很多尴尬的问题。一个很常见的错误是通过调用makeText()创建一个toast,并忘记调用新的toast的show()方法;烤面包是创建,但不会弹出!标准编译器不能捕获这种错误,但Android Lint可以,这只是它的许多功能之一。在自己笑了一分钟后,你编辑(并测试!)你的代码,并再次运行lint。您重复此过程,直到您不再收到您关心的任何消息。
要运行Android Lint,可以使用$ SDK_HOME / tools / lint中的命令行版本。在Eclipse下,通过右键单击项目资源管理器中的项目并选择Android工具→运行Lint来调用Android Lint。警告显示为代码标记,就像形成Eclipse本身一样。由于它们不是由Eclipse编译器管理的,因此您可能需要在编辑代码后再次运行lint。如果你厌倦了游戏,你可以使用相同的菜单删除棉绒标记。在Android Studio下,分析→检查代码工具实际上运行Android Lint。
示例3-12显示了Lint的命令行版本,因为这是显示打印出来的错误的一些例子的最清晰的方法;请放心,它会在IDE下运行时捕获相同的错误,虽然消息可能不那么冗长。
实施例3-12从命令行运行Lint
$ cd MyAndroidProject$ lint .Scanning .: ......Scanning . (Phase 2): ..AndroidManifest.xml:16: Warning: <uses-sdk> tag should specify a target API level(the highest verified version; when running on later versions, compatibilitybehaviors may be enabled) with android:targetSdkVersion="?" [UsesMinSdkAttributes]<uses-sdk android:minSdkVersion="7" />~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~AndroidManifest.xml:16: Warning: <uses-sdk> tag appears after <application> tag[ManifestOrder]<uses-sdk android:minSdkVersion="7" />~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~AndroidManifest.xml:6: Warning: Should explicitly set android:allowBackup to true or false(it's true by default, and that can have some security implications for the application'sdata) [AllowBackup]<application android:icon="@drawable/icon" android:label="@string/app_name">^res/values/strings.xml:5: Warning: The resource R.string.addAccounrSuccess appears to beunused [UnusedResources]<string name="addAccounrSuccess">Account created</string>~~~~~~~~~~~~~~~~~~~~~~~~res/values/strings.xml:6: Warning: The resource R.string.addAccounrFailure appears to beunused [UnusedResources]<string name="addAccounrFailure">Account creation failed</string>~~~~~~~~~~~~~~~~~~~~~~~~res: Warning: Missing density variation folders in res: drawable-xhdpi[IconMissingDensityFolder]0 errors, 6 warnings$


在这个项目没有发现任何严重,但几个事情可以清理快速,轻松。当然,未使用的字符串资源不需要任何操作,如果他们打算供将来使用,但如果他们是旧的,已经失去使用,你应该删除它们,以保持你的应用程序干净。与任何自动化工具一样,你比你的应用程序更了解你的应用程序,至少做出这样的决定。
0 0