🐬

【Flutter】Linter for Dart の日本語訳チートシート

2022/10/30に公開約2,900字

はじめに

前回の記事で Flutter におけるの Formatter や Linter について触れ、analysis_options.yamlpedantic_mono を include し、適宜自分にあうよう設定していくと結論付けていました。

https://zenn.dev/10_tofu_01/articles/flutter_formatter_linter_lefthook

が、よくよく考えてみるといくら著名な方の設定だとしても一個人の設定ファイルをそのまんま使うのもどうなのかということと、なにより個人的に Linter ルール等の全貌が見えていないことが少し気持ち悪く感じていました。

ということできちんと Linter ルール 一読した上でもう一度考え直してみました。
そこでチートシートが出来上がった次第です。

チートシート

そんなこんなで出来上がったシートがこちらです。

https://docs.google.com/spreadsheets/d/1YtpfQX2F--b8Gnp4yiBT5WbHih59fDk2zmAWMZgjgYQ/edit?usp=sharing

出来上がったと言っても、こちらの神スプレッドシートをお借りして DeepL API でシートを翻訳して整形したものになります。

内容はできるだけ更新していくつもりです。
現時点で 2022/10/7 更新(Flutter 3.3, Dart 2.18 を含む)の内容のものとなっています。

シートには Linter for Dart の各ルールのかんたんな説明と、下記のパッケージのルール適用状況やパッケージ間の比較を記載しています。

$ dart fix で自動修正してくれるかどうかも記載しています。

パッケージの説明

有名な Lint パッケージをいくつか紹介します。

Dart lints

こちらは Dart プロジェクトのための公式推奨の パッケージです。Core lints と呼ばれる最小限の Lint ルールセットと、Recommended Lints と呼ばれるより広範なセットの 2 種類が用意されています。最小限といった感じで、Lint ルールを作るためのルールといったものでしょうか。

flutter_lints

ライトに Flutter を開発する方はこちらで問題ないでしょう。
Flutter 2.5.0 以降を使用して flutter create で作成されたプロジェクトは、自動的に Flutter lints パッケージを使用するように設定されています。

上記の Dart lints の Reccomended lints ルールに加えて、Flutter プロジェクトで重要ないくつかのルールが含まれています。
すべての Lint ルールの内、47.8%を適用しているというちょうど良さもいいですね。

lint

海外製のより厳しいルールが定められたパッケージです。ルール適用率は約 72%!
特徴としてはソースコードに各ルールを適用する理由が記載されていることです。明確な根拠があって適用しているのがよくわかります。

Lint ルールは厳しくすればするほど開発を阻害する場面もでてきますが、曖昧なまま書けてしまいあとから痛い目を見るということを防ぐためにも厳し目がいいと個人的には感じています。こちらも、この次に紹介するパッケージのどちらも一つ前の flutter_lints のルールを完全に含んでいるので、公式推奨のものから逸脱することもありません。

pedantic_mono

こちらは日本人の Flutter コントリビューター mono 氏 の公開する Lint パッケージです。
ルール適用率は驚異の 83%。

内容に関しては、ご本人による記事を読むのが早いでしょう。

https://medium.com/flutter-jp/analysis-b8dbb19d3978

まとめ

最後にわたしのanalysis_options.yamlを載せておきます。flutter_lints を include して公式に準拠しつつ、lint と pedantic_mono リスペクトのマゾ仕様です。といっても開発中に迷惑と感じたことはほぼありませんし、指摘からかなり勉強になることが多いです。

analysis_options.yaml

あ、IDE のクイックフィックスは必須です。VS Code なら ⌘ + . で選択できます。


クイックフィックス in VS Code

皆さんの参考になれば幸いです。

GitHubで編集を提案

Discussion

ログインするとコメントできます