AndroidStudio静态代码检测工具Analyze Code

版权声明:本文为博主原创文章,转载希望能注明出处,感谢。 https://blog.csdn.net/u010126792/article/details/86091281

工作中git正常流程中提交代码之后是需要同事或者leader进行代码review的,代码review不但包括逻辑是否正常还包括代码是否规范,写法是否会影响性能,是否添加了无用或者删除了有用代码,简直比编写代码还难受。受自己阅历和工作经验,项目工期的影响,很多时候我们检查自己的代码很难发现错误(不知道大家有没有这个感觉),或者我们不觉着这块代码有问题,这时候就需要用到“静态代码检测工具”,Android开发以前常用lint,今天聊一下Android studio的静态代码检测工具Analyze Code。

静态代码检测:静态就是在不运行代码的条件下,利用预设规则对代码进行分析,分析出潜在的问题,提示用户进行修改。

Android Studio 低版本和高版本差别较大,但现在3.0+版本基本普及,所以就按照我自己电脑上的3.1.2版本进行分析。
静态代码分析工具在哪里?
在这里插入图片描述

Inspect Code:检查代码(最常用)

在这里插入图片描述

点击之后,需要选择检查的范围和策略。
范围包括:整个project ,app Module,主Activity,Custom Scope(用户自定义区域),是否包括测试资源。
策略(Inspection profile):可以自己选定策略,编译器已经提供了很多策略可以供我们选择。

在这里插入图片描述
一般不需要修改或者自定义策略配置,选中策略右面面板有对应的解释。
运行Inspect Code
可以看到问题很多,但是不用怕这些问题不会影响正常运行,但会影响apk的性能或者大小,所以有的还是需要解决的,这里要重点关注Android Lint 开头的结果。
在这里插入图片描述
包括: Accessibility,Correctness,Internationalization,Performance,Security,Usability。
Correctness:
在这里插入图片描述

Correctness:可能存在错误,所以要重点关注。
第一项是使用了旧版本不支持的属性,
第二项是使用了旧版本不兼容的方法
第三项是属性动画使用了不正确的属性名
第四项是不应该使用px单位
第五项是使用了低版本不支持的常量

在右侧面板会给出解决方案:
在这里插入图片描述
Internationalization:国际化问题
在这里插入图片描述

Hardcoded text:xml布局文件中不要使用硬编码,类似text,size等都要定义到res/values对应的文件中,然后引用。
TextView Internationalization:代码中TextView设置setText也不能使用硬编码
Using left/right instead of start/end attributes:使用left/right 替换start/end ,类似margin,padding等的设置,这里一般不用改。

Performance:展示,性能相关(ui)
在这里插入图片描述

FrameLayout can be replaced with tag:利用merge替换根布局为FrameLayout的布局,这样可以减少布局层次。
Memory allocations within drawing code:在onDraw函数内部生成对象,可能会导致内存泄漏。
Unused resources:没有使用的资源,项目中会有很多未使用的资源文件,如果把这些资源文件打包到apk中无疑会增大apk体积,所以去除无用资源可以显著减少apk大小。

在这里插入图片描述
静态字段可能造成内存泄漏。
Security:安全相关
在这里插入图片描述

AllowBackup/FullBackupContent Problems:不要开启,allowBackup标志为true时,用户即可通过adb backup和adb restore来进行对应用数据的备份和恢复,这可能会带来一定的安全风险。

Class structure:代码结构
在这里插入图片描述

XML:
在这里插入图片描述

Xml优化包括tag空body,没有使用的命名空间声明等。

Spelling:拼写错误
在这里插入图片描述

拼写优化包括:包括变量命名规则,xml中id命名规则,res/values中属性的命名等。

Imports:引用
在这里插入图片描述

import相关优化主要是引用了无用的引用。

Declaration redundancy:冗余的声明
在这里插入图片描述

包括没有使用的类,没有使用的方法,没有使用的变量等。

Code Cleanup:代码清理,慎用,还是我们自己选择要修改的地方最好。

Run Inspection by name:利用检查的名字来进行检查,例如我要查找所有没有被使用的定义

如何指定有什么可以搜索呢?

在这里插入图片描述

infer nullity:推断可能为null的位置

这个如果解决的好,可以避免空指针问题。

猜你喜欢

转载自blog.csdn.net/u010126792/article/details/86091281