こんにちは。本日より、非常に大きな新しい機能のベータ提供を開始しました。
この機能はまだベータ版であり、正式な名称が決まっていないことから、社内でのプロジェクト名「アビシニアン」にてご紹介させて頂きます。
アビシニアンについて
アビシニアンは、既存のSideCIの「問題が発見された場合にGitHubにコメントをする」というコア機能(※)を置き換える試験的な機能です。
※本記事内では該当機能を「コメントモード」と記載します。
コメントモードでご利用の場合、GitHub上でSideCIからのコメントをレビュアー、もしくはレビュイーの方が確認し、コードを修正するか、コメントをそのプルリクエストにおいては目をつぶるといった運用ケースが多いかと思います。
これをより厳密に、かつ現実に即した形で使いやすくした機能がアビシニアンです。
アビシニアンでは次のような形でSideCIを使って頂く事を想定しています。
- Pull RequestをOpenする
- SideCIから指摘が届いた場合、解析結果をレビュイーが確認する
- 指摘結果を元にコードを修正、もしくは修正しないことを明示する
この流れになることで、全てのコメントへの対応・非対応が厳密に、かつ簡単に管理されます。
解析結果の通知
アビシニアンでは、1件以上の指摘が該当のプルリクエスト上で発見された場合、GitHubやSlackに次のように解析結果が通知されます。
GitHub上ではFailedの扱いになり、必ず何らかの対応をする必要があります。
通知イメージ(GitHub)
通知イメージ(Slack)
必要なアクション
解析結果を見た後、次の3つのアクションのいずれかを行う事ができます。
- 指摘に則しコードを修正する
- 指摘に対してGitHubにコメントする
- 指摘をクローズする
全ての指摘が修正されるか、もしくは、クローズされた場合、GitHubにSuccessのステータスが通知され、マージ可能な状態になります。
アビシニアンの利用画面
指摘には「OPEN」「CLOSED」「FIXED」の3つの状態があり、始めは全て「OPEN」として表示されます。 コードの修正を行った場合には自動的に「FIXED」にカテゴライズされます。 全ての問題が修正された場合には自動的にGitHubにsuccessの通知が行われ、マージが可能になります。
指摘画面のイメージ
CLOSEDのユースケース
解析ツールの一部には絶対のルールではなく、サジェスチョンとして、解析結果を出力します。 それらはあくまでサジェスチョンであり、対応するかどうかはそのシーンごとに異なります。もし対応が不要な場合には「クローズ」することが出来ます。
例えば、SideCIのメンバーで開発している、レビューの自動化のための解析ツールである Querly(for Ruby) は問題になりやすいコードなどを発見し、注意を促す事ができます。注意を促したいパターンをyamlファイルに記載し、それを見つけた場合に、予め記載された内容をサジェスチョンします。次のケースでは delete_all
メソッドの利用について注意を促しています。注意を理解した上で delete_all
の使用する場合、指摘を「クローズ」することが出来ます。
「クローズ」及び「コメントしてクローズ」
「コメント」、もしくは「コメントしてクローズ」を行った場合、指摘の内容と、入力した内容がGitHubにコメントされます。多くの場合、クローズする意図を「コメントしてクローズ」する事が望ましいです。
GitHubへの通知イメージ
「クローズ」についてはGitHubにはコメントされませんが、何がクローズされた情報なのかはSideCI上でいつでも確認することが可能です。
「コメント」ボタンより、コメントだけしてクローズしない動作をすることが出来ます。これは、レビュアーの方の意見をもとめる場合など、議論を必要とすると思われる内容についてなどに主に利用します。もしくは、「直ぐに対応します」など、対応することを明示する事に使う事もあります。
これらの機能によって、レビュアーはSideCIによってどんな指摘がされたのか、そしてそれがなぜ未修正なのかをGitHub上から確認することが出来、レビューはGitHub上で完結します。アビシニアンによってレビュアーはより本質的なレビューに集中出来るようになります。
アビシニアンモード、コメントモードの変更方法について
アビシニアンモードとコメントモードはいつでも切り替える事が出来ます。設定はプロジェクト設定内の「アビシニアンモード(β)」タブより行って下さい。
注意点
本機能は現在ベータ版として提供しております。もし問題が発生した場合には、上述の方法によってコメントモードにお戻しいただけますようお願い致します。 また、ベータ版としての提供のため、一部の機能がアビシニアンモードでは動作しません。予めご了承下さい。 動作しない機能は下記のとおりです。
- 日本語翻訳モードの利用
- Auto Correct(コードの自動修正機能)の利用
- Gometalinterでの依存パッケージの解決
また、下記に記載の一部の解析ツールはアビシニアンモードでは未対応です。今後対応を進めて参ります。
- CoffeeLint
- TSLint
- SCSS-Lint
- HAML Lint
- BundlerOutdated
- ComposerOutdated
- MethodDefinitionValidator
また、PHP言語については、アビシニアンモードでは極めて実験的なサポートに留まっております。
ベータ版へのご協力依頼
本機能はユーザ様方のご利用ワークフローを変えることになる大きな変更のため、ご利用頂きました方々に個別にヒアリングへのご協力の依頼を行わせて頂く場合がございます。ご協力頂けましたら幸いです。