😱

use lefthook in flutter

2024/08/08に公開

👤対象者

  • Gitのコミット時に静的解析をしたい人
  • lintのチェックをしてもらうだけですね

こちらの記事を参考に、Flutterで使ってみました

lefthookを使ってみる

Flutterのプロジェクトを作るか、すでに作ってるプロジェクトに導入してみてください。homebrewを使って導入します。

install lefthook:

brew install lefthook

適当に、Gitを導入して、コミットしておいてください。lefthookは、Gitないとプロジェクトにインストールできません。
git init & commit

git init
git add .
git commmit -m "wip"

Flutterプロジェクト内で、 lefthookをinstall:

lefthook install

こんなファイルが作成される。

analysis_options.yamlのリントの設定をする。リントの設定してくれないとチェックしてくれないのでやりましょう。

  1. print文禁止
  2. camelCaseで長い変数は書く
  3. '(シングルクォーとを使う)
# 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.dev/lints.
  #
  # 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:
    # print禁止
    avoid_print: true
    # single quotesを使う
    prefer_single_quotes: true
    # camelCaseを使う
    prefer_typing_uninitialized_variables: true
    # 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

print文があったり、キャメルケースで、長い名前の変数書いていたり、'(シングルクォート)じゃなかったら、エラー出ます。

git pushするとエラーが出る😱

成功ですね。

今回は、簡易的な設定なので、これに書き換えないとpushできない。

# EXAMPLE USAGE:
#
#   Refer for explanation to following link:
#   https://github.com/evilmartians/lefthook/blob/master/docs/configuration.md

pre-commit:
  commands:
    1_analyzer:
      run: flutter analyze
    2_linter:
      run: dart fix --apply

pre-push:
  commands: {}

感想

フィットネスアプリの開発に携わった時に、使った経験があったので、気になってまた使ってみました。でも私は、Macだけど、Windowsのメンバーもいるので、もしlefthook導入したら、homebrewないからどうなるんだろうか....

npm, Gemで使えるようだが。
Github

Discussion