13
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

FlutterでもDangerを使いたい!!

Last updated at Posted at 2021-12-19

iOSアプリやAndroidアプリを開発する際にDangerを使っていました。
Flutterでも使えないか調べたところdanger-flutter_lintというものを発見したので試してみようと思います!

そもそもDangerって?

CIで実行し、警告などをPullRequestにコメントしてくれるものです。
Githubでは、このように書かれていました。

Danger runs after your CI, automating your team's conventions surrounding code review.
This provides another logical step in your process, through this Danger can help lint your rote tasks in daily code review.
You can use Danger to codify your team's norms, leaving humans to think about harder problems.

ref) https://github.com/danger/danger#what-is-danger

danger-flutter_lintのざっくりな使い方

  1. $ flutter analyze を叩き、その結果をテキストファイルに保存
  2. Dangerがそのテキストファイルを読み取り、PullRequestにコメントする

使用方法

今回のサンプルのリポジトリはこちらです

リポジトリ

PullRequest

Dangerをインストール

1. Gemfileの設定

Gemfileに dangerdanger-flutter_lint を追加

# frozen_string_literal: true

source "https://rubygems.org"

gem 'danger'
gem 'danger-flutter_lint'

2. bundle install

bundle install--path オプションがdeprecatedになったため、 bundle config を使用

$ bundle config set path 'vendor/bundle'

$ bundle install

Dangerfileの設定

// danger
warn("WIPだよ〜〜〜〜〜〜") if github.pr_title.include? "[WIP]"

// danger-flutter_lint
flutter_lint.only_modified_files = true
flutter_lint.report_path = "flutter_analyze_report.txt"
flutter_lint.lint(inline_mode: true)
  • danger
    • GithubのPullRequestのタイトルに「[WIP]」がついていた場合、警告します
    • 他にも警告など様々なことをカスタマイズできます
  • danger-flutter_lint
    • only_modified_files: 新しく追加したファイル、編集したファイルのみ対象にする
    • report_path: flutter analyze の実行結果を出力したファイルを指定(次のGithub Actionsで flutter_analyze_report.txt というファイル名にしています)
    • lint: 結果をPullRequestに表示する

Github Actionsの設定

Github Actionsを自分で設定するのは初めてなので、何か間違っているところがありましたら教えてください!

name: DangerFlutterLint

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]
  workflow_dispatch:
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: setup repository
        uses: actions/checkout@v2
      
      - name: setup Flutter
        uses: subosito/flutter-action@v1.5.3
        with:
          channel: stable

      - name: pub get
        run: flutter pub get
        
      - name: flutter analyze
        run: flutter analyze > flutter_analyze_report.txt
        
      - name: setup ruby
        if: ${{ failure() }}
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: 2.7
          bundler-cache: true
          
      - name: run danger
        if: ${{ failure() }}
        uses: MeilCli/danger-action@v5.0.1
        with:
          plugins_file: Gemfile
          install_path: vendor/bundle
          danger_file: Dangerfile
          danger_id: danger-pr
        env:
          DANGER_GITHUB_API_TOKEN: ${{ secrets.DANGER_TOKEN }}

結果

下記のスクショのようにコメントされました!
スクリーンショット 2021-12-19 11.42.17.png

終わりに

FlutterでもDangerが使えました!
DangerはFlutter lintの警告を表示させるだけではなく、PullRequestに関わる様々なことに使えるので凄い便利ですよね。

13
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?