FlutterにLinterを導入する

Aug 22, 2021

flutter_lintsのインストール

$ flutter pub add flutter_lints --dev

analysis_options.yamlを作成

プロジェクトルートにanalysis_options.yamlというファイルを作成します(pubspec.yamlと同じ場所)。

作成例が公式READMEに載っているので一旦コピペします。

# This file configures the analyzer, which statically analyzes Dart code to
# check for errors, warnings, and lints.
#
# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
# invoked from the command line by running `flutter analyze`.

# The following line activates a set of recommended lints for Flutter apps,
# packages, and plugins designed to encourage good coding practices.
include: package:flutter_lints/flutter.yaml

linter:
  # The lint rules applied to this project can be customized in the
  # section below to disable rules from the `package:flutter_lints/flutter.yaml`
  # included above or to enable additional rules. A list of all available lints
  # and their documentation is published at
  # https://dart-lang.github.io/linter/lints/index.html.
  #
  # Instead of disabling a lint rule for the entire project in the
  # section below, it can also be suppressed for a single line of code
  # or a specific dart file by using the `// ignore: name_of_lint` and
  # `// ignore_for_file: name_of_lint` syntax on the line or in the file
  # producing the lint.
  rules:
    # avoid_print: false  # Uncomment to disable the `avoid_print` rule
    # prefer_single_quotes: true  # Uncomment to enable the `prefer_single_quotes` rule

# Additional information about this file can be found at
# https://dart.dev/guides/language/analysis-options

ローカルで実行してみる

ターミナルで以下コマンドを実行します。

$ flutter analyze

これで解析され、問題や警告があれば表示されます。

Github Actionで実行する

最後にGithub ActionでPR毎にLinterが実行されるよう設定します。
プロジェクトに.github/workflows/flutter.yamlというファイルを作成し、以下を記述します。

name: Flutter workflow

on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - name: Flutter action
        uses: subosito/flutter-action@v1.5.3
        with:
          flutter-version: '2.x'
      - run: flutter pub get
      - run: flutter analyze .

これをGithubへpushすると、Github Actions上で実行されることが確認できるはずです。