Open9

FlutterのCI

ken1flanken1flan

概観

テストは三種類

  • ユニットテスト
  • ウィジェットテスト
  • 統合テスト
ken1flanken1flan

ファイルの分割

全部 lib/main.dart に書いてあったけど、それをクラスごとにファイルに分割した。

$ tree lib
lib
├── main.dart
└── my_app
    ├── favorite_widget.dart
    └── my_app.dart

lib/main.dart

MyAppを実行するのみ。
MyAppはmy_app/my_app.dartに定義されているので、それもimportしてる。

lib/main.dart
import 'package:flutter/material.dart';
import 'my_app/my_app.dart';

void main() {
  runApp(MyApp());
}

lib/my_app/my_app.dart

お気に入りボタンのFavoriteWidgetを利用しているので、favorite.dartをimportしてる。
上位のmain.dartは使ってないので入れてない。

lib/my_app/my_app.dart
import 'package:flutter/material.dart';
import 'favorite_widget.dart';

class MyApp extends StatelessWidget {
// 省略
}

lib/my_app/favorite_widget.dart

上位のmy_app.dartは使ってないので入れてない。

lib/my_app/favorite_widget.dart
import 'package:flutter/material.dart';

class FavoriteWidget extends StatefulWidget {
  
  _FavoriteWidgetState createState() => _FavoriteWidgetState();
}
// 省略
ken1flanken1flan

継続的インテグレーションサービス

fastlane

ruby製のアプリ配信制御ツール。
androidやiosに対応、というより、Play StoreやApp Storeということなのかな…?
gemfileで管理するのがよさそう。

セットアップしちゃおうかと思ったけど、play storeに登録が要りそうなので、あとにしよう。

travisとcirrus-ciが2つ大きく書かれているけど、使ったことのないcirrus-ciにしてみよう。
オープンソースに対しては無料だし…。
https://cirrus-ci.org/pricing/

ken1flanken1flan

CIの設定って…今のリポジトリ設定だと面倒なので、作り初めてしまおうか…。

ken1flanken1flan

静的コード解析

https://speakerdeck.com/kuronekomichael/flutterfalsetamefalsejing-de-kotojie-xi
https://medium.com/flutter-jp/analysis-b8dbb19d3978
https://qiita.com/tokkun5552/items/2eb6793501c152dabf33

いろいろ読んでいると、自分で設定してるひともいますが…初心者の自分にできるわけもないので…最初は出来合いのものを持ってくるのがよさそうです。

https://pub.dev/packages/pedantic
Googleが内部で使っているLintのようで、ゆるいというひともいましたが、開発元でもあるので、試してみようと思います。

あちこち見てると…reviewdog介さなかったりして、結構マッチョなところが多いなあ…。