介绍
代码检查可以有效的提高代码质量,更进一步的说代码检查不仅仅是为了提高代码质量,已深入到代码程序的逻辑检查、内存使用情况的检查甚至更高层面的检查,很大程度上影响了程序的功能和性能。
代码检查分类
- 动态检查:程序运行时检查,侧重于内存和资源使用情况检查
- 静态检查:指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。
代码静态检查带来的好处
-
帮助程序开发人员自动执行静态代码分析,快速定位代码隐藏错误和缺陷;
-
帮助代码设计人员更专注于分析和解决代码设计缺陷;
-
显著减少在代码逐行检查上花费的时间,提高软件可靠性并节省软件开发和测试成本。
Dart如何检查
方法一:使用flutter analyze命令检查
中间略…
方法二:使用AdnroidStudio自带的检查工具检查
上面两种方式默认使用的是Dart的静态代码检查器dartanalyzer, 并使用内置在Flutter Tools内的终端工具进行代码扫描和分析。
检查出来的结果一般有三种等级
- info
不会导致分析失败的参考消息。例子:todo - warning
警告,例如:analysis_option_deprecated - error
严重错误,导致失败的错误,例如:invalid_assignment
分析脚本
默认的分析脚本
https://github.com/flutter/flutter/blob/2.5.1/packages/flutter_tools/analysis_options.yaml
这里放上Flutter官方在2.5版本默认使用的分析脚本, 可以参考:analysis_options_user.yml
如何配置分析脚本
检查器会根据项目根目录下的分析脚本执行检查, 该文件通常会与pubspec文件处于同一层级.
老版本的分析脚本命名为.analysis_options, 没有yaml后缀, 新版本统一命名为:analysis_options.yaml
检查器会使用#1检查other package和other other package, 使用#2检查my package.
开源脚本
如果嫌一条条配置lint规则麻烦, 可以直接集成Google的开源项目pedantic或者effective dart(二选一).
-
dev_dependencies: pedantic: ^1.0.0 dev_dependencies: effective_dart: ^1.0.0
-
include: package:pedantic/analysis_options.yaml or include: package:effective_dart/analysis_options.yaml
如此,配置完成,之后使用上述两种方法其一,可以分析代码问题。
也可以自定义分析脚本文件,写法有两种,不可混用
linter:
rules:
- annotate_overrides
- await_only_futures
linter:
rules:
avoid_shadowing_type_parameters: false
await_only_futures: true
Exclude关键字用来排除不需要扫描的文件.
想要忽略某行代码或者某个文件不需要被检查, 可以使用 //ignore 关键字.
另外可以自定义某条lint规则的严重级别, dart支持3种自定义级别:
- info: 只提示.
- warning: 警告级别.
- error: 错误, 分析不通过.
只有error级别会导致analyze任务失败, 如果你项目中使用了CI, 注意只有此时会阻止任务继续执行.