導入
SonarQube は、コード品質管理のためのオープンソースツールであり、静的コード検査です。 a> ツールは、B/S アーキテクチャを使用しており、主にソース コードの品質を管理するために使用され、php、java、C#、go、C/C++、Cobol、などの多くのコンピューター言語をサポートできます。 JavaScrip、Groovy など。 sonar は、PMD、CheckStyle、Findbugs などのコード ルール検出ツールを通じてコードを検出し、コードの脆弱性、バグ、臭気、その他の情報の発見に役立ちます。
コードの品質は、次の 7 つの側面から検出できます。
1) 複雑さの分布 (complexity): コードが複雑すぎると理解するのが難しくなります。
2) 重複: プログラムには大量のコピー アンド ペーストされたコードが含まれており、その結果コードが肥大化しており、Sonar ではソース コード内の重大な重複が表示される場合があります。
3) 単体テスト統計 (単体テスト): 単体テストのカバレッジを統計的に表示し、開発またはテストでテストコードのカバレッジを明確に把握できます。
4) コーディングルール: コードが仕様に準拠しているかどうかを Findbugs、PMD、CheckStyle などを通じて確認します。
5) コメント率(コメント):コードコメントが少なすぎると、特に人事異動後は他の人が引き継ぎにくくなり、多すぎると読みにくくなります。
6) 潜在的なバグ: Findbugs、PMD、CheckStyle などを通じて潜在的なバグを検出します。
7) アーキテクチャと設計: ループを見つけ、パッケージとクラス間の依存関係を表示し、プログラム間の結合を確認します。
建築
SonarQube プラットフォームは 4 つのコンポーネントで構成されます。
1) SonarQube サーバーは 3 つの主要プロセスを開始します。
-
開発者、管理者用の Web サーバー高品質のスナップショットを参照し、SonarQube インスタンスを構成する
-
Elasticsearch ベースの検索サーバーは UI からの検索をサポートします
-
Compute Engine サーバーは、コード分析レポートを処理し、SonarQube データベースに保存する役割を果たします。
2) ストレージ用の SonarQube データベース:
- SonarQube インスタンスの構成 (セキュリティ、プラグイン設定など)
- プロジェクト、ビューなどの高品質のスナップショット。
3) 言語、SCM、統合、認証などを含む複数の SonarQube プラグインがサーバーにインストールされます。
4) ビルド/継続的統合サーバー上で 1 つ以上の SonarScanner を実行してプロジェクトを分析します
統合
1) 開発者は IDE でコーディングし、SonarLint を使用してローカル分析を実行します。
2) 開発者は、Git などのコード管理リポジトリにコードをプッシュします。
3) Jenkens などの継続的統合サーバーを通じて、 sonar-scanner
コード分析に使用します
4) 分析レポートは、処理のために SonarQube サーバーに送信されます。
5) SonarQube Server は、分析レポートの結果を処理して SonarQube データベースに保存し、結果を UI に表示します。
6) 開発者は、SonarQube UI を通じて問題をレビューし、コメントし、異議を申し立て、技術的負債を管理および削減します。
7) API を使用して構成を自動化し、SonarQube からデータを抽出します。
ソナーを設置する
この記事でインストールされているバージョンは SonarQube 7.6 です。現在の最高バージョン (2021 年 7 月 27 日 10:29:21) SonarQube 9.0。2019 年 4 月 10 日に、SonarQube は 7.9 以降、すべての SonarQube バージョンのサポートが停止されるという記事を発行しました。 MySQL。
2)Java 1.8
3)Mysql5.6
CentOs6.9 のインストールについては ブログを参照してください。
インストール後、次の URL を開くことができます。
ソナースキャナーをインストールする
この記事ではコード分析に Sonar-scanner を使用します
-
環境に応じて ダウンロードします。この記事では Linux システムを例として取り上げます
-
sonar-scanner-cli-4.6.2.2472-linux.zip ファイルを仮想マシンまたはサーバーにアップロードします。
-
解凍する
`unzip sonar-scanner-cli-4.6.2.2472-linux.zip`
-
sonar-scanner-4.6.2.2472-linux/bin を環境変数に追加します
vim /etc/profile
#配置 sonar-scanner SONAR_RUNNER_HOME=/opt/sonar-scanner-4.6.2.2472-linux PATH=$SONAR_RUNNER_HOME/bin:$PATH export SONAR_RUNNER_HOME export PATH
source /etc/profile
sonar-scanner -h
追加が成功したかどうかを確認するINFO: INFO: usage: sonar-scanner [options] INFO: INFO: Options: INFO: -D,--define <arg> Define property INFO: -h,--help Display help information INFO: -v,--version Display version information INFO: -X,--debug Produce execution debug output
-
ソナースキャナ設定ファイルを変更する
sonar-scanner-4.6.2.2472-linux/conf
-
vim sonar-scanner.properties
#Configure here general information about the environment, such as SonarQube server connection details for example #No information about specific project should appear here #----- Default SonarQube server sonar.host.url=http://127.0.0.1:10005 #----- Default source code encoding #sonar.sourceEncoding=UTF-8 sonar.jdbc.url=jdbc:mysql://127.0.0.1:3307/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false #数据库账号 sonar.jdbc.username=sonar #数据库密码 sonar.jdbc.password=sonar sonar.sorceEncoding=UTF-8
この構成ファイルは、SonarQube サーバー接続の詳細など、環境に関する一般情報です。特定のプロジェクトに関する情報をここで構成しないでください
-
計測コード
SonarQube プロジェクトの作成
- SonarQube Web ページを開いてプロジェクトを作成します
この記事では分析に PHP を使用しています
ソナースキャナーを使用してコードを分析する
-
分析する必要があるコードプロジェクトのパスを入力してください
-
touch sonar-project.properties
プロジェクトパスにファイルを作成し、 -
vim sonar-project.properties
# must be unique in a given SonarQube instance sonar.projectKey=test # --- optional properties --- # defaults to project key sonar.projectName=test # defaults to 'not provided' sonar.projectVersion=1.0 # Path is relative to the sonar-project.properties file. Defaults to . # 多个路径可以使用逗号隔开 sonar.sources=./app,./config # Encoding of the source code. Default is default system encoding sonar.sourceEncoding=UTF-8 #这个具体作用目前不太清除,官网也没写 sonar.java.binaries=. # SonarQube 创建项目生成的令牌 sonar.login=6c8148e18e76fbc96e73354
鍵 説明する sonar.projectKey プロジェクトの一意のキー。使用できる文字は、文字、数字 - 、_、.、および : であり、少なくとも 1 つの数字以外の文字が含まれます。 ソナーソース コード分析が必要なファイル ディレクトリ。複数のファイルを区切るにはカンマを使用します。 ソナー.プロジェクト名 Web インターフェイスに表示されるプロジェクト名。 sonar.projectVersion プロジェクトのバージョン ソナー.ログイン プロジェクトで分析を実行する権限を持つ SonarQube ユーザーのログイン トークンまたは認証トークン ソナーのパスワード sonar.login ユーザー名とともに使用するパスワード。認証トークンが使用されている場合は、空白のままにする必要があります ソナー.プロジェクトの説明 プロジェクトの指示 sonar.sourceEncoding ソースファイルのエンコーディング。例: UTF-8 -
sonar-project.properties ファイルと同じレベルのディレクトリで実行します。
sonar-scanner
-
SonarQube Web ページを表示すると、テスト プロジェクトが
后台任务
実行されていることがわかります。この時点で、Sonar-scanner はデータを SonarQube サーバーに送信し、SonarQubeサーバーはデータを分析します -
バックグラウンドタスクの実行後、コード分析結果を表示できます。
SonarQubeは使いやすいです
ユーザー管理
-
グループを作る
- [設定] > [権限] > [グループ] > 右上隅
-
ユーザーを作成
- [設定] > [権限] > [ユーザー] > 右上隅
-
ユーザーをPHPグループに追加
-
テスト プロジェクトに対する PHP グループの権限を構成する
- プロジェクト -> テスト プロジェクト -> 構成 -> 権限
権限ページでは、現在のプロジェクトを公开
ライブ私有
プロジェクト
に設定でき、これを割り当てることができます。 6 つの特定の PHP グループ 権限
- プロジェクト -> テスト プロジェクト -> 構成 -> 権限
-
特定の許可の分類
- 参照: プロジェクトにアクセスし、そのメトリクスを参照し、問題を作成/編集します。
- ソース コードの表示: プロジェクトのソース コードを表示します。 (ユーザーには「参照」権限も必要です)
- 問題マネージャー: 問題を追加編集します。誤検知/修正されないように設定し、問題の重大度レベルを変更します。 (ユーザーには「参照」権限も必要です)
- セキュリティ ホットスポットの管理: 「セキュリティ ホットスポット」を通じて脆弱性を検出します。 「安全なホットスポット」を拒否、クリーンアップ、受け入れ、再度開きます (ユーザーには「参照」権限も必要です)
- 管理者: プロジェクト構成を表示し、管理タスクを実行します。 (ユーザーには「参照」権限も必要です)
- 分析の実行: 分析を実行するためのすべての設定 (パスワードなどのセキュリティ設定を含む) を取得し、分析結果を SonarQube サーバーにプッシュできます。
品質構成
品質構成は、分析中に使用される一連のルールです。各言語にはデフォルト設定があります。他の構成を指定しないプロジェクトでは、デフォルトの構成が使用されます。
インストール後の PHP の品質構成は 3 つあります。 Drupal
、PSR-2
、Sonar way
ここで、 Sonar way
はシステムによってデフォルトで使用される品質設定です。111 個のルールがあることがわかります。
カスタム品質構成
システムのデフォルトが既存の条件を満たさない場合は、右上隅にある 创建
ボタンをクリックします
既存の品質構成に基づいて新しい構成を作成することも、空の構成を作成することもできます。
- 新しい構成では、グループまたは個人に権限を割り当てることができます
- 現在の構成を特定のプロジェクトに割り当て、この構成をコード検出に使用できます。
- さらにルールを追加する
さらに、他にもいくつかの基本的な構成があります
品質のしきい値
品質しきい値はコード検出しきい値と同じです。コードの問題がしきい値を超えると、プロンプトが表示されるか、電子メール通知が送信されます。
デフォルトの品質しきい値 Sonar Way
。プロジェクトで品質しきい値が指定されていない場合、この品質しきい値がデフォルトで使用されます。
さまざまなプロジェクトに基づいてさまざまな品質しきい値を作成できます
- 特定の要件に基づいてさまざまなインジケーターを追加します
- 該当する項目を選択してください
bugs
では、しきい値が 10 に設定されており、コードが 92 を検出していることがわかります。この時点で、プロジェクトのステータスは 错误级别
(しきい値を超えることはできません a>正常
)
電子メール通知
SonarQube は、何らかのイベントが発生したときに電子メールで通知するように設定できます。
電子メール SMTP サービスを有効にする
QQメールボックスでサービスを開始する
- IMAP/SMTPサービスを有効にする
- 認証コードを生成する
SonarQube メールボックスの構成
構成を変更する権限を持つアカウントを使用することも、管理者アカウントを使用して電子メール情報を構成することもできます。
SonarQube の電子メール通知設定
オンにする通知は 我的账号 -> 提醒
で選択できます。
新しい質問が割り当てられると、電子メールでリマインダーが送信されます
メールの下に問題のある接続が表示されます。ジャンプ プレフィックス ドメイン名は 配置
で設定できます。
設定後に電子メールを送信する
ブランチスキャン
SonarQube Community バージョンはマルチブランチ スキャンをサポートしていないため、Github の sonarqube-community-branch-plugin プラグインを使用できます。 /span>
SonarQube バージョンに基づいてプラグイン バージョンを選択します
-
適切な jar パッケージをダウンロードし、SonarQube をインストールしたディレクトリに置きます。
sonarqube/extensions/plugins
-
SonarQube Service サービスを再起動します。
-
分析する必要があるブランチを切り替え、スキャンされたプロジェクトの下の sonar-project.properties ファイルを変更します。
sonar.projectKey=test # --- optional properties --- # defaults to project key sonar.projectName=test # defaults to 'not provided' sonar.projectVersion=1.0 # Path is relative to the sonar-project.properties file. Defaults to . sonar.sources=./app,./config # Encoding of the source code. Default is default system encoding sonar.sourceEncoding=UTF-8 #这个具体作用目前不太清除,官网也没写 sonar.java.binaries=. # SonarQube 创建项目生成的令牌 sonar.login=7eee3f6b73b5cab929c30f5bca7bc0a8bf84ec25 # 项目所处分支(一般和 jenkins 结合,通过变量动态修改分支名) sonar.branch.name=release-1
-
sonar-scanner
再スキャン -
新しいブランチの情報は
SonarQube Web
ページで確認できます。
複数の支店
SonarQube のブランチは次のように分類できます。
- メインブランチ: 通常は master
- 短期ブランチ: 長期ブランチと比較して、短期ブランチの問題は
增量
データです。 - 長期ブランチ: リリース ブランチや開発ブランチなどの長期メンテナンス ブランチ、問題データ
单独
ストレージ
メイン ブランチがマスターではない場合は、メイン ブランチの名前を変更できます。
长期分支
のブランチ マッチング ルールを変更することもできます。
Jenkins は SonarQube を使用します
Baidu に Jenkins を自分でインストールする
安装 SonarQube Scanner
插件
Manage Jenkins -> Manage Plugins -> Sonarqube Scanner
インストール後に Jenkins を再起動します
構成 SonarQube servers
Manage Jenkins -> Configure System -> SonarQube servers
SonarQube Web アドレスを入力し、 凭证
認証情報が追加されました
-
SonarQube Web は管理者アカウントを使用してトークンを生成します
我的账户 -> 安全
-
Jenkins に認証情報を追加する
構成 SonarQube Scanner
Manage Jenkins -> Global Tool Configuration -> SonarQube Scanner
Jenkins プロジェクトを作成する
-
新しいアイテムを作成する
作成するフリースタイル タイプを選択してください -
ビルド情報の作成
sonar.projectKey=${JOB_BASE_NAME} sonar.projectName=${JOB_BASE_NAME} sonar.projectVersion=1.0 sonar.sources=./app sonar.sourceEncoding=UTF-8 sonar.java.binaries=. sonar.branch.name=${Branch}
ビルド後にワークスペースを削除します。この場合、コード検出のみが実行され、その後の操作は行われないため、ワークスペースの削除を選択できます。
プロジェクトを実行する
初めて実行する場合は、必ず master
ブランチを選択してください。そうしないと失敗します。これは、SonarQube Web のデフォルトの最初のブランチが であるためです。master
参考
www.cnblogs.com/ycyzharry/p/116890...
www.cnblogs.com/wangxu01/articles/...