SonarQube Community統合
SonarQube と CppDepend の統合で C/C++ コード品質を強化
今日の競争の激しいソフトウェア開発環境では、コードの品質と保守性の確保がプロジェクトの成功に不可欠です。SonarQube Community Edition と CppDepend の統合により、開発者はシームレスなコード分析のための強力な統合ソリューションを利用できます。
このガイドでは、これら 2 つの強力なツールを統合するプロセスを順を追って説明し、技術的負債を最小限に抑えながら、プロジェクトのコード品質と保守性を最大化できるようにします。この統合が開発プロセスに革命をもたらし、プロジェクトを成功に導く方法をご覧ください。
- プラグイン前提条件
- CppDependプラグインのインストール
- CppDependプラグインを設定
- Sonar サーバーで CppDepend ルールを有効化
- Sonar-Scannerを実行
- SonarQube UI で CppDepend ルールの問題を参照
重要:
コンピューターで CppDepend を使用する前に、まず SonarQubeライセンスを有効化 または 評価期間を開始 これを行うには、CppDepend ファイルをコンピューターに解凍し、次を起動するだけです VisualCppDepend.exe 1 回。マシンがインターネットに接続されている場合、短いアクティベーション プロセスが実行されます。
マシンがインターネットに接続されていない場合、代替のオフライン アクティベーション手順が提供されます。この手順は、SonarQube CppDepend プラグインを動作させるために必須です。
CppDepend SonarQube プラグインは、SonarQube バージョン 5.6 以降と互換性があることにご注意ください。
プラグイン前提条件
- インストール SonarrQube
ダウンロード http://www.sonarqube.org/downloads/ - インストール sonar-scanner
インストールドキュメント https://docs.sonarqube.org/9.8/analyzing-source-code/scanners/sonarscanner/ - 既存のC++ sonar拡張がある場合
SonarQube C++ 拡張機能、または次の SonarQube C++ コミュニティ プラグインの可能性があります https://github.com/SonarOpenCommunity/sonar-cxx
重要: C++ 用の既存の拡張機能がまだインストールされていない場合は、次のドキュメントを参照してください SonarQubeスタンドアロン統合。
CppDepend拡張機能をインストール
CppDependはSonarQube拡張をで提供 $InstallDir/Integrations/SonarQube
- Javaの場合、コピー sonar-jarchitect-plugin-1.0.jar
- C++ SonarQube拡張の場合、をコピー sonar-cxx-cppdepend-sqplugin.jar
- SonarQube コミュニティ バージョン 2 以降の場合は、次をコピーします sonar-cxx-cppdepend-community-2.jar
- SonarQube コミュニティ バージョン 1 の場合は、次をコピーします sonar-cxx-cppdepend-community-1.jar
- から $CppDependInstallDir$\Integrations\SonarQube ディレクトリ
- へ $SonarQubeInstallDir$\extensions\plugins ディレクトリ
- CppDepend プラグインを反映させるため、SonarQube サーバーを再起動します。
CppDependプラグインを設定
SonarQubeユーザーインターフェースでへ移動 管理 これには適切な管理者権限でログインしている必要があります。

- 必須 CppDepend SonarQube ルール スキャナーの完全なパスを指定します。Windows の場合は CppDepend.SonarQube.RuleRunner.exe (Windows)、 CppDepend.SonarQube.RuleRunner (Linux、macOS) から $CppDependInstallPath$\Libs ディレクトリ。パスの前に環境変数パスを付けず、完全な絶対パスを記述してください(このドキュメントにあるすべてのパスの記述についてこのアドバイスに従ってください)。
- オプション CppDependプロジェクトファイルのパスを指定 (.cdproj 拡張子)からルールを取得します。指定しない場合は、デフォルトの CppDepend ルール セットが使用されます。
CppDepend プロジェクト ファイルのパスを指定した場合、考慮されるルールは次で定義された有効化されたルールです:- CppDependプロジェクトファイルは、
- CppDepend プロジェクト ファイルから参照される CppDepend ルール ファイルで定義されたルール
Sonar サーバーで CppDepend ルールを有効化
CppDepend ルールは SonarQube リポジトリに読み込まれましたが、まだ有効化されていません。有効化するには、次を行います:
- SonarQube UIに管理者としてログイン
- へ移動 品質プロファイル タブ
- カスタム Quality Profile を作成します。既にカスタム Quality Profile がある場合は、この手順をスキップできます。

- 新しい Quality Profile の親として Sonar way プロファイルを選択してください:

- カスタム Quality Profile を作成したら、CppDepend ルールを追加する必要があります。そのためには次をクリックします さらに有効化 ボタン:

- 選択 CppDepend リポジトリで、をクリック 一括変更 ボタンをクリックし、新しい Quality Profile ですべての CppDepend ルールを有効化します:

- 最後に Quality Profile タブに戻り、新しい Quality Profile を次に設定します デフォルト:

CppDepend ルールの有効化(SonarQube v6.X より前)
- SonarQube UIに管理者としてログイン
- へ移動 ルール タブ
- 選択 言語C++ と リポジトリ: CppDepend

- これらのルールを有効にするプロファイルで次をクリック 一括変更 - 有効化先:

重要:
に注意 処理 ルールのそれは、ルール名に親グループ名とルール ソース コードも含まれます。この注意は、次の状況で重要です:
- 分析に使用される CppDepend プロジェクトにはカスタム ルール セットが含まれています
- SonarQube システムでルールを定義するために SonarQube 構成で指定される CppDepend プロジェクト(パラメーター cdprojからのCppDependルール(前のセクションを参照)は、分析に使用される CppDepend プロジェクトとは異なります。
このような状況で、2 つのルールセットが完全に一致しない場合、ルールは SonarQube システムで解決されず、問題も計算されません。
カスタム ルール セットでルールが追加または削除された場合:
- SonarQube サーバーを再起動して、ルールを定義するために SonarQube 構成で指定された CppDepend プロジェクトを解析させます
- 再度移動 ルール 管理者としてログインしたタブで、これらの新規/削除されたルールを必要に応じて次を通じて有効化/無効化します 一括変更 アクション。
Sonar-Scannerを実行
こちら SonarQubeドキュメント コマンド ライン引数から Sonar-Scanner を実行することに関するものです。
CppDependプロジェクトファイルパラメータは 必須 -D sonar.cpp.cppdepend.projectPath={'{'}the path of cdproj{'}'}.
SonarQube 拡張機能の構成で行われていない場合は、コマンド ラインから CppDepend スキャナーを指定することもできます
Windows上のC/C++
Linux/macOS上のC/C++
Windows上のJava
Linux/macOS上のJava
ヒント: パスに環境変数を使用しないでください。パスにスペースが含まれる場合は、二重引用符で囲んでください -Dsonar.cpp.cppdepend.projectPath="C:\work with space\project.cdproj"
SonarQube UI で CppDepend ルールの問題を参照
- CppDepend ルールの問題は、SonarQube UI で他の問題と同様にレポートされるようになりました。
- 参照したり、ソース コード宣言へ移動したり(UI 内)、割り当てたり、ステータスを変更したりできます…

注意:
SonarQube UI で一部の問題が欠落している場合:
- このドキュメントで説明されているすべてのルール有効化手順に従ったことを確認してください。
- 次に、対象のルールが少なくとも 1 つの問題を出力するかどうかを確認して、実際に有効化されていることを再確認します。
- このような場合、一部の問題が欠落しているのは、それらの親型のソースファイル宣言が見つからなかったためです。これは通常、コンパイラによって生成された型とそのメンバーで発生します。
