きょろきょろ(๑´• ₃ •̀๑)

特にWeb系についてのことを書いていきたいと思います。 基本的にメモ書きみたいなものです。

スダシュウゴ先生にコードレビューしてもらおう!

はじめに

本記事はスダ Advent Calendar 2017 - Adventar の10日目の記事です.

どうも,唯一スダベントカレンダーの中でスダさんと同じ茨城県にいるツルえもんです.

皆さんコードレビューとかってしたことありますでしょうか?また,コードレビューしてもらったこともあるかもしれません.
今回はスダさんにそのコードレビューをしてもらいましょう!

コードレビューの仕方

今回コードレビューをする場所としてはGitHub上で行いました.
また,コードレビューをしてくれるようなものとしてSonarQubeというものを利用しました.
SonarQubeはSwiftやTypeScript,Java,C,C++JavaScriptなどの言語で書かれたソースコードの品質を教えてくれるものです!

sonarqube.org

スダさんのサムネ探し

まず初めにコードレビューをしてくれるスダさんのサムネを探ししました!
f:id:ferretdayo:20171210113720p:plain

ということで,1分ぐらいで以下をサムネにすることを決めました.

f:id:ferretdayo:20171210114109p:plain

SonarQubeの利用

今回はJavaのプロジェクトで利用し,Travis-CI上でSonarQubeを実行し,GitHubのPull Requestにスダさんのコードレビュー結果を通知させるようにしました.

GitHubアカウントの作成とトークン生成

まずスダさんのGitHubのアカウントを作成しましょう.

f:id:ferretdayo:20171210115005p:plain

作ったら,Settingsから先程選択したスダさんのサムネを設定しましょう

f:id:ferretdayo:20171210115213p:plain

その後,GitHubのパーソナルアクセストークンを取得します.場所は,Settings > Developer settingsにあります.

f:id:ferretdayo:20171210115531p:plain

右上の`Generate new token`を押して,repoの部分のみチェックしてトークンを生成しましょう!

f:id:ferretdayo:20171210115721p:plain

ここのアクセストークを大事に持っておきましょう.

f:id:ferretdayo:20171210120051p:plain

SonarCloudでトークン生成

SonarQubeを利用するのにSonarCloud(https://sonarcloud.io)を利用する必要があります.
そこで,GitHubと同様にSonarCloudでもトークンを作成します.
下にあるGenerate New Tokenからトークンを生成します.
ここで作成したトークンも大事に持っておきましょう.

f:id:ferretdayo:20171210120408p:plain

Travis-CIでの設定

次に,Travis-CI上でSonarQubeを利用するための設定を行います.
やることとしては,以下の3つです.

  1. .travis.ymlの設定
  2. SonarQubeの実行コマンドの設定
  3. Travis-CI上でSettingsで先程作ったトークンを設定


まず初めに,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を設定します.

f:id:ferretdayo:20171210122248p:plain

これで恐らくSonarQubeが利用できるようになりました.

実際に動かしてみる

Pull Requestを出して,実際に動かしてみるとこんな感じになりました

f:id:ferretdayo:20171210124020p:plain

これだとimportを消しましょうという指摘をスダシュウゴ先生がしてくれます!

これ以外にも,以前直しましょうという指摘が残っていたら,堪能な英語で以下のように教えてくれます.

f:id:ferretdayo:20171210125116p:plain

やったねっ😊

参考文献

qiita.com