はじめてのSwiftLint

「SwiftLintをそろそろ導入してみましょう」
とアドバイスを頂いたので、挑戦してみました！

##こんな方向けの記事
・Swiftを始めて何もかもよくわからない
・でもなんとなく少しはわかるようになった

#SwiftLintってなに？
SwiftLintは、「swiftの静的解析ツール」だそうです。
静的解析ってなに？？

[今さら聞けない「動的テスト」「静的テスト」とは？]
(https://hldc.co.jp/blog/2018/03/29/1211/)
なるほど。
機会的にチェックしてくれる、ツールってことですね。
どうやら、機会的にチェックするが故に指摘項目も多くなる、とのことです。

さてやってみましょう。

##実際にやってみました
SwiftLintの導入には、
Mint,Homebrew,CocoaPodsのどれかが使える環境が必要なように感じました。
「ああ、なんだよ、それ。それから調べないとじゃん」と思っていましたが、
サロンの大先輩が、こっちでやるのが一番簡単だよ、とのことで、
教えてくれた通りに実施してみました。

まず、[SwiftLint](https://github.com/realm/SwiftLint)の在処へアクセス。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737820/33bf99f1-ad1a-b532-2f3d-2b798830567a.png)

当たり前ですが、全部英語です。
そのうち慣れると思っていますが、よちよちは「ひえぇぇえええ」ってなりますよね。
私はなりました。

スクロールして、少し下の方に行くと、
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737820/b7245c87-8812-ac5d-44bf-27eec90a40b6.png)
「Using a pre-built package:」の箇所があります。
上図の英語たちをグーグル翻訳に頼ってみますと
>ビルド済みパッケージの使用：
>>最新のGitHubリリースSwiftLint.pkgからダウンロードして 実行することにより、SwiftLintをインストールすることもできます。

と、翻訳されました。
ふむふむ。
リンクをクリックして、「SwiftLint.pkg」とやらをダウンロードすればいいのかな。
早速、やってみます。
リンクをクリックすると
![スクリーンショット 2021-01-18 21.33.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737820/45ab1a93-40a9-855a-6417-1bf754b6648a.png)
英語のページに飛びました。
ここから、下にスクロールしていくと、見つけました！！
![3-SwiftLintpkg.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737820/bb2af1dc-800f-3d71-9d10-3900ef81e936.png)

「SwiftLint.pkg」をクリックします。
ダウンロードに5分くらいかかるので、ここでちょっと休憩。
ダウンロードが終わり、ダウンロードのフォルダからダブルクリックで解凍しようとすると、
「これは確認取れてないやつなんで、開けません」的な注意喚起が出てきます。

ふふふ。私は、もうそこでは躓かないぞ。（過去に体験済）
Finderから、ダウンロードフォルダに行って、
![コントロールを押しながら開く.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737820/5c890d51-0a1d-7858-6b7e-7bd7ec1d7964.png)

該当の「SwiftLint.pkg」を__「control」を押しながら__クリック。
そうすると、開くのところが出てくるので通常通りそのままクリック。
そうすると、さっきとは違う注意喚起が出てきます。
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737820/401bb76c-d2c0-46e2-083a-93eb85024d6b.png)

「ええ。もちろん、開きますとも。」
これはイケナイことですが、「みんなが使っているから大丈夫！」という
情弱丸出しの現状で、なんの疑いもなく__「開く」__をクリックします。
仕方ありません、初学者です。
いつかはちゃんと根拠を持った判断ができるようになると信じています。

さて、次に検証してみたい（実験に使えそうな）プロジェクトを立ち上げてみます。
プロジェクトの一番上のフォルダを選択して、このような画面を開きます。
![スクリーンショット 2021-01-18 21.41.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737820/7ceef541-0e30-4454-7650-838827b66cae.png)
そうすると、このプロジェクトの概要的なところが映し出されますので、
上のメニューバー
![スクリーンショット 2021-01-18 21.43.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737820/6af30d05-2cc0-5c60-70a7-cb946210fdf6.png)
こちらの「Build Phases」を開きます。
ビルドフェーズと読むそうです。
上の図の左下にある__「+」__ののところをクリックして、
__「New Run Script Phase」__をクリックします。

そしたら、__Run Script__のところに、
コードが書けそうな場所が現れます。
そこに、下記のコードをコピペします。

```Swift
if which swiftlint >/dev/null; then
  swiftlint
else
  echo "SwiftLint does not exist, download from https://github.com/realm/SwiftLint"
fi
```

そして、そのまま__「⌘+B」__！！

すると、どうでしょう！！
SwiftLintのないときは、数個のエラーだったこのプロジェクトが！！

![スクリーンショット 2021-01-18 21.53.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737820/67589f10-77e5-fd3c-fe6a-8dd2a5ffc81c.png)

_44個のissuesを発掘しました！！_

薄々は気づいてましたよ。
レイアウトに問題があることを…。
iPhone11でビルドしたときはいいけど、iPodでビルドしたら
レイアウト、くっそ崩れてましたもんね・・・


と、いうことで、根気強くこれらのイシューさんを開拓していこうか、と思いました。
イシュー多すぎて睡魔に襲われたので、明日にします…。

##わからなかったこと！！
・これ毎回コピペするの？？最初から、Xcodeに取り込んで置くことはできないの？
・このWarningのエラー文を簡単に翻訳する方法はないの？？

まぁ、英語に慣れろってことですよね。
エラーの表示も設定でカスタムできるみたいですね。
もう少し、使って調べてみて、より良い使い方を身につけたいと思いました。

今日はここまで。