一、Ali-Check:阿里代码检查
- 所有的抽象方法都必须添加文档注释
- 不允许使用任何魔法值
-
Object
的equals()
方法容易抛出空指针异常,所用要用常量或确定有值的对象调用 - 不能使用过时的类或方法
- 创建线程池或线程时要指定有意义的线程名称,方便出错时回溯
- 常量命名应该全部大写,单词间用下划线隔开,力求语义表达完整,不必嫌太长
- 抽象类命名尽量用Abstract或Base开头
- 方法名、参数名、成员变量、局部变量都统一使用
lowerCamelCase
这种格式 - 类、类属性、类方法的注释都要用javadoc文档注释
二、Android Lint 检查
2.1、Accessibility 可选择
- ImageView 缺少内容描述:contentDescription
- EditText 缺少属性labelFor
2.2、Correctness 正确性
- 继承自Activity的类未进行注册
- 存储目录直接写“/sdcard/”
- textSize值用dp
2.3、Internationalization 国际化
- 硬编码:用到的字符串未放到strings.xml里,直接引用
- 控件用start/end代替left/right比较符合国际化要求,有些国家习惯内容从右到左
-
layout_alignParentRight
→layout_alignParentEnd
-
layout_marginLeft
→layout_marginStart
-
2.4、Performance
- 非静态Handler容易导致内存泄漏
- 布局优化意见
- 无效的布局参数,比如在ImageView里面加centerHorizontal
- 静态作用域泄露
- 不要将Context类对象设置为静态
- Provider\Helper等类如果为单例且需要Context,务必使用ApplicationContext ,如果一定要引用,用弱引用实现
2.5、Security
- 广播接收器或者内容提供者没有添加权限
2.6、Usability
- 字体小于12sp
- EditText缺少hint或者inputType
三、其他
3.1、Class Structure 类结构
- 全局变量可换成局部变量
3.2、Code maturity issues
- 类过时
3.3、Compiler Issues 编译问题
- 未经检查的类转换
3.4、Control flow issues 控制流问题
- if语句可以简化
- switch语句最后的default,不用加return,除非有特定返回值啦
3.5、Data flow issues
3.6、Declaration redundancy 定义冗余,可以做缩小范围等操作
- 能定义为private的就不要用public
这个部分的检查放最后,有些可能只是暂时没有被外部调用到
3.7、Imports 导包
- 快速定位到有废弃包的类,删除没有用到的包
3.8、Java language level migration aids 迁移助手
- 有些if语句可以替换成switch语句
3.9、拼写错误,想忽略
3.10、Probable bugs 可能是bug,要好好看哦
那么这里我准备把Probable bugs这一项检查结果标识为Error,提高异常等级。如何操作?
- 打开Preferences
- 展开Editor
- 点击Inspections
- 展开Java
- 找到Probable bugs并点击
- 在右侧Severity,就可以选择等级了,我选择Error
- 到这里配置就结束了!!!
网友评论