Siderでコードレビューを自動化してプロジェクトのエントロピーを維持する
本記事
本記事では自動コードレビューができるSider(旧SideCI)を使ってみようかなとおもいます。
よくミスタイプとかして、それを修正するプルリクが必要になったりするとプロジェクトのエントロピーが圧倒的に増大するので防ぐためにも導入してみます。
インストール手順
STEP1: 許可するリポジトリを選択する
まず、最初に以下のような画面になります。
ここで「Add a new organization」を選んでリポジトリを追加しましょう。
そして許可するとSTEP1が始まります。
所感セクションでもありますが、ここには権限を与えたリポジトリのみで、検索しても権限を与えていないリポジトリが出るわけではありません。
STEP2: 設定を行う
まず、言語を選択します。
今回はPythonを使ってやっていきます。
詳細設定(Tools)の中では、Pythonを選択すると勝手に選択してくれます。
ここは任せたほうがいいでしょう。
また、テストモードというものを選択できるみたいです。
例えばプルリクエストでコードレビューの結果がStatusとして通らず、Mergeできない、といったような状況を防げます。
プルリクエストがないと以下のようになるそうです。
STEP3: プルリクを出してみる
プルリクを出してみると解析が実行されます。
Siderの中ではIssueとは、コードレビューの結果、問題が潜んでいそうな箇所を指すようです。
幸いに、何も問題はないようです。
プルリクをステータスも以下のようになっていました。
間違ったコードをPushして動作確認
Missspell
だけにひっかかてほしいので以下のように間違いを全置換します。
default
->defalut
としました。
すると以下のような結果になりました。
問題を修正するためのアクションをとる
問題があると
- Githubでコメントする
- その場で「クローズ」する
でアクションを取る必要があります。テストモードではないので、このままだとMergeできません。
Mergeできないのは、とても幸いですが。間違ったコードを統合しなくて済みます。
1. Githubでコメントをする
ボタンを押すと、以下のように確認をする必要があります。
では、権限を渡してみましょう。
するとコメントができるようになって、コメントしてクローズしたりできます。以下のようにコメントができています。
2. 普通にクローズする
特に何もなくクローズできます。
修正してPushする
再度、修正してPushします。
無事、誤字がなくなっています。
所感
よい点
1. 権限を追加して、設定をぽちぽち
いままでの流れでhoeghoge.yml
みたいなのを一切書かずにGUIで勝手にやれました。
非常に導入しやすいです。
2. UIがかわいい
私は炭酸飲料が大好きなので、本プロダクトは可愛いと思ってしまいます。
3. コードにタイポなどの間違いが未然に防げる
ある程度ですが、未然にミスタイプなどのタイポを防ぐことができます。
これはチームが少なくても、チームが大きくても大きな恩恵となるでしょう。
残念な点
1. 最初に特定のリポジトリのみにアクセスをするとGithubから権限を編集する必要がある
例えば以下の状態のときに新しいリポジトリを追加したりしたいとしましょう。
権限を与えてないので追加はできないのですが、まるでリポジトリが存在していなかのように検索ができません。
そのようなときはGithubにアクセスして設定ページから権限を渡さないといけません。
2. Historyみたいな機能がない
CircleCIのHistoryのように過去の結果がみたいなと思ったときに見られないので辛いです。
こちらはCircleCIのダッシュボードです。
3. 結果のUIがわかりにくい
最初に目に付くトップに完了とあるし、赤くもないので「成功したの!」って思ってしまいます。
最も見やすいところに「結果」を表示してほしいです。
4. コードレビューのツールがわからない
ツールがいくつもありました。
しかし、どれを使うべきかは勝手に選んでくれるとはいえ知識が必要で、結果をみるのにも知識が必要です。
- 「すべてOK」だったとしても何か、どのくらいの基準でOKだったのか
- 必要としているコードレビューはできているのか
などテストと違って「そのパッケージが何をしているのか」を知らなければなりません。
テストだったら、テストの範囲は自分で決められていました。
5. 宣言的に書けない
長所の1.と相反しますが、yml
などで書きたいです。
なぜなら、チーム内では複数の同じ言語のリポジトリなら同じ設定にしたいし、同じルールでレビューしたいからです。
また、チームの外やあらゆる組織で共有したい上に、アップデートの差分などもGithubで管理した方が便利、安全だからです。
まとめ
デメリットの方が項目は多いですが、量ではメリットの方が多いように感じます。
コードレビューは他にもツールがあり、比較となれば以下の記事をご覧ください。
開発効率を上げる!コードレビュー自動化サービス4選を使ってみた【SideCI・Codacy・Hound・Scrutinizer】 - paiza開発日誌
個人的にはプルリクまでを出してくれたり、他にも機能があるRocroの方がまだ使いやすいように感じます。
どちらも日本製なので、頑張って欲しいです。
今日はここらへんで終わります。ありがとうございます。