【Dart】Dart代码静态检查

介绍

代码检查可以有效的提高代码质量,更进一步的说代码检查不仅仅是为了提高代码质量,已深入到代码程序的逻辑检查、内存使用情况的检查甚至更高层面的检查,很大程度上影响了程序的功能和性能。

代码检查分类
  • 动态检查:程序运行时检查,侧重于内存和资源使用情况检查
  • 静态检查:指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。
代码静态检查带来的好处
  1. 帮助程序开发人员自动执行静态代码分析,快速定位代码隐藏错误和缺陷;

  2. 帮助代码设计人员更专注于分析和解决代码设计缺陷;

  3. 显著减少在代码逐行检查上花费的时间,提高软件可靠性并节省软件开发和测试成本。

Dart如何检查

方法一:使用flutter analyze命令检查

image-20211116132151741

中间略…

image-20211116132125089

方法二:使用AdnroidStudio自带的检查工具检查

image-20211116132302571

上面两种方式默认使用的是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

image-20211116133144705

这里放上Flutter官方在2.5版本默认使用的分析脚本, 可以参考:analysis_options_user.yml

如何配置分析脚本

检查器会根据项目根目录下的分析脚本执行检查, 该文件通常会与pubspec文件处于同一层级.

老版本的分析脚本命名为.analysis_options, 没有yaml后缀, 新版本统一命名为:analysis_options.yaml

img

检查器会使用#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种自定义级别:

  1. info: 只提示.
  2. warning: 警告级别.
  3. error: 错误, 分析不通过.

只有error级别会导致analyze任务失败, 如果你项目中使用了CI, 注意只有此时会阻止任务继续执行.

参考资料

pedantic 1.11.1(已停止维护)

flutter_lints(替代pendantic)

effective_dart 1.3.2

Flutter代码静态检查

Linter for Dart

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值