背景
コードスキャンをした後、Issueがゾロゾロできてまして、誰にAssignするのかの作業も面倒と感じる方はいると思います。
SonarQubeには、SCM(Gitなど)の情報を利用して、指摘事項(Issue)を適切な開発者へ自動的に割り当てるAutomatic Issue Assignmentという強力な機能があります。今回は、この機能についてご紹介します。
Automatic Issue Assignmentとは
この機能は、SonarQubeが解析プロセスの中で、検出されたIssueを「そのコードを最後に変更した開発者」に自動的にアサインする仕組みです。内部の流れとして
- SCMデータの取得
- 解析時にGitなどのソース管理システムから、各行の最終更新者情報(git blame 相当)を取得
- 作成者の特定
- Issueが検出された行の情報を元に、その行を最後にコミットしたユーザーを特定
- ユーザーのマッピング
- SCM上のメールアドレスが、SonarQube上のユーザーアカウントと照合され、一致すればそのアカウントに登録
この機能を活用することで、アサイン作業が迅速化され、修正までのサイクルを短縮できます。管理者の運用負荷も大幅に軽減されます。
実際にテストしてみた
まず、SonarQubeにユーザーを登録します。SonarQubeのアカウントはメールアドレスをキーとして識別するため、一意(ユニーク)である必要があります。今回はGitHub連携を使用していますが、他のログイン方法でも仕組みは同じです。

次に、GitHub側でSonarQube上の3ユーザーに対応する各アカウントから、それぞれコードをコミットします。

コミット後に解析(Analysis)を実行すると、Issueが検知されました。
画面を確認すると、該当コードをコミットしたアカウントへ、自動的にIssueがアサインされていることがわかります。

まとめ
SonarQubeの自動割り当て機能は、一度設定(SCM連携)してしまえば、あとは勝手に「品質改善のワークフロー」を回してくれる非常にコスパの良い機能です。
「静的解析ツールを入れたけど、結局誰もIssueを見てくれない」という悩みを抱えているチームは、まずこの自動割り当てが正しく動いているか確認することをおすすめします。