コード品質の維持を行うために、静的解析ツールを活用することで、潜在的なバグやコードスタイルの問題を早期に発見できます。本ブログでは、GitHub Actionsを利用してプルリクエスト時に自動で静的解析を実行する方法を紹介します。

静的解析とは

静的解析は、コードを実行せずにその品質を評価することです。Flutterでは、flutter analyzeコマンドを使用して、コードの潜在的な問題点やスタイル違反を検出できます。これにより、各種エラーを未然に防いだり、コードの可読性や保守性を高めることができます。

またこれによりレビュアーの負担減にもつながります。

設定手順

1、プロジェクトルートにすでにあるanalysis_options.yamlの解析ルールを定義します。元々のファイルのコメントアウトを戻すだけの作業を行いました。

include: package:flutter_lints/flutter.yaml

linter:
  rules:
    prefer_const_constructors: true
    avoid_print: true

2、GitHub Actionsワークフローの作成
.github/workflows/analyze.ymlを作成します。
このワークフローは、プルリクエストががdevelopブランチに対して作成されたときにトリガーされます。
Flutter環境をセットアップし、flutter analyzeコマンドを実行します。

name: Flutter Analyze

on:
  pull_request:
    branches: [ develop ]

jobs:
  analyze:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-java@v1
        with:
          java-version: "12.x"
      - uses: subosito/flutter-action@v2
        with:
          flutter-version: "3.27.4"
      - run: flutter pub get
      - run: flutter analyze

3、プルリクエストの作成と確認
変更を加えてプルリクエストを作成すると、GitHub Actionsが自動的に実行されます。
解析でエラーが検出された場合、プルリクエストのチェックステータスに失敗の表示がされ、エラー内容がログに記録されます。

修復して再度プルリクエストを作成すると無事チェックが通りました。

最後に

GitHub Actionsとflutter analyzeを組み合わせることで、プルリクエスト時に自動で静的解析を実行しプロジェクトの品質を向上させることが期待できます。

バグは思わぬところから出てしまうことがあるので、少しでも品質を高める仕組みを作っていきたいと思います。

今後は各種テストも入れていければと思います。

参考文献

https://github.com/marketplace/actions/flutter-action