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.關注公衆號「碼農碼將來」讓咱們一塊兒進步,碼出本身絢麗多彩的將來。