Dartの公式Linterの”lints”を導入してクォートのlintをしてみた

2023.03.06

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、CX事業本部 Delivery部の若槻です。

最近知ったのですが、Dartにはlintsという公式提供のLinterがあります。

今回は、lintsを導入して「文字列の記述でダブルクォートの使用を違反対象とする」lint設定をしてみました。

やってみた

導入

dart pub add --dev lints

analysis_options.yamlファイル作成

analysis_options.yamlファイルを作成し、次のように記述します。(analysis_options.yamlflutter createコマンドを実行でも自動作成されます。)

analysis_options.yaml

include: package:lints/recommended.yaml

linter:
  rules:
    - prefer_single_quotes

1項目目のincludeでは、Linterとして使用するパッケージと設定を指定します。lintsでは次の2つが指定可能です。

  • Core lints:重大な問題を引き起こす可能性のある記述のみを違反対象とするLint rule。package:lints/core.yamlを指定して有効化する。
  • Recommended lints:Core lintsの違反対象に加えて、慣用的なスタイルと形式での記述を強制するLint rule。package:lints/recommended.yamlを指定して有効化する。

今回は後者のRecommended lintsを指定します。

2項目のlinter.rulesでは、有効にするLint Ruleを指定します。Rule一覧は下記で確認できます。

今回は文字列の記述でダブルクォートの使用を違反対象としたいのでprefer_single_quotesを有効化します。

動作確認

Visual Studio Codeで動作を確認をします。

.dartファイルで文字列をダブルクォートで囲って記述すると、違反している記述が注釈されるようになりました。

またdart analyzeコマンドを実行すると、Lint違反している記述位置および違反しているRuleの一覧が出力できました。

$ dart analyze .
Analyzing ....                         1.6s

   info • lib/hoge.dart:1:9 • Only use double quotes for strings containing single quotes. • prefer_single_quotes

1 issues found.

ちなみにdart analyzeコマンドではinfoレベルの出力は終了コードが0となります。

$ echo $?      
0

Lint違反の場合に終了コードを0以外としたい場合は--fatal-infosオプションを使用します。

$ dart analyze . --fatal-infos

$ echo $?
1

これを利用すればCI/CDパイプラインなどでLint違反時にCI実行をFailさせることができます。

参考

以上