【Flutter/Dart】静的解析ツールの導入と使い方!flutter_lints

【Flutter/Dart】静的解析ツールの導入と使い方!flutter_lints

この記事からわかること

  • Flutter/iOS/Android静的解析ツール導入方法
  • flutter_lints使い方

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

静的解析ツールとは?

静的解析ツール」とはプログラムが記法や規約に則って記述されているかを自動で解析するためのツールです。これを使用することでルールに準じていないコードを特定でき、修正箇所を簡単に識別できるようになります。

プログラムが一定のルールに則って記述されることで冗長なコードのリファクタリングによるコンパイル時間の短縮や可動性向上による複雑性の緩和と保守しやすいコードを保つことができます。

iOS

Android

Flutterに静的解析ツールを導入する:flutter_lints

Flutterではflutter_lintsという公式推奨の静的解析ツールが用意されています。Flutter2.5.0以降からプロジェクトを立ち上げた場合にデフォルトで導入されるようになったので特に導入手順を踏む必要はありません

未導入のプロジェクトが存在することも考慮して導入手順をまとめて行きます。Flutter2.5.0以降の場合は不要ですのでスキップしてください。まずは以下のコマンドを実行してパッケージを導入します。開発環境のみに入れておくのがスタンダードです。

$ flutter pub add --dev flutter_lints

pubspec.yam」に以下のように記載してあれば導入済みになります。



dev_dependencies:
  flutter_lints: ^6.0.0

続いてルートディレクトリに「analysis_options.yaml」を作成します。この中にinclude: package:flutter_lints/flutter.yamlを追加することでプロジェクト全体で静的解析ツールが動作するようになります。linterは設定周りを記述する場所になります。


include: package:flutter_lints/flutter.yaml

linter:
  rules:

警告を確認する:Android Studio

IDEに「Android Studio」を使っている場合として解説して行きます。導入が完了すれば静的解析自体はプロジェクト全体に動作します。解析で違反した警告やエラーは各ファイルの該当行に警告やエラーとして下線の~~でハイライトされます。

またAndroid Studio上部メニュー「View」>「Tool Window」>「Dart Analysis」をクリックすることで表示されるようになります。

【Flutter/Dart】静的解析ツールの導入と使い方!flutter_lints

またコマンドからflutter analyzeを実行することでも確認可能です。

$ flutter analyze
Analyzing MyApp...                                                     

warning • The value of the local variable 'analytics' isn't used •
       lib/main.dart:26:21 • unused_local_variable
   info • The constant name 'SS' isn't a lowerCamelCase identifier •
          lib/views/components/custom_text_view.dart:5:17 •
          constant_identifier_names
   info • The constant name 'MS' isn't a lowerCamelCase identifier •
          lib/views/components/custom_text_view.dart:5:24 •
          constant_identifier_names
   info • The constant name 'ML' isn't a lowerCamelCase identifier •
          lib/views/components/custom_text_view.dart:5:31 •
          constant_identifier_names
  error • The named parameter 'startScreen' is required, but there's no
         corresponding argument • test/widget_test.dart:16:35 •
         missing_required_argument

5 issues found. (ran in 2.6s)

静的解析のルールを設定する

静的解析によりチェックするルールは「analysis_options.yaml」で行います。linterrulesに適応させたいルールを追加していく形になります。


include: package:flutter_lints/flutter.yaml

linter:
  rules:
    - avoid_print                 # print() を避ける
    - prefer_const_constructors   # const定義を義務化
    - prefer_final_fields         # 再代入しないフィールドは final にすることを推奨
    # : trueは省略可能 
    # : falseで明示的に適応させない
    - prefer_single_quotes: true  # シングルクォートのみ

ルールはたくさんあるので公式を参考にしてください。個人的にすごく便利だと思うのはprefer_const_constructorsです。これによりconstの付け忘れを検知してくれ後述している自動修正で一括で修正できるのでおすすめです。

公式リファレンス:linter-rules

自動修正

静的解析で引っかかった部分はdart fix --applyコマンドを実行することで一括で自動修正してくれます。これはrulesに記載したルールのものが反映されるので自動修正対象もそこで制御されています。

$ dart fix --apply

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

Search Box

Sponsor

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article