2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SonarQube の紹介(と、その日本語化プラグインの紹介)

Posted at

SonarQube は世界的に利用されているコード品質・セキュリティ管理ツールで、日本国内においても利用が徐々に広がっています。

本記事は、SonarQube の製品ごとの機能を比較し掘り下げながら、その紹介をしたいと思います。

SonarQube とは

SonarQube は、静的解析を用いてソースコードの品質やセキュリティリスクを検出するプラットフォームです。Java や C/C++、JavaScript/TypeScript、Python をはじめとする多様なプログラミング言語に加え、 CloudFormation や Terraform などの IaC の定義に対応し、開発チームが継続的にコードの健全性を保つための強力なツールとして、世界中で活用されています。

特に昨今、生成 AI によってコーディングの加速していくのに対し、レビューを行う人間側がボトルネックになり、その効果が限定的になってしまうという課題があり、このレビューの効率化を行うために、ルールベースでチェックを行う静的解析ツールを活用する動きがあります。SonarQube はこのレビューを行う人間側の負荷を軽減し、生産性の向上をサポートする強力なツールであると考えています。

基本的な機能

SonarQube の基本機能には、コード品質を可視化する機能と、その品質に基づいてリリースの可否を判断する 品質ゲート があります。
コード品質の可視化では、バグにつながる実装やセキュリティの脆弱性、保守性に影響するコードスメルを検出します。さらに、コードの重複度や自動テストのカバレッジも追跡し、アプリケーションのダッシュボードで分かりやすく表示します。開発者や管理者は、これらの情報を元に修正や改善を行い、コード品質を向上させ、生産性の維持・向上を図ることができます。
品質ゲートは CI/CD と連携し、リリースやプルリクエストで基準を満たさないコードをブロックすることで、品質の低下や不具合の発生を未然に防ぎます。

ダッシュボード

製品ラインナップ

主な製品のラインナップとして、セルフホスト版の SonarQube Server と、SaaS 版の SonarQube Cloud があるほか、これらのサーバーと接続し IDE 上で稼働する SonarQube IDE があります。

無償で利用できる OSS 版 Community Build も、自身でサーバーを立てて運用します。そのため、利用時の特性や注意点は SonarQube Server の内容を参考にしてください。

SonarQube Server / SonarQube Cloud

SonarQube Server と SonarQube Cloud は同じ解析エンジンを共有しており、機能的にも大きな差異はありませんが、プロジェクトの体制やユースケースによってどちらがより適当かが変わってきます。以下に違いをまとめました。

項目 SonarQube Server
(セルフホスト)
SonarQube Cloud
(SaaS)
概要 ユーザー自身がインフラの管理、インストール/アップグレードを実施する必要がある自己管理型。SonarQube Cloud に比べ、有償ライセンスコストは低く設定されている。 Sonar 社がクラウド上でホスト&管理する SaaS サービス。ユーザー側でサーバーの管理を行う必要がなく、新機能などはリリース同時に利用が可能となる。SonarQube Server に比べ、管理が簡単になる分、有償ライセンスのコストとしては高く設定されている。
データ管理 自身で立てたサーバーを利用するため、データを社内環境に閉じて管理する構成をとることが可能。 Sonar のクラウド上にコードおよび解析結果が保存される。
導入の容易さ セットアップには自前のサーバーの用意と、作業が必要になる。お試しで使うのであればローカルに立ち上げ、オフラインで利用することも可能。 サインアップしてすぐに利用可能。Team プランであればアプリケーション上からサブスクリプションも可能。
CI/CD 統合 GitHub Actions や Jenkins といった CI/CD プラットフォームと連携可能。クラウドサービスの CI/CD と、イントラに立てたサーバーと連携する場合は、セルフホステッド ランナーを使うなど工夫が必要。 クラウドの DevOps プラットフォームと連携が容易。GitHub や Azure などのサービスとの連携は、アカウントでログインし、リポジトリを接続することで自動解析も可能。
拡張 プラグイン導入や独自拡張が可能。内部 API を用いた統合や独自ルール開発も自由。 カスタマイズ制限あり。SaaS のためユーザーによるプラグイン追加不可。Sonar が提供する機能セットをそのまま利用。

どちらを使うかを判断する際のポイントを以下にまとめてみました。参考にしてみてください。

  • SonarQube Server (セルフホスト)
    • コストを低く抑えたい
    • カスタマイズやプラグインの導入をしたい
    • 社内など閉じた環境でコードを管理したい
  • SonarQube Cloud (SaaS)
    • クイックに始めたい
    • システム管理者の調達が難しい、メンテナンスに人を割きたくない
    • クラウドサービスを利用した開発を行っており、それらサービスとの連携を簡単に行いたい

なお、コストで判断する場合、ライセンス自体のコストは SonarQube Server の方が低く設定されていますが、そのインストールに利用するマシンのコストや、メンテナンス要員のコストも合わせて比較する必要がある点注意ください。開発規模などによっては、SonarQube Cloud の方が安くなるということも考えられます。

SonarQube IDE

SonarQube は上記に紹介した通り、サーバーとして動くアプリケーションに解析依頼を投げて解析を行うアプリケーションですが、IDE と連携することで開発中にリアルタイムでコード品質をチェックできるようになります。

SonarQube のライセンスはプロジェクトの LoC 規模による課金のため開発者ごとや解析数による課金はありません。CI/CD タイミングのチェックより早いタイミング、開発者がコードを書いているそばから品質のチェックを行い、より良いコードを提案することで、手戻りを減らし、開発生産性を向上させます。

対応している IDE のリスト

  • VS Code
  • Visual Studio
  • JetBrains IDE
  • Eclipse
  • etc…

各 IDE の Marketplace などからインストールし利用可能です。なお、サーバーと接続していなくても最低限の解析は可能なので SonarQube のチェックがどんなものなのか気になる方は試してみると良いかもしれません。

SonarQube Server の Edition、SonarQube Cloud の プラン差異

次に SonarQube Server の 各 Edition および OSS 版の Community Build の差異、 SonarQube Cloud プランごとの差異について、まとめていきます。

まずは OSS 版の Community Build および、 SonarQube Server の差異についてです。

Community Build および、 SonarQube Server の Edition 間の差異

項目 Community Build Developer Edition (有償) Enterprise Edition (有償)
価格モデル OSS 版(無償)。 年間ライセンス制、LoC に応じた価格設定。 Developer Edition 同様、LoC に応じた価格設定。
対応言語 20 以上(主要言語: Java, C#, Python, JS/TS 他)をサポート。C/C++や Swift 等一部言語は非対応。 30 以上の言語をサポート。Community Build に加え C/C++, Dart, Swift, Obj-C, ABAP などが追加。 35 以上に拡大。Developer 版 + Apex, COBOL, JCL, PL/I, RPG, VB6 などドメイン固有言語やレガシー言語も対応。
CI/CD 統合 DevOps プラットフォームごとに 1 つ統合設定が可能。1 度に処理できる分析ジョブは 1 つのみ。 Community Build 同様、DevOps プラットフォームごとに 1 つ統合設定が可能で、分析ジョブは 1 つのみ。 DevOps プラットフォームごとで複数の統合設定が可能。複数のジョブにより、並列処理で分析が可能。
ブランチを指定しての分析 不可 – メインブランチのみ分析可能。 可能 – 複数ブランチの解析・コードヘルス可視化。 可能 – Developer Edition 同様。
プルリクエスト分析(デコレーション含む) 不可 – PR ごとの検出や Git 上での指摘コメント機能なし。 可能 – PR ごとに解析し、GitHub や GitLab 上でコードレビューコメントに問題指摘を自動付与。Quality Gate 結果も PR に表示。 可能 – Developer Edition 同様。
脆弱性の分析 基本的な静的解析のみ。バグや簡易的な脆弱性検知、シークレット漏洩検知に対応。高度な解析(例:SQL インジェクション検知のためのデータフロー解析等)は非対応。 汚染解析(taint analysis)など高度な解析によるインジェクション脆弱性検知、複雑なバグ検出、さらなるセキュリティホットスポットの特定などが可能。 Developer の機能に加え、複数プロジェクトを跨ぐセキュリティレポート提供などコンプライアンス対応強化。追加オプションの Advanced Security により、SCA の対応、SBOM の出力、OSS ライブラリコードも含めた解析なども対応。
AI 支援機能 AI Code Assurance(生成 AI 由来コードの問題検出)に対応。AI による自動修正提案を行う AI CodeFix 機能 は未対応。 AI Code Assurance 対応。AI CodeFix も利用可能。 利用可能 – Developer Edition 同様。
プロジェクトの集約・横断的なビュー 不可 複数プロジェクトをアプリケーションとして 1 つの仮想プロジェクトに統合し、集約したメトリクスを表示できます。 Developer Edition と同様の、アプリケーションとしての統合に加え、複数のアプリケーションやプロジェクトをポートフォリオとして階層管理し、経営層向け集計を表示。例:全プロジェクト横断の技術負債やセキュリティリスクの可視化。
レポート機能 Web 画面でのメトリクス表示のみ。 Community Build 同様、Web 画面でのメトリクス表示のみ。 個々のプロジェクトやポートフォリオの PDF レポートを生成可能。セキュリティ標準準拠レポート(OWASP Top 10 や PCI-DSS など)や監査ログも。

上記に加え、超大規模環境向けには Data Center Edition も存在します(Enterprise Edition +クラスタリング/冗長化機能)。大規模負荷下での自動スケーリングや無停止稼働が可能です。

次に SonarQube Cloud プランごとの差異についてまとめます。

SonarQube Cloud プラン間差異

項目 Free プラン Team プラン Enterprise プラン
価格モデル 無償、5 名までという利用制限や、Private リポジトリに対する分析は LoC の制限あり。OSS の開発への適用であれば、Free プランでも無制限に利用可能。 年間ライセンス制、LoC に応じた価格設定。アプリケーション上からサブスクリプションの登録が可能。 Team プラン同様、LoC に応じた価格設定。利用に関する問い合わせは窓口フォームへ問い合わせを行う。
対応言語 30 以上の言語をサポート。Community Build や SonarQube Server Developer Edition より一部サポートが多い。詳細は公式のサポート表をご確認ください。 Team プランでは サポート言語について Free プランと差異はない様子。 Free, Team プランのサポート言語に加え、ABAP, Apex, COBOL, JCL, PL/1, RPG などの言語をサポート。
ブランチを指定しての分析 不可 – メインブランチのみ分析可能。 可能 – 複数ブランチを対象とした解析が可能。 可能 – Team プラン同様。
プルリクエスト分析(デコレーション含む) 不可 – PR のターゲットがメインブランチの場合のみ解析可能。 可能 – PR ごとに解析し、GitHub や GitLab 上でコードレビューコメントに問題指摘を自動付与。Quality Gate 結果も PR に表示。 可能 – Team プラン同様。
脆弱性の分析 汚染解析(taint analysis)など高度な解析によるインジェクション脆弱性検知、複雑なバグ検出が可能。 Free プラン同様、汚染解析(taint analysis)など高度な解析によるインジェクション脆弱性検知、複雑なバグ検出が可能。 Team プランの解析に加え、複数プロジェクトを跨ぐセキュリティレポート提供などコンプライアンス対応強化。追加オプションの Advanced Security により、SCA の対応、SBOM の出力、OSS ライブラリコードも含めた解析なども対応。
AI 支援機能 AI Code Assurance(生成 AI 由来コードの問題検出)に対応。AI による自動修正提案を行う AI CodeFix 機能 は未対応。 AI Code Assurance 対応。AI CodeFix も利用可能。 利用可能 – Team プラン同様。
プロジェクトの集約・横断的なビュー 不可 複数プロジェクトをアプリケーションとして 1 つの仮想プロジェクトに統合し、集約したメトリクスを表示できます。 Team プランと同様の、アプリケーションとしての統合に加え、複数のアプリケーションやプロジェクトをポートフォリオとして階層管理し、経営層向け集計を表示。例:全プロジェクト横断の技術負債やセキュリティリスクの可視化。
レポート機能 Web 画面でのメトリクス表示のみ。 Community Build 同様、Web 画面でのメトリクス表示のみ。 個々のプロジェクトやポートフォリオの PDF レポートを生成可能。セキュリティ標準準拠レポート(OWASP Top 10 や PCI-DSS など)や監査ログも。

プラン / Edition の選択時の判断ポイント

Server / Cloud 同様に、プラン / Edition についても、何を利用するか判断する際のポイントと、どのようなユーザー/プロジェクトでの利用が適切かを以下にまとめてみました。

  • Community Build / SonarQube Cloud Free プラン
    • 無償ながら主要言語に対応し、コード品質が行え、入門としては十分な機能
    • Community Build ではセキュリティ機能は最低限
    • ブランチの分析機能はメインのみとなるため、使い方は限定的
    • 個人、またはごく少数チームの小規模な開発向け
      • SonarQube Cloud Free プランは サポート言語やセキュリティ脆弱性のチェック機能は Community Build より優遇されているが、その分ユーザー数や LoC による制限が入る
  • SonarQube Server Developer Edition / SonarQube Cloud Team プラン
    • C/C++などもサポート言語に入り、セキュリティ脆弱性のチェック機能が無償版と比較し充実
    • AI によるコード修正補助( AI CodeFix )もサポート
    • ブランチごとの分析やプルリクエストとの連携が可能
    • 組織横断的な機能やレポートの機能はなく、組織としてのリスク回避やガバナンスの機能はサポートしていない
    • 少数のプロジェクトを対象とした、複数人での一般的なプロセスに則った開発向け
  • SonarQube Server Enterprise Edition / SonarQube Cloud Enterprise プラン
    • より広い言語をサポート
    • 解析の機能としては、Advanced Security が利用可能となり、一歩踏み込んだ脆弱性の対策が可能となる
    • レポートや監査ログの出力がサポートされ、有事の際に必要な情報が利用可能となる
    • ポートフォリオ機能のような組織横断の分析機能が充実し、組織単位を比較しての改善アクションへつなげることが可能となる
    • 会社・組織全体で品質の改善や生産性向上、ガバナンスを効かせたい際に利用

長かったですが以上になります。自分たちのプロジェクトや組織で、SonarQube のどの製品を利用するかのヒントになっていれば嬉しいです。

SonarQube 日本語化プラグインの紹介

最後に、弊社(クレスコ)で開発した SonarQube Server 向けの 日本語化プラグインの紹介をします。

SonarQube のデフォルトの UI は英語のみで、日本のユーザーには少し利用のハードルが高い状態となっています。このハードルを下げる日本語化プラグインが過去に存在していたようですが、長らくメンテナンスが停止しており、現在では利用が困難な状況でした。

そこでクレスコは日本市場の利用促進を目的として 「SonarQube Japanese Pack」 を開発しました。これにより主要画面を日本語化し、国内チームでも直感的に利用できる環境を提供します。

日本語化イメージ1
日本語化イメージ2
日本語化イメージ3

日本語化プラグインの導入方法は 2 通りあります。

  • プロジェクトリポジトリ (https://github.com/cresco-sonar/sonar-l10n-ja/releases) から Jar ファイルをダウンロードし、<sonarqubeHome>/extensions/plugins に配置後サーバ再起動(全エディション対応)
  • Marketplace からインストール(Community Build のみ可能)

※ SaaS 型で提供されている SonarQube Cloud はプラグインの利用ができないため、この日本語化プラグインも利用できません。

プラグイン導入後、SonarQube Server を再起動することで、プラグインが適用され、ブラウザの言語設定を日本語にすると、UI が日本語に切り替わります。

日本語化プラグインの詳細については、弊社のエンジニアブログでも紹介記事を作っているため、ぜひそちらもご参照ください。

参考

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?