🚸
【Flutter】静的解析の結果を Danger でプルリクエストにコメントする
■ 静的解析を行うワークフローを作成
まずは、静的解析を行うワークフローを作成します。
このワークフローでは、main
ブランチにプルリクエストまたはプッシュされたときに、ワークフローが起動するようにしています。
name: Check pull request
on:
pull_request:
branches:
- main
push:
branches:
- main
jobs:
analyze:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup fvm
uses: kuhnroyal/flutter-fvm-config-action@v2
id: fvm-config-action
- name: Install flutter
uses: subosito/flutter-action@v2
with:
flutter-version: ${{ steps.fvm-config-action.outputs.FLUTTER_VERSION }}
channel: ${{ steps.fvm-config-action.outputs.FLUTTER_CHANNEL }}
- name: Run flutter version
run: flutter --version
- name: Run pub get
run: flutter pub get
- name: Run analyze
shell: bash
run: flutter analyze | tee ./flutter_analyze_report.txt
実装が完了したらリモートリポジトリにプッシュして、リポジトリのActions
でワークフローが起動、静的解析が失敗することを確認します。
■ ワークフローに Danger を追加
.github
ディレクトリにGemfile
を作成して、以下を実装します。
Gemfile
source "https://rubygems.org"
gem 'danger'
gem 'danger-flutter_lint'
Gemfile
と同様に.github
ディレクトリにDanger
の設定を行うDangerfile
を作成して、以下を実装します。
# true の場合、新規作成または修正したファイルで静的解析に引っかかったときプルリクエストにコメントする
flutter_lint.only_modified_files = true
# ワークフローの Run analyze ステップで出力した静的解析の結果のファイル
flutter_lint.report_path = "flutter_analyze_report.txt"
# 静的解析に引っかかった箇所にコメントする
flutter_lint.lint(inline_mode: true)
ワークフローのRun analyze
ステップの下に、以下のDanger
のステップを追加します。
- name: Setup ruby
uses: ruby/setup-ruby@v1
if: always()
with:
ruby-version: '3.3'
bundler-cache: true
- name: Setup danger
uses: MeilCli/danger-action@v5
if: always()
with:
plugins_file: '.github/Gemfile'
danger_file: '.github/Dangerfile'
danger_id: 'danger-pr'
env:
DANGER_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ワークフローの実装が完了したらリモートリポジトリにプッシュします。
■ Danger がコメントしてくれるか確認する
Danger
がプルリクエストにコメントできるように、リモートリポジトリのSettings > Actions > General > Workflow permissions
をRead and write permissions
に設定します。
設定が完了したら Save を選択します。
次に、静的解析に引っかかりそうな実装を追加して、プルリクエストを作成してみます。
上記のようにコメントが表示されたら完了です!!
GitHub
Discussion