スダシュウゴ先生にコードレビューしてもらおう!
はじめに
本記事はスダ Advent Calendar 2017 - Adventar の10日目の記事です.
どうも,唯一スダベントカレンダーの中でスダさんと同じ茨城県にいるツルえもんです.
皆さんコードレビューとかってしたことありますでしょうか?また,コードレビューしてもらったこともあるかもしれません.
今回はスダさんにそのコードレビューをしてもらいましょう!
コードレビューの仕方
今回コードレビューをする場所としてはGitHub上で行いました.
また,コードレビューをしてくれるようなものとしてSonarQubeというものを利用しました.
SonarQubeはSwiftやTypeScript,Java,C,C++,JavaScriptなどの言語で書かれたソースコードの品質を教えてくれるものです!
スダさんのサムネ探し
まず初めにコードレビューをしてくれるスダさんのサムネを探ししました!
ということで,1分ぐらいで以下をサムネにすることを決めました.
SonarQubeの利用
今回はJavaのプロジェクトで利用し,Travis-CI上でSonarQubeを実行し,GitHubのPull Requestにスダさんのコードレビュー結果を通知させるようにしました.
GitHubアカウントの作成とトークン生成
まずスダさんのGitHubのアカウントを作成しましょう.
作ったら,Settingsから先程選択したスダさんのサムネを設定しましょう
その後,GitHubのパーソナルアクセストークンを取得します.場所は,Settings > Developer settingsにあります.
右上の`Generate new token`を押して,repoの部分のみチェックしてトークンを生成しましょう!
ここのアクセストークを大事に持っておきましょう.
SonarCloudでトークン生成
SonarQubeを利用するのにSonarCloud(https://sonarcloud.io)を利用する必要があります.
そこで,GitHubと同様にSonarCloudでもトークンを作成します.
下にあるGenerate New Tokenからトークンを生成します.
ここで作成したトークンも大事に持っておきましょう.
Travis-CIでの設定
次に,Travis-CI上でSonarQubeを利用するための設定を行います.
やることとしては,以下の3つです.
まず初めに,Travis-CIの設定ファイルの.travis.ymlの設定をします.
language: groovy jdk: oraclejdk8 script: - ./mvnw test after_success: 'sh ./sonar.sh ${TRAVIS_PULL_REQUEST} ${SONAR_TOKEN} ${GITHUB_TOKEN}'
こんな感じに設定します.Travisでテストが成功したとき(after_success)に,コードレビューの実行(sh ./sonar.sh)がされるようにしています.${}で囲まれている変数は,Travis-CIのSettingsで設定できます.また,TRAVIS_PULL_REQUESTについては,Travisが提供している変数です.
詳しくはこちら → https://qiita.com/yoheimuta/items/64b8bd51a8fa4cb1b57d
次に,SonarQubeの実行コマンドの設定です.
今回,SonarQubeを実行する処理を./sonar.shに書いているので,以下にshellを示します.
#!/bin/bash PULLS_NUMBER=$1 SONAR_TOKEN=$2 GITHUB_TOKEN=$3 if [ $PULLS_NUMBER = 'false' ]; then exit fi mvn clean install sonar:sonar -Dmaven.test.skip=true -Dclirr=true -Dsonar.host.url=https://sonarqube.com -Dsonar.login=${SONAR_TOKEN} -Dsonar.sourceEncoding=UTF-8 -Dsonar.analysis.mode=issues -Dsonar.github.pullRequest=${PULLS_NUMBER} -Dsonar.github.oauth=${GITHUB_TOKEN} -Dsonar.github.repository=ここに対象レポジトリ
次に,Travis-CI上でSettingsで先程作ったトークンを設定です.
赤枠のところに,取得したGITHUB_TOKENとSONAR_TOKENを設定します.
これで恐らくSonarQubeが利用できるようになりました.
実際に動かしてみる
Pull Requestを出して,実際に動かしてみるとこんな感じになりました
これだとimportを消しましょうという指摘をスダシュウゴ先生がしてくれます!
これ以外にも,以前直しましょうという指摘が残っていたら,堪能な英語で以下のように教えてくれます.
やったねっ😊