8
0

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.

and factory.incAdvent Calendar 2023

Day 11

iOSアプリ開発でDanger+SwiftLintをサクッと導入する

Last updated at Posted at 2023-12-10

はじめに

この記事はand factory.inc Advent Calendar 2023 11日目の記事です。

andfactoryでiOSエンジニアとして従事しています。
今回はiOSアプリ開発にサクッとDanger+SwiftLintを追加、移行する方法を書きます。

Danger Swift

Danger Swiftを使用すると、開発チームはより一貫したコーディング標準を維持し、コードレビューの時間を節約し、品質の高いソフトウェアをより迅速に提供することが可能になります。

今回は以下の条件のソースコードが対象で、かつ変更も少なく、すぐできる方法です。

  • iOSアプリをSwiftで書いているソースコード
  • GitHub使ってる
  • 時間ないので、ひとまず簡単に入れたい、移行したい
  • 軽量に運用したい

まずはGitHub Actionsを作成

当初楽に自作しようとして以下の問題にぶち当たりました。

  • gemとmacOSの環境でやっていましたが、GutHub ActionsだとmacOSの倍率高い
  • gemとubuntuでやろうとしていちいちSwiftLintをビルドしないといけない

なんかスマートにできる方法ないかと探していたら下記のDocker Imageを見つけました。メンテナンスもされている。ありがとう

これだけでいいです*

.github/workflows/danger.yml
name: Danger
on:
  pull_request:
    branches:
      - '**'
      - '!master'
jobs:
  danger:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      
      - name: Danger
        uses: 417-72KI/danger-swiftlint@v5.9 # Xcode15系
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Dangerfile.swift

上記のDocker Imageの都合上、Swiftで書く必要がありますが、iOSエンジニアとしてはその方がしっくりくるかと。

Dangerfile.swift
import Danger
import Foundation

let danger = Danger()

// swiftlint
SwiftLint.lint(inline: true, configFile: ".swiftlint.yml")

完成

これだけで完成です。
特にキャッシュとかも考慮せずとも、1分強とかで終わりますので、最高です。

弊社のiOSチームはプロダクト横断してレビューを行ったり、複数プロダクトで実装しているエンジニアしています。
なので、あまりプロダクト間でブレがあるとしんどいので、Dangerfileにいろいろルールを追記してチームで共通化を図っています。

明日のAdvent Calenderもお楽しみに。

8
0
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
8
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?