🐙

RiverpodリポジトリのLintルールが面白かった

2023/03/09に公開

はじめに

Flutterでは新規にプロジェクトを作成するとflutter_lintsパッケージがデフォルトで設定されるため、そのまま使っている人が多いのではないかと思います。
というか自分がそんな感じだったのですが、もう少しルール厳しくしたいな〜と思ってたまたまRiverpodどうなってるんだろ👀と見てみた話です。

Lintって何という方は以下の記事が分かりやすかったです👀
https://zenn.dev/sugitlab/articles/flutter_linter_recommend_sugitlab

RiverpodのLintルール

とりあえずanalysis_options.yamlを見てみます👀

https://github.com/rrousselGit/riverpod/blob/65ea0fa0adc4baf051e939b61db2c4781f7085c6/analysis_options.yaml#L1

all_lint_rules.yamlというのをimportしているみたいです。
(名前ですでに何してるかわかっちゃいますね)

all_lint_rules.yamlは文字通りFlutterで使える全てのルールを記述しているようです❗
https://github.com/rrousselGit/riverpod/blob/master/all_lint_rules.yaml

再びanalysis_options.yamlに戻ります。
ここでは使わないルールを無効化しているようです。また、無効にしている理由が一つ一つに書いてあります。
例)prefer_double_quotesはprefer_single_quotesと競合する。シングルクォートは入力が容易で、可読性に影響しない。

https://github.com/rrousselGit/riverpod/blob/65ea0fa0adc4baf051e939b61db2c4781f7085c6/analysis_options.yaml#L15-L89

まとめ

結論

Riverpodでは一旦すべてのLintルールを取り込んで、不要なものを無効化していました。

どのルールを追加しようかと考えていた自分としては、逆転の発想という感じで面白かったです。
一旦最も厳しい状態にして、不要なものだけ無していくのは良さそうでした。


追記

monoさんからこの件について、Remiさん(Riverpodの作者)のブログにも書いてあると教えていただきました。
また全ルール網羅用のパッケージもあるようなので、今回のやり方を試そうと思った方はこのパッケージの利用を検討しても良さそうです。
https://twitter.com/_mono/status/1634086597045129216?s=20

追記2

all_lint_rules_communityは古いルールとかも残っていてちょっと使い勝手悪かったです🥺(自動更新だから?)

村松さんがメンテしているこちらのパッケージにも全ルール網羅用のファイルがあり、こちらは古いルールなどを除くなどされており良さそうでした🥳
https://pub.dev/packages/altive_lints

自分は以下のような設定にしてみました。
村松さんのパッケージを使いつつ、Riverpodの設定をパクって、少し自分好みに変更してます。
https://github.com/K9i-0/flutter_k9i_portfolio/blob/main/analysis_options.yaml

GitHubで編集を提案

Discussion