MENU

SonarQubeとは|多言語対応のコード品質と脆弱性を一望できる解析基盤

SonarQube アイキャッチ
SonarQube

SonarQubeは、ソースコードのバグ、セキュリティ脆弱性、保守性の問題を統合的に解析するサーバ型プラットフォームである。フランスのSonarSource社が2007年にSonarという名称で公開し、その後SonarQubeへ改称しながら、Java、C#、Python、JavaScript、Goなど30近い言語へ対応を広げてきた。単なる静的解析にとどまらず、技術的負債の見える化、品質ゲートによるマージ可否判定、ブランチ別の差分分析まで担うため、中規模以上の組織でDevSecOpsの中核に据えられることが多い。

目次

この記事の目次

  1. Sonar wayの設計思想
  2. Quality GateとPRデコレーション
  3. 提供形態とライセンス
  4. プラグイン拡張と運用の勘所
  5. まとめ

Sonar wayの設計思想

Sonar wayの設計思想

SonarQubeの解析結果は大きく四つのカテゴリに分類される。実行時に問題を起こすBugs、第三者の攻撃対象になりうるVulnerabilities、書き方が悪く将来のバグ温床となるCode Smells、そして自動判定が難しく人間のレビューが必要なSecurity Hotspotsである。この分類は同社が「Sonar way」と呼ぶデフォルトのルールセットに基づき、各言語ごとに数百から千を超える検査ルールが整備されている。

ルールはSonarSource社内のリサーチチームと、JetBrains、FindBugs、Checkstyle、PMDといった既存OSSツールの知見をベースに設計されている。重要なのは、すべてのルールに修正のサンプルと根拠資料へのリンクが添えられている点で、開発者が「なぜこれが問題なのか」を学べる教材的な側面を備えていることだ。セキュリティ系の指摘ではOWASP Top 10やCWEとの対応番号が付与され、コンプライアンス要件のトレーサビリティを取りやすくしている。

Quality GateとPRデコレーション

Quality GateとPRデコレーション

SonarQubeが他の静的解析ツールと一線を画すのは、Quality Gateという概念にある。プロジェクト全体ではなく、プルリクエストや短期ブランチで「新しく追加・変更されたコード」だけを評価し、そこに新規バグがゼロか、カバレッジが80%以上か、重複コード比率が3%未満か、といった条件を満たすかどうかを自動判定する仕組みである。この発想によって、長年の負債が残るレガシーコードでも、これから書く部分は確実にクリーンに保てるようになる。

CIパイプラインからはsonar-scannerあるいはGradle/Maven/MSBuild向けのプラグインを呼び出し、解析データをサーバへ送る。PRデコレーション機能を有効にしておけば、GitHubやGitLab、Azure DevOps、Bitbucketにコメントとして指摘内容が投稿され、開発者はレビュー画面を離れずに修正点を確認できる。品質ゲートが不合格ならマージブロックの実装も可能で、品質を守る運用上の歯止めとして機能する。

提供形態とライセンス

提供形態とライセンス

SonarQubeは複数のエディションに分かれている。Community Build(旧Community Edition)は無償でセルフホストでき、Java、Python、JavaScriptなど主要言語に対応する。Developer Editionから上位ではC++、Swift、ABAP、Apex、PL/SQLなどビジネス系言語が加わり、ブランチ分析やPRデコレーションがフル機能で使える。Enterprise EditionとData Center Editionではポートフォリオ管理や高可用性構成、コンプライアンスレポートが提供される。

SaaS版はSonarCloudという別ブランドで提供され、GitHubやBitbucketのアカウントで即サインインできる。公開リポジトリは無料、プライベートは行数課金という料金体系で、自前のサーバ運用を避けたい小規模プロジェクトに向く。ライセンスとしてはCommunity BuildがLGPL v3、商用エディションは独自ライセンスとなっており、組織のポリシーに応じてセルフホストとSaaSを使い分けるのが現実的な選択になる。

プラグイン拡張と運用の勘所

プラグイン拡張と運用の勘所

SonarQubeはJavaで書かれたサーバアプリケーションで、内部にElasticsearch(Sonar4.x以降)と関係データベースを持つ。公式にサポートされるDBはPostgreSQL、Microsoft SQL Server、Oracleで、近年MySQLサポートは廃止された。プラグイン機構が豊富で、Marketplaceからは言語サポート、認証連携、外部レポート出力など多彩な拡張を追加できる。Java SDKを使えば社内独自のコーディング規約をカスタムルールとして実装し、配布することも可能だ。

運用上の落とし穴は、解析対象が増えるにつれてElasticsearchの索引が肥大化し、メモリ要求が膨らむ点にある。実本番運用では8〜16GBのヒープを割り当てることが珍しくなく、リソース設計時にSonarSourceの公式サイジングガイドを参照すべきだ。また、ルールセットを定期的に見直す運用も重要で、過去に有効化したまま忘れているルールがレビューを煩雑化させる原因になりやすい。年に一度はSonar wayの最新版と差分比較し、組織用プロファイルを更新していく作業が品質維持の鍵となる。

まとめ

SonarQubeは、コードの品質と脆弱性を多言語横断で可視化する解析基盤として、2007年から進化を続けている。Quality Gateで新規コードを守る発想は、レガシーを抱えるチームにも導入しやすい。CommunityからEnterprise、SaaSのSonarCloudまで揃っているので、規模に合った形で取り入れる価値の高いツールである。

※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次