VSCodeやAndroidStudioを使っていると、Dart Analysis Serverが構文エラーをチェックしてくれます。非常に便利な機能ですが、これをカスタマイズできるのがanalysis_option.yaml
。
Customize Static Analysis - Dart
pubspec.yaml
と同じディレクトリに置いておくだけでAnalyserをカスタマイズすることができます。
ちなみに、analysis_option.yaml
の冒頭でinclude
することもできるそうで、ベースとなるルールをincludeして、それをプロジェクトごとにカスタマイズするという使い方も便利そうです。
include: package:pedantic/analysis_options.yaml
上述のDartのサイトに詳しく解説があるのですが、理解の為に少しずつ訳していこうと思います。
今日の項目はtype checks
。
Dartは動的型付言語ですが、より厳しくチェックをしたい場合、静的型付でないとエラーを出すことができます。
analyzer: strong-mode: implicit-casts: false implicit-dynamic: false
implicit
は「暗黙的な」という意味だそう。
つまり、ひとことでいうと、暗黙的な型変換を許可しないよ、という設定。
implicit-casts
とimplicit-dynamic
は別々に設定することができます。
どちらもデフォルトはtrue
。
implicit-casts
値がfalseの場合、暗黙的に特定の型にキャストしません。
公式で例示されているのは下記のコード。
Object o = 'hoge'; String s = o; // Implicit downcast
Object o
に入っているのはhoge
という文字列なので、String
の変数であるs
にo
を入れてもDartのコンパイラは許してくれますが、implicit-casts
をfalseにしていると暗黙的な型変換を行うと、エラーが表示されるようになります(エラーは表示のみで、コンパイラは通ります)。
implicit-dynamic
値がfalseの場合、静的型を決定できないときに動的型を選択しません。
これはちょっと具体例が理解できていないので、続きはまた明日書きます!