Sonar + Jenkinsは、コード品質の自動分析プラットフォームを構築します

Sonar + Jenkinsは、コード品質の自動分析プラットフォームを構築します

1.ソナー紹介

Sonarは、コードの品質を管理するためのオープンソースツールです。コードのバグや脆弱性、コードの臭いを分析できます。java、c / c ++、python、php、その他の言語など、20を超えるプログラミング言語の検出をサポートしています。現在、 85,000以上自国の組織はソナーを使用しています。SonarはDevOpsツールチェーンと完全に統合でき、ほとんどのビルドツールと統合でき、Jenkins、TFS / VSTS、TeamCity、Bambooなどの継続的インテグレーションエンジンと簡単に統合でき、gitなどの多くのソースコード管理構成ツールをサポートします。 、svn、cvs待機します。
公式アドレス:https//www.sonarqube.org/
2007年には、コードの最初の行が作成されたとき、Sonarの創設者は、いつの日かすべての開発者にプロジェクトコードの品質を測定する機能を提供することを夢見ていました。彼のモットーは、「継続的テストは継続的インテグレーションの主流にならなければならない」です。
この記事の目的は、ソナーをインストールしてJenkinsに統合し、コードの継続的な品質監視を実現することです。

2.ソナーの取り付け

2.1。インストール環境の概要

注:ソナーサーバーを効果的に実行するには、少なくとも2Gのメモリが必要ですが、オペレーティングシステムには1GBの使用可能なメモリが必要です。

  • Centos 7.2
  • JDK1.8をインストールします
  • Jenkins2.89をインストールします
  • maven 3.5.2をインストールします(不要、一部のプラグインのコンパイルに使用)
  • mysql 5.6データベースをインストールします(必要なバージョン、5.6以上)

mysqlをインストールした後、次のようにsonarデータベースとアカウントを作成します。

CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;

2.2.SonarQubeのインストール

cd /data/package/
wget https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-6.6.zip
mkdir /data/service/sonar/
unzip sonarqube-6.6.zip -d /data/service/sonar/

起動スクリプトを構成します。

[root@c7-node1 ~]# cat /etc/init.d/sonar
#!/bin/sh
#
# rc file for SonarQube
#
# chkconfig: 345 96 10
# description: SonarQube system (www.sonarsource.org)
#
### BEGIN INIT INFO
# Provides: sonar
# Required-Start: $network
# Required-Stop: $network
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description: SonarQube system (www.sonarsource.org)
# Description: SonarQube system (www.sonarsource.org)
### END INIT INFO
/usr/bin/sonar $*

起動スクリプトの実行権限を承認し、パスを構成します

chmod +x /etc/init.d/sonar
ln -s /data/service/sonar/sonarqube-6.6/bin/linux-x86-64/sonar.sh /usr/bin/sonar
chkconfig sonar on

構成ファイルを変更します

[root@c7-node1 ~]# cd /data/service/sonar/sonarqube-6.6/conf/
[root@c7-node1 conf]# cp sonar.properties{,.bak}
sonar.jdbc.username=sonar
sonar.jdbc.password=123456
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false

2.3.SonarQubeスキャナーのインストール

cd /data/package/
wget https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-2.8.zip
unzip sonar-scanner-2.8.zip -d /data/service/sonar/
ln -s /data/service/sonar/sonar-scanner-2.8/bin/sonar-scanner /usr/bin/sonar-scanner

構成ファイルを変更します

[root@c7-node1 ~]# cd /data/service/sonar/sonar-scanner-2.8/conf/
[root@c7-node1 conf]# cp sonar-scanner.properties{,.bak}
[root@c7-node1 conf]# vim sonar-scanner.properties
sonar.jdbc.username=sonar
sonar.jdbc.password=123456
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8

2.4.SonarQubeランナーのインストール

cd /data/service/
wget http://repo1.maven.org/maven2/org/codehaus/sonar/runner/sonar-runner-dist/2.4/sonar-runner-dist-2.4.zip
unzip sonar-runner-dist-2.4.zip -d /data/service/sonar/
ln -s /data/service/sonar/sonar-runner-2.4/bin/sonar-runner /usr/bin/sonar-runner

構成ファイルを変更します

[root@c7-node1 ~]# cd /data/service/sonar/sonar-runner-2.4/conf/
[root@c7-node1 conf]# cp sonar-runner.properties{,.bak}
[root@c7-node1 conf]# vim sonar-runner.properties
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8
sonar.jdbc.username=sonar
sonar.jdbc.password=123456

環境変数を追加する

[root@c7-node1 ~]# vim /etc/profile.d/sonar.sh
export SONAR_HOME=/data/service/sonar/sonarqube-6.6
export SONAR_RUNNER_HOME=/data/service/sonar/sonar-runner-2.4
export PATH=$SONAR_RUNNER_HOME/bin:$PATH
[root@c7-node1 ~]# source /etc/profile.d/sonar.sh

2.5。ソナーを開始する

注:Sonarは、デフォルトではrootユーザーとして開始することは許可されていないため、sonarユーザーを作成し、sonarユーザーとして開始する必要があります。

[root@c7-node1 ~]# useradd sonar
[root@c7-node1 ~]# chown -R sonar:sonar /data/service/sonar/
[root@c7-node1 ~]# su sonar
[sonar@c7-node1 root]$ /etc/init.d/sonar start

ソナーが正常に開始されたら、サーバーの9000ポートにアクセスしてソナーWebインターフェースを開くことができます。デフォルトのアカウントとパスワードはadmin:adminです。注:デフォルトでは、rootユーザーがソナーを開始することは許可されていないため、次のことを行う必要があります。ソナーユーザーを作成し、ソナーユーザーとして起動します。
Sonar + Jenkinsは、コード品質の自動分析プラットフォームを構築します
ソナーのインストールが成功したことを示す次のページが表示されます。ソナーのインストールが失敗した場合は、ログのエラー内容に従って確認してください。

3.Sonarプラグインの使用法とローカリゼーション

Sonarは、プラグインをインストールすることで機能を拡張できます。具体的な情報については、Sonarのプラグインライブラリにアクセスしてください。このライブラリには、多くのコード分析プラグイン、認証および承認プラグイン、外部分析プラグイン、言語プラグインが含まれています。 、視覚化/レポートプラグインなど。以下では、ソナーおよびその他の中国語プラグインをインストールすることにより、ソナープラグインのインストールを示します。
Sonarのプラグインライブラリ:https//docs.sonarqube.org/display/PLUG/Plugin+Library
3.1。バックグラウンドで中国語のプラグインをインストールし、
ソナーにログインした後、[管理]-> [システム]で中国語を検索します。 >アップデートセンター–>「中国語のプラグインパッケージに移動し、「インストール」をクリックしてインストールします」を参照してください。ただし、インストール時間は非常に遅く、失敗することもあります。手動でインストールすることをお勧めします。
Sonar + Jenkinsは、コード品質の自動分析プラットフォームを構築します
3.2。プラグインの
中国のプラグインgithubアドレスを手動でインストールします:https//github.com/SonarQubeCommunity/sonar-l10n-zh
中国のプラグインのソースコードをローカルにダウンロードし、対応するバージョンに切り替えます(私がインストールしたsonar6.6バージョン、コンパイルするには1.18tagに切り替える必要があります)

git clone https://github.com/SonarQubeCommunity/sonar-l10n-zh.git
cd sonar-l10n-zh/
git checkout sonar-l10n-zh-plugin-1.18
mvn package
cp target/sonar-l10n-zh-plugin-1.18-SNAPSHOT.jar /data/service/sonar/sonarqube-6.6/extensions/plugins/

中国語のプラグインをソナープラグインディレクトリにコピーした後、ソナーを再起動して有効にします。ソナーを再起動した後
、Web検証効果にアクセスする
Sonar + Jenkinsは、コード品質の自動分析プラットフォームを構築します
と、中国語のプラグインが正常にインストールされていることがわかります。他のプラグインをインストールする必要がある場合プラグインについては、公式のプラグインライブラリに直接アクセスしてください。検索してインストールしてください。
4. Pythonコードの
ソナー分析の小さな例ローカリゼーションのインストールが完了した後、ソナーを使用してコードを分析できます。Pythonコードを分析するための小さな例を用意して、コードのソナー分析のプロセスを示します。
例:私のPythonプロジェクトはバージョン3.0を使用して開発されていますが、2.0構文を使用して、sonarがそれを分析できるかどうか試してみましょう(sonarにはPython 3.0分析プラグインが組み込まれているため、インストールする必要はありません)。デモスクリプトは1つだけで、機能はメールを送信することであり、その中の印刷は2.0構文であり、3.0環境では正常に実行できません。このスクリプトを分析して、ソナーのコード分析のプロセスを示します。

[sonar@c7-node1 ~]$ cat python_test/sendEmail.py
#!/usr/bin/python
# -*- coding: UTF-8 -*-

import sys
import smtplib
from email.mime.text import MIMEText
from email.header import Header

# 第三方 SMTP 服务
mail_host="xxx" #设置服务器
mail_user="xxx" #用户名
mail_pass="xxx" #口令

sender = '[email protected]'
receivers = sys.argv[1]

content=sys.argv[3]
message = MIMEText(content, 'plain', 'utf-8')

message['From'] = Header(sender, 'utf-8')
message['To'] = Header(receivers, 'utf-8')

subject = sys.argv[2]
message['Subject'] = Header(subject, 'utf-8')

try:
smtpObj = smtplib.SMTP()
smtpObj.connect(mail_host, 25) # 25 为 SMTP 端口号
smtpObj.login(mail_user,mail_pass)
smtpObj.sendmail(sender, receivers, message.as_string())
print "邮件发送成功"
except smtplib.SMTPException:
print "Error: 无法发送邮件"

プロジェクトのルートディレクトリに構成ファイルsonar-project.propertiesを作成します。プロジェクトがsonarで作成されていない場合、最初の分析は構成ファイルに入力された名前とキーに従って自動的に作成されます。

[sonar@c7-node1 ~]$ cat python_test/sonar-project.properties
sonar.projectKey=python_test
sonar.projectName=python_test
sonar.projectVersion=1.0
sonar.sources=.
sonar.sourceEncoding=UTF-8

プロジェクトのルートディレクトリで次のコマンドを実行して、分析を開始します

sonar-scanner

スキャンが完了したら、Webページを再度開いて、ソナーが構成ファイルに入力されたコンテンツに基づいてpython_testプロジェクトを自動的に作成し、2つのバグを分析したことを確認できます。

Sonar + Jenkinsは、コード品質の自動分析プラットフォームを構築します
プロジェクト名をクリックすると、プロジェクトを入力し、プロジェクトの詳細な分析情報を表示し、
Sonar + Jenkinsは、コード品質の自動分析プラットフォームを構築します
バグをクリックして、特定のバグ情報を確認できます。バグ情報は、Pythonの印刷に問題があることがわかります。ステートメント

Sonar + Jenkinsは、コード品質の自動分析プラットフォームを構築します
Sonarはバグを見つけるだけでなく、なぜ間違っているのかを教えてくれ、正しい例を示します。
バグの特定の情報を確認してくださいつまり、printステートメントがpython3.0で削除されたとしましょう。組み込み関数を使用する必要があり、正しい例が示されています。

Sonar + Jenkinsは、コード品質の自動分析プラットフォームを構築します

5.SonarはJenkinsを統合して使用します


5.1.sonarにトークン設定するadminユーザーを使用してsonarQubeにログインします。[構成]-> [権限]-> [ユーザー]

Sonar + Jenkinsは、コード品質の自動分析プラットフォームを構築します

Sonar + Jenkinsは、コード品質の自動分析プラットフォームを構築します
5.2。Jenkinsは、ソナー関連のプラグインを
インストールして、2つのプラグインを赤いボックスインストールします

Sonar + Jenkinsは、コード品質の自動分析プラットフォームを構築します
5.3.Jenkins構成ソナープラグイン
[システム管理]-> [システム設定]クリックしますソナー認証情報を構成し、設定後に保存します

Sonar + Jenkinsは、コード品質の自動分析プラットフォームを構築します
[システム管理]-> [グローバルツール構成]をクリックし、ソナースキャナー情報を構成します

Sonar + Jenkinsは、コード品質の自動分析プラットフォームを構築します
5.4。Jenkinsジョブでソナー
構成します。操作の便宜のために、今すぐコードをgitに入れてプルするのではなく、作業ディレクトリをpython_testディレクトリとして直接構成します。本番環境の場合は、svnから選択できます。またはgitを使用して、分析するコードを取得します

Sonar + Jenkinsは、コード品質の自動分析プラットフォームを構築します
ビルドステップを追加し、[SonarQubeスキャナーの実行]を選択し、分析するjdkを選択して、手動でスキャンしたsonar-project.properties構成ファイルとして分析プロパティを入力します。

Sonar + Jenkinsは、コード品質の自動分析プラットフォームを構築します
このようにして、Jenkinsのソナー部分が構成されます。建設のためにジョブを保存できます。建設が完了したら、下の図に示すように、建設履歴を介してソナーに直接ジャンプして分析ページに移動できます。ジェンキンスの仕事の完全な内容と建設ビデオで。

Sonar + Jenkinsは、コード品質の自動分析プラットフォームを構築します

6.追記

これでこの記事は終わりです。プロジェクト管理、セキュリティ、監視、メール通知など、ソナーの内容の一部は記事に記載されていませんが、中国語版以降のソナーの管理はもっと多いと思います。便利で操作が簡単です。ここでは、バックグラウンドにログインして自分で探索できます。
sonar + Jenkinsの仕事はあまり包括的ではなく、自動コード取得とリリースの構成が不足していることもありますが、sonarの構成は正しいので、コードを取得した後、最初の操作に追加するだけで済みます。またはコンパイル前の操作を実行できます。

文章系作者原创投稿。作者:西门飞冰,一名90后it男,一直在北京工作,热爱运动,热爱冒险,热爱旅行。  原文地址:http://www.fblinux.com/?p=1155。

おすすめ

転載: blog.51cto.com/15127557/2665963
おすすめ