問題の説明
Github でプル リクエストが行われるたびに、プロジェクトの SonarQube プレビュー分析を実行するように CI ツール (Teamcity) をセットアップしました。すべてが正しく機能することをテストするために、プル リクエストを送信する前にコードベースにいくつかの問題を追加しました。プレビュー分析は問題なく実行され、プル リクエストは次の概要で更新されます。
" sonarqube — SonarQube は問題を報告しませんでした"
問題は、私がコードベースに導入した新しい問題が、プル リクエストへのインライン コメントとして記述されていないことです。
ステップとログのデバッグ
ログ レベルを DEBUG に設定するために、 sonar.verboseプロパティをtrueに設定して、プレビュー分析を 2 回実行しました。
Teamcity の MSBuild Runner を使用して分析を実行するために使用しているコマンドは次のとおりです。
MSBuild.SonarQube.Runner.exe begin /k:<project_key> /n:"<project_name>" /v:%build.number% /d:sonar.analysis.mode=preview /d:sonar.github.oauth="<personal_access_token>" /d:sonar.github.pullRequest="<hard_coded_PR_no>" /d:sonar.github.repository="<organization>/<repo_name>" /d:sonar.issuesReport.console.enable=true /d:sonar.verbose=true
分析を実行すると、問題が SonarQube によって検出されていることがログからわかりました (以下のログを参照)。このように、ポストジョブ Github Pull Request Issue Publisher に問題があるようです。ログからの抜粋は次のとおりです。
Working dir: D:\BuildAgent\work\<some_hash>\.sonarqube\out\.sonar
[08:57:01][Step 8/11] INFO: Source encoding: UTF-8, default locale: en_US
[08:57:01][Step 8/11] INFO: Sensor XmlFileSensor
[08:57:01][Step 8/11] INFO: Sensor XmlFileSensor (done) | time=0ms
[08:57:01][Step 8/11] INFO: Load server issues
[08:57:01][Step 8/11] INFO: Load server issues (done) | time=117ms
[08:57:01][Step 8/11] INFO: Performing issue tracking
[08:57:01][Step 8/11] INFO: 552/552 components tracked
[08:57:01][Step 8/11] INFO: Console report is deprecated. Use SonarLint CLI to have local reports of issues
[08:57:01][Step 8/11] INFO:
[08:57:01][Step 8/11]
[08:57:01][Step 8/11] ------------- Issues Report -------------
[08:57:01][Step 8/11]
[08:57:01][Step 8/11] +15 issues
[08:57:01][Step 8/11]
[08:57:01][Step 8/11] +4 blocker
[08:57:01][Step 8/11] +1 critical
[08:57:01][Step 8/11] +10 major
[08:57:01][Step 8/11]
[08:57:01][Step 8/11] -------------------------------------------
[08:57:01][Step 8/11]
[08:57:01][Step 8/11]
[08:57:01][Step 8/11] INFO: ANALYSIS SUCCESSFUL
[08:57:01][Step 8/11] INFO: Executing post-job GitHub Pull Request Issue Publisher
[08:57:02][Step 8/11] INFO: ------------------------------------------------------------------------
[08:57:02][Step 8/11] INFO: EXECUTION SUCCESS
[08:57:02][Step 8/11] INFO: ------------------------------------------------------------------------
[08:57:02][Step 8/11] INFO: Total time: 35.242s
[08:57:02][Step 8/11] INFO: Final Memory: 48M/172M
[08:57:02][Step 8/11] INFO: ------------------------------------------------------------------------
[08:57:03][Step 8/11] The SonarQube Scanner has finished
[08:57:03][Step 8/11] 08:57:03.022 Creating a summary markdown file...
[08:57:03][Step 8/11] 08:57:03.023 Analysis results: http://<sonarqube_server>/dashboard/index/<project_name>
[08:57:03][Step 8/11] Post-processing succeeded.
[08:57:03][Step 8/11] Process exited with code 0
Github のセットアップ
sonar.github.oauthプロパティへの入力として使用されている個人用アクセス トークンをユーザーに追加しました。私のユーザーは、問題のレポに対するすべての権限を持っています。トークンには「public_repo」スコープが与えられており、ドキュメントに従ってインライン コメントを書き、プル リクエストを更新できます。前者のみが実行されることはありません。
プラグインとツールのバージョン
- ソナーキューブ5.6
- C# プラグイン (バージョン 5.3.2)
- MSBuild ランナー プラグイン (バージョン 1.1)
- Github プラグイン (バージョン 1.3)
- チームシティ (バージョン 9.1.7)
- GitHub エンタープライズ (バージョン 2.7)
私は何が欠けていますか?まだ試していないことの 1 つは、個人用アクセス トークンで自分のユーザーを使用する代わりに、専用のテクニカル Github ユーザーを作成することです。これが問題の原因でしょうか?