SonarLintのRubyサポート

1. RubyファイルにSonarLintの指摘が表示されない理由

Visual Studio Code 用の拡張機能「SonarQube for IDE (旧称 SonarLint)」は、現時点でRubyコードの解析をサポートしていませんmarketplace.visualstudio.comcommunity.sonarsource.com。公式の拡張機能説明によれば、JS/TS(JavaScript/TypeScript)、Python、PHP、Java、C/C++、C#、Go、IaC(インフラストラクチャコード)などはサポートされていますが、Rubyは含まれていません​marketplace.visualstudio.com。そのため、Rubyの .rb ファイル上では SonarLintによる問題検出(エディタ上の波線警告)が行われず、VSCode上に指摘が表示されない状態になります。

一方、SonarQubeサーバー(Community Edition v10.5.1)にはRuby用の解析エンジン(プラグイン)が搭載されており、サーバー側の解析ではRubyコードの問題が検出されます。質問の状況では、ローカルでは指摘が出ないRubyコードも、SonarQubeサーバー上でスキャンすると解析結果が表示されるとのことですが、これは拡張機能側の制限によるものです。つまり**「VSCode上で反応がない=SonarLintがRubyを解析していない」**だけで、SonarQube本体はRubyを解析できているということです。

この動作は設定ミスではなく製品の仕様上の制約です。SonarSource社も「VSCodeでのRubyコード解析サポート」を認識しており、需要の高まりを踏まえて将来的な対応を検討中とされています(現在はIntelliJ系(RubyMine)やEclipse版のSonarLintでRuby解析が可能)​community.sonarsource.com。現状ではVSCode拡張でRuby解析ができないため、Rubyファイルに対してはSonarLintのリアルタイム指摘が表示されないことをご了承いただくほかありません。

2. RubyのルールがVSCodeに反映されない原因とConnected Modeでの同期について

ご指摘の通り、Connected Mode(接続モード)を使用してSonarQubeサーバーとVSCode拡張を連携させても、RubyのルールはVSCode側に同期されません。その原因は前述の通り、VSCode版SonarLintがRuby言語の解析エンジンを持っていないためです。Connected Modeでは通常、サーバー上のプロジェクトの「Quality Profile(ルールセット)」を同期し、有効なルールをIDE側でも適用できるようになります。しかし、解析エンジン自体が未サポートの言語に関しては、たとえサーバー上でルールが有効でもクライアント側で実行できません。

実際、SonarLint(SonarQube for IDE)拡張をConnected ModeでSonarQubeに接続すると、拡張機能の出力ログに以下のようなメッセージが出力されます。

Code analyzer 'ruby' is not compatible with SonarLint. Skip downloading it.community.sonarsource.com

これは**「SonarQubeサーバーのRubyコード解析プラグインはSonarLintと互換性がないためダウンロードしない」**という意味で、Ruby用ルールが同期から除外されていることを示しています​community.sonarsource.com。同様に 'ruby' 以外にもSonarLint未対応の言語(ABAPやScala、Swiftなど)のアナライザは「Skip downloading」と表示されスキップされます​community.sonarsource.com。つまりConnected Modeを有効にしても、Rubyに関するルールはVSCode拡張側では有効化されず、結果としてRubyファイル上でサーバーと同じ指摘を得ることはできません。

同期の方法・ワークアラウンド: 残念ながら、現時点ではVSCode上でRubyの静的解析結果を表示させる方法はありません(SonarLint側のサポート待ちです)。Connected Modeはサーバー上のルールセットを同期しますが、対応していない言語については同期されても実行できないため無意味となります​community.sonarsource.com。したがってRubyのルールをIDEに反映・同期することは現状不可能です。

可能な対策としては、以下のようなポイントがあります。

  • SonarQubeサーバーの解析結果を参照する: 開発中のリアルタイムではなくなりますが、CI実行時や手動でSonarQube解析を走らせて、その結果をサーバーのWebインターフェースで確認する方法です。VSCodeの問題パネルに出ないだけで、Rubyのコード品質問題自体はサーバーで検出・集約できますので、コードレビュー時にサーバー側レポートを参照する運用になります。
  • 他の静的解析ツールを併用する: RubyコミュニティではRuboCopのような静的解析・リンターツールが広く使われており、VSCode向け拡張も存在します。RuboCopはコードスタイルや簡易的なバグ検出に強力で、SonarQubeのRubyルールと重複する指摘も多く含みます。完全に同じではありませんが、VSCode上でRubocopを使ってRubyコードの問題を検出し、SonarQubeはバックエンド(CI)チェックと位置付けることで、開発時のフィードバックを得ることができます。SonarQube特有のセキュリティルールなどは直接には補完できませんが、少なくともローカルで見逃しにくくなるメリットがあります。
  • 別のIDEでSonarLintを使う: もしどうしてもIDE内でSonarのRubyルールによるチェックを受けたい場合、JetBrains社のRubyMineやIntelliJ IDEA + Rubyプラグイン環境でSonarLintプラグインを使う方法があります。SonarLint(IntelliJ版)はRuby解析をサポートしており約42種類のRubyルールでコードをチェックできます​community.sonarsource.com。Eclipse向けのSonarLintも、外部Rubyプラグイン(Ruby Solargraphなど)を導入すればConnected ModeでRubyを解析可能とされています​community.sonarsource.com。ただし開発環境をVSCodeから切り替える必要があるため、現実的には前述のRubocop併用などのほうが受け入れやすいかもしれません。

現状、SonarSourceからVSCode向けRubyサポートの公式アナウンスは出ていませんが、「VSCodeでRubyをサポートしてほしい」という要望は公式のロードマップにも挙がっているため​community.sonarsource.com、今後のバージョンアップで対応が追加される可能性があります。それまでは上記のようなワークアラウンドで補いつつ、定期的に拡張機能の更新情報やSonarSourceの発表をチェックすることをお勧めします。

株式会社サンプルの最新情報をお届けします

前の記事

Hello world!