analysis_option.yamlをカスタマイズする

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-castsimplicit-dynamicは別々に設定することができます。
どちらもデフォルトはtrue

  • implicit-casts
    値がfalseの場合、暗黙的に特定の型にキャストしません。
    公式で例示されているのは下記のコード。
Object o = 'hoge';
String s = o; // Implicit downcast

Object oに入っているのはhogeという文字列なので、Stringの変数であるsoを入れてもDartコンパイラは許してくれますが、implicit-castsをfalseにしていると暗黙的な型変換を行うと、エラーが表示されるようになります(エラーは表示のみで、コンパイラは通ります)。

  • implicit-dynamic
    値がfalseの場合、静的型を決定できないときに動的型を選択しません。

これはちょっと具体例が理解できていないので、続きはまた明日書きます!