SonarQubeをDockerで動かしてNode.jsのプロジェクトをスキャンしてみた

こんにちは。PS/SLの佐々木寛太です。
今回はコードの静的解析ツールであるSonarCubeをDockerで動かしてNode.jsのプロジェクトをスキャンする手順を紹介したいと思います。

SonarCubeとは

SonarQubeはオープンソースの品質管理プラットフォームです。

  • 重複コードの検出
  • サイクロマチック数の計測
  • 脆弱性のあるコードの検出
  • バグを誘発しそうなコードの検出
  • 指摘されたissueの管理

SonarCubeでは上記のようなポイントの解析をしてくれコードレビューの手間を一定省くことができます。
では早速SonarCubeの環境構築手順を紹介していきます。
大まかな手順は以下の通りです。

手順を記載する

手順1:SonarCubeをDockerで起動す


SonarQubeは公式イメージが公開されています。
https://hub.docker.com/_/sonarqube
今回はこちらのイメージを使用します。

docker run -p 9000:9000 --name sonarqube -d --restart always -it sonarqube:lts

 docker psコマンドでstatus がUPになっていればOKです。

 docker ps 
 CONTAINER ID IMAGE  COMMAND CREATED STATUS PORTS NAMES
 0487914bc969 sonarqube:lts "bin/run.sh bin/sona…" About a minute ago Up About a minute 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp sonarqube

そうしたらlocalhost:9000, VM上で起動している人はvmのIp:9000でブラウザでSonarCubeを立ち上げます。

手順2:SonarCubeでプロジェクトの作成


まずログインを行いパスワードの変更を行います。
始めのログイン情報はユーザー名:admin パスワード:admin
です。

ヘッダーより “Projects” を押下します。

画面中央に “Add a project” ボタンが現れますので、それを押下します。

一番左の “Manually” を押下します。

プロジェクトを作成します。

  • “Project Key”(プロジェクトの名前)を入力します。
  • “Display name” は自動入力されます。
  • “Set Up” ボタンを押下し、次に進みます

Project keyは任意のもので大丈夫です。

のちほど設定するSonar-scannerが、SonarQubeのアクセスするためのトークンを作成します。

ユーザー名(任意)を入力し、”Generate” ボタンを押下します。

トークンが生成されたらcontinueを押下します。

手順3:Sonar-scannerのインストール


トークン生成後解析する言語を選択します。
今回はnode.jsを解析したいのでotherを選択しOSはLinuxを選択します。

中央に、”Visit the official documentation of the Scanner to download the latest version, and add the bin directory to the PATH environment variable” とありますので、リンクから、公式のSonar-scannerのDocumentへ遷ります。

Documentの “Linux64-bit” のリンクをコピーします。

ではSonarCubeのコンテナからSonar-scannerをダウンロードします。
SonarCubeのコンテナにログインする
docker exec -it -u root sonarqube bash

以下コンテナ内で実行するコマンド
必要なライブラリをインストールしていきます。

apk update 
apk upgrade 
apk add wget unzip vim git

インストールが終わったら、Sonar-scannerのzipファイルを wget でダウンロードします。

wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.7.0.2747-linux.zip

インストールしたzipファイルを解凍します。

unzip https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.7.0.2747-linux.zip

sonar-scannerコマンドが使えるように .bashrcファイルにPATHの設定をします。

vim ~/.bashrc
export PARH="$PATH:/opt/sonarqube/sonar-scanner-4.7.0.2747-linux/bin"

設定し終えたら、.bashrcファイルを再読み込みします。

source ~/.bashrc

手順4:コード解析準備


  1. sonarqubeコンテナに解析したいソースコードを置く
  2. ディレクトリは/opt/sonarqube
  3. 解析するディレクトリに入る
  4. sonarqubeのコンテナに入りnode.jsをインストールする

ローカルからDockerコンテナにファイルをコピーはこんな感じでできます。

docker ps  コンテナIDを調べる
docker cp ./node-practice.js <コンテナID>:/node-practice/node-practice.js

手順5:sonarqubeのコンテナにnode.jsをインストールする


nvmをinstallする

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash

nvmでnodeをinstall

nvm install 14.16.0(使用したいnode.jsのバージョンを入れる)
nvm use 14.16

*上記のコマンドはSonarCubeのコンテナ内で実行する

手順6:コードの解析


解析するソースコードのあるディレクトリに移動しSonarQubeの画面に表示されているSonar-scannerコマンドをコピペして実行します。 EXECUTION SUCCESSという表記が出たら解析完了です。

手順7:解析結果を確認


SonarCubeの画面に戻ると解析結果が表示されています。

本記事では環境構築方法なので解析結果の詳細については言及しませんが、以下の画像のように、結果の詳細が表示され、リスクや解決方法まで提示してくれコードの品質やセキュリティリスクを自動的に検出することができます。

SonarCubeの詳細な設定や解析結果の見方については別記事で投稿します!
是非自身のプロジェクトを一度SonarCubeでスキャンしてみてください。

 

 

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です