Kekeの日記

エンジニア、読書なんでも

Siderでコードレビューを自動化してプロジェクトのエントロピーを維持する

f:id:bobchan1915:20181219233948p:plain

本記事

本記事では自動コードレビューができるSider(旧SideCI)を使ってみようかなとおもいます。

よくミスタイプとかして、それを修正するプルリクが必要になったりするとプロジェクトのエントロピーが圧倒的に増大するので防ぐためにも導入してみます。

インストール手順

STEP1: 許可するリポジトリを選択する

まず、最初に以下のような画面になります。

f:id:bobchan1915:20181219222945p:plain

ここで「Add a new organization」を選んでリポジトリを追加しましょう。

そして許可するとSTEP1が始まります。

f:id:bobchan1915:20181219224233p:plain

所感セクションでもありますが、ここには権限を与えたリポジトリのみで、検索しても権限を与えていないリポジトリが出るわけではありません。

STEP2: 設定を行う

まず、言語を選択します。

f:id:bobchan1915:20181219224817p:plain

今回はPythonを使ってやっていきます。

詳細設定(Tools)の中では、Pythonを選択すると勝手に選択してくれます。

f:id:bobchan1915:20181219224909p:plain

ここは任せたほうがいいでしょう。

また、テストモードというものを選択できるみたいです。

例えばプルリクエストでコードレビューの結果がStatusとして通らず、Mergeできない、といったような状況を防げます。

f:id:bobchan1915:20181219225145p:plain

プルリクエストがないと以下のようになるそうです。

f:id:bobchan1915:20181219225218p:plain

STEP3: プルリクを出してみる

プルリクを出してみると解析が実行されます。

f:id:bobchan1915:20181219225527p:plain

Siderの中ではIssueとは、コードレビューの結果、問題が潜んでいそうな箇所を指すようです。

f:id:bobchan1915:20181219225623p:plain

幸いに、何も問題はないようです。

f:id:bobchan1915:20181219225704p:plain

プルリクをステータスも以下のようになっていました。

f:id:bobchan1915:20181219225747p:plain

間違ったコードをPushして動作確認

Missspellだけにひっかかてほしいので以下のように間違いを全置換します。

f:id:bobchan1915:20181219231024p:plain

  • default -> defalutとしました。

すると以下のような結果になりました。

f:id:bobchan1915:20181219231122p:plain

問題を修正するためのアクションをとる

問題があると

  • Githubでコメントする
  • その場で「クローズ」する

でアクションを取る必要があります。テストモードではないので、このままだとMergeできません。

f:id:bobchan1915:20181219231348p:plain

Mergeできないのは、とても幸いですが。間違ったコードを統合しなくて済みます。

1. Githubでコメントをする

ボタンを押すと、以下のように確認をする必要があります。

f:id:bobchan1915:20181219231549p:plain

では、権限を渡してみましょう。

f:id:bobchan1915:20181219231530p:plain

するとコメントができるようになって、コメントしてクローズしたりできます。以下のようにコメントができています。

f:id:bobchan1915:20181219231809p:plain

2. 普通にクローズする

特に何もなくクローズできます。

f:id:bobchan1915:20181219231914p:plain

修正してPushする

再度、修正してPushします。

f:id:bobchan1915:20181219232143p:plain

無事、誤字がなくなっています。

所感

よい点

1. 権限を追加して、設定をぽちぽち

いままでの流れでhoeghoge.ymlみたいなのを一切書かずにGUIで勝手にやれました。

非常に導入しやすいです。

2. UIがかわいい

私は炭酸飲料が大好きなので、本プロダクトは可愛いと思ってしまいます。

3. コードにタイポなどの間違いが未然に防げる

ある程度ですが、未然にミスタイプなどのタイポを防ぐことができます。

これはチームが少なくても、チームが大きくても大きな恩恵となるでしょう。

残念な点

1. 最初に特定のリポジトリのみにアクセスをするとGithubから権限を編集する必要がある

例えば以下の状態のときに新しいリポジトリを追加したりしたいとしましょう。

f:id:bobchan1915:20181219223444p:plain

権限を与えてないので追加はできないのですが、まるでリポジトリが存在していなかのように検索ができません

f:id:bobchan1915:20181219223538p:plain
`

そのようなときはGithubにアクセスして設定ページから権限を渡さないといけません。

f:id:bobchan1915:20181219224053p:plain

2. Historyみたいな機能がない

CircleCIのHistoryのように過去の結果がみたいなと思ったときに見られないので辛いです。

こちらはCircleCIのダッシュボードです。

f:id:bobchan1915:20181219232359p:plain

3. 結果のUIがわかりにくい

最初に目に付くトップに完了とあるし、赤くもないので「成功したの!」って思ってしまいます。

f:id:bobchan1915:20181219232637p:plain

最も見やすいところに「結果」を表示してほしいです。

4. コードレビューのツールがわからない

ツールがいくつもありました。

しかし、どれを使うべきかは勝手に選んでくれるとはいえ知識が必要で、結果をみるのにも知識が必要です。

  • 「すべてOK」だったとしても何か、どのくらいの基準でOKだったのか
  • 必要としているコードレビューはできているのか

などテストと違って「そのパッケージが何をしているのか」を知らなければなりません。

テストだったら、テストの範囲は自分で決められていました。

5. 宣言的に書けない

長所の1.と相反しますが、ymlなどで書きたいです。

なぜなら、チーム内では複数の同じ言語のリポジトリなら同じ設定にしたいし、同じルールでレビューしたいからです。

また、チームの外やあらゆる組織で共有したい上に、アップデートの差分などもGithubで管理した方が便利、安全だからです。

まとめ

デメリットの方が項目は多いですが、量ではメリットの方が多いように感じます。

コードレビューは他にもツールがあり、比較となれば以下の記事をご覧ください。

開発効率を上げる!コードレビュー自動化サービス4選を使ってみた【SideCI・Codacy・Hound・Scrutinizer】 - paiza開発日誌

個人的にはプルリクまでを出してくれたり、他にも機能があるRocroの方がまだ使いやすいように感じます。

Rocro

どちらも日本製なので、頑張って欲しいです。

今日はここらへんで終わります。ありがとうございます。