Dart语言在统一代码规范这方面作的仍是比较完善的,不只有官方文档 effective-dart 指导咱们写出优雅的dart代码,更是提供了像eslint(写过js/ts的应该都知道)同样的工具linter来检查咱们的代码是否符合规范。固然,检查项是能够配置的,这个后面再说,咱们先来介绍如何使用官方提供的工具。html
首先,咱们须要在项目的根目录下添加analysis_options.yaml文件,再次确认下这个文件应该跟pubspec.yaml在同一级目录下(不要嫌啰嗦)。文件添加好了,那应该怎么写配置的内容呢?这里有三个预设可供选择:git
咱们以pendantic为例,首先在pubspec.yaml文件的dev_dependencies下添加pendantic库,接着运行pub get将该库加载到项目中。github
dev_dependencies:
pedantic: ^1.9.0
复制代码
而后咱们在analysis_options.yaml文件中添加以下配置:json
include: package:pedantic/analysis_options.yaml
bash
固然也能够像下面这样写,指定具体的options版本号:ide
include: package:pedantic/analysis_options.1.9.0.yaml
工具
经过查看pedantic库的代码结构也可以看出analysis_options.yaml里一直是引用最新的预设文件。 ui
第一种引用option的方式可能会在库更新的时候带来新版本的option文件,这样的话有可能会带来新的错误警告信息,而第二种引用指定版本option的方式会比较的稳定,这个你们选择合适本身的就好(星座决定选择,手动滑稽一下)。google
配置好analysis_options文件后咱们就能够在Android Studio的Dart Analysis下看到提示了,鼠标点击具体条目能够跳转到具体代码进行修改调整。(VS Code应该会在PROBLEMS下面看到相应的提示)spa
include: package:pedantic/analysis_options.1.9.0.yaml
analyzer:
exclude: [build/**]
strong-mode:
implicit-casts: false
linter:
rules:
- camel_case_types
复制代码
须要注意:不要在YAML文件中使用制表符,而是要用2个空格来表示每一个缩进级别。
analyzer:
strong-mode:
implicit-casts: false
implicit-dynamic: false
复制代码
咱们可使用implicit-casts和implicit-dynamic这两个配置项来启用更严格的类型检查,他们的默认值都为true,能够组合使用,也能够分开使用。
这个你们能够设置一下试试,99%的人应该会收获一堆错误,而后开始怀疑本身写的是什么粑粑。。。。
linter:
rules:
- annotate_overrides
- await_only_futures
- camel_case_types
- cancel_subscriptions
复制代码
按照上面的格式,能够根据实际须要添加本身的linter规则, dart-lang.github.io/linter/lint… 这里能够查看全部的linter规则,下面标注的标签会很清楚的标注每条规则的所在以及类别(例如:style)
可是若是你要禁用前面经过include引入的linter规则,则须要下面的配置格式
include: package:pedantic/analysis_options.1.9.0.yaml
linter:
rules:
avoid_shadowing_type_parameters: false
await_only_futures: true
复制代码
固然也能够启用新的规则。这里须要注意的是,以上两种配置linter的方式不能混用。
有些时候咱们须要排除一些文件,好比json_serializable库生成的.g.dart文件,这时候就须要配置exclude,能够指定具体文件,也能够指定一类文件或者这个文件夹下的全部文件,因此说这个仍是比较灵活的。
analyzer:
exclude:
- lib/http_client.dart
- lib/models/*.g.dart
- lib/mock/**
复制代码
咱们能够忽略指定的linter规则,配置样式以下:
analyzer:
errors:
todo: ignore
复制代码
咱们也能够全局更改指定规则的严重程度,配置样式以下:
analyzer:
errors:
invalid_assignment: warning
missing_return: error
dead_code: info
复制代码
无论是VS Code 仍是Android Studio,提示错误的同时通常都会带着修复提示的。
鼠标点点就能搞定大部分的警告,strong-mode开启的话另说,不是很强迫症的话能够忽略这个选项。
既然dart自带的代码规范功能这么强大,咱们也不能浪费了google工程师们的一片良苦用心。简单的设置一下就可让代码规范不少,赶快动手试试吧。
1.若是本文对你有帮助,就点个赞支持下吧,你的「赞」是我创做的动力。
2.关注公众号「码农码将来」让咱们一块儿进步,码出本身绚丽多彩的将来。