SonarQube スキャンの構成
SonarQube は、ソース・コードの全体的な正常性と品質の概要を提供し、新しいコード内で見つかった問題を強調表示します。 コード・アナライザーは、20 を超えるコーディング言語において、NULL ポインター間接参照などの注意を要するバグ、論理エラー、リソース・リークを検出します。
以下のようにして、ソース・コードの品質を継続的に分析および測定するように SonarQube を構成します。
-
IBM Cloud コンソールで、メニュー・アイコン
をクリックし、 DevOps を選択します。 「ツールチェーン」ページで、ツールチェーンをクリックしてその「概要」ページを開きます。 あるいは、アプリの「概要」ページの「継続的デリバリー」カードで、**「ツールチェーンの表示」をクリックします。 次に、「概要」**をクリックします。
a. **「ツールの追加」**をクリックします。
b. 「ツール統合」セクションで**「SonarQube」**をクリックします。
-
SonarQube ツール統合のこのインスタンスの名前を入力します。
-
ツールチェーンから SonarQube カードをクリックしたときに開くようにしたい SonarQube インスタンスの URL を入力します。
-
オプション: SonarQube サーバーへの接続に使用するユーザー名を入力します。
ユーザー名を指定する必要があるのは、パスワードを使用して SonarQube サーバーに接続する場合のみです。 接続に認証トークンを使用する場合は、このフィールドを空のままにしてください。
-
SonarQube サーバーへの接続に使用するパスワードまたは認証トークンを入力します。
-
サーバーをパブリック・インターネット上に配置できない場合は、 「拡張」 を選択します。 IBM Cloud では、指定した接続の詳細を検証できず、このサーバーへの API アクセスを必要とする特定の機能が無効になります。 デリバリー・パイプラインは、このサーバーにネットワーク経由でアクセスできるプライベート・ワーカーを使用しないと機能しません。
-
「統合の作成」 をクリックします。
-
ツールチェーンの「概要」ページの**「サード・パーティー・ツール」カードで、「SonarQube」**をクリックして、接続先の SonarQube インスタンスのダッシュボードを表示します。
継続的統合パイプラインへの Sonarqube の追加
デフォルトの SonarQube インスタンス
sonarqube-config
がdefault
に設定されている場合、デフォルトで SonarQube がスキャンに使用されます。 このスキャンは、 Docker-in-Dockerとして実行されます。
使用されるインスタンスは、実行中にのみ使用可能です。 そのため、ダッシュボードにアクセスできません。
-
デフォルトでは、パイプラインは SonarQube コミュニティー・エディションを使用します。このコミュニティー・エディションの checks.Many 脆弱性ルールとホスト・スポットの問題は、 Community Editionではカバーされていません。
-
Community Edition で脆弱性がチェックされているかどうかを確認するには、 Sonarqube コミュニティーの質問のスレッド を参照してください。
-
CISO に登録されている SonarQube Community Edition インスタンスであるデフォルトの実装は、ITSS 承認済みの edition.SonarQube Enterprise Edition のみではありません。
SonarQubeをダウンロードするには、 SonarQube Downloads を参照してください。
開発クラスター上の SonarQube インスタンス
sonarqube-config
が cluster
に設定されている場合、パイプラインは dev クラスターでのパイプライン実行中に SonarQube インスタンスを作成します。 このインスタンスには、静的スキャン・ステージが正常に runs.You SonarQube ダッシュボードには、ポート転送を使用してローカルでアクセスできます。
既存の SonarQube インスタンス
sonarqube-config
を custom
に設定して、独自の SonarQube インスタンスを既存のパイプラインに追加し、ツール統合をツールチェーンに追加してから、 SonarQube ツール統合パラメーターをパイプラインに追加します。 詳しくは、 SonarQubeの構成 を参照してください。
パラメーター
SonarQube スキャンを実行するには、パイプラインに以下の継続的統合パラメーターが必要です。
名前 | タイプ | 説明 | 必須またはオプションです |
---|---|---|---|
クラスター名 | テキスト | Docker ビルド・クラスターの名前。 | 必須 |
dev-region | テキスト | クラスターをホストしている IBM Cloud リージョン。 | 必須 |
opt-in-sonar | テキスト | sonarQube スキャンを有効にするオプション。 | 必須 |
sonarqube | ツール統合 | Sonarqube ツール統合。 | オプション |
sonarqube-config | テキスト | 分離された Docker-in-Docker コンテナー (デフォルト構成) または既存の開発 Kubernetes クラスター (クラスター構成) で SonarQube スキャンを実行します。 あるいは、独自の SonarQube インスタンスを持ち込み、 SonarQube ツール統合 (カスタム構成) を構成することもできます。 オプション: default 、 cluster 、または custom 。
デフォルトは default です。 詳しくは、継続的統合パイプラインへの SonarQube の追加 を参照してください。 |
必須 |
opt-in-sonar-ホット・スポット | テキスト | ホット・スポットを検出するための Sonarqube スキャン。 | オプション |
パイプラインのパラメーターについて詳しくは、パイプラインのパラメーターを参照してください。
複数の SonarQube ツール統合をパイプラインに追加した場合は、ツール統合パラメーターである sonarqube パイプライン・パラメーターの値を変更して、それらのツール統合を切り替えることができます。
SonarQube にインストールされたプラグイン
DevSecOps パイプラインは、デフォルトで SonarQube バージョン 10.0 を使用します。
プリインストールされているプラグインのリストについて詳しくは、 プラグイン を参照してください。
SonarQube から報告された問題
DevSecOps パイプラインは、 SonarQube スキャン中に報告された問題をフィルターで除外します。 パイプラインは、 CODE_SMELL
タイプでも BUG
タイプでもない問題に対して、コンプライアンス・インCcidencesを排他的に作成します。 パイプラインは、状況が CLOSED
である問題もスキップします。
品質ゲートの更新
パイプラインで作成された SonarQube インスタンスを使用する場合は、デフォルトの品質ゲートを更新できます。
-
static-scan
タスクのパイプライン・ログの URL を使用して、作成された SonarQube ダッシュボードに移動します。図 1. SonarQube ダッシュボード -
「品質ゲート (Quality Gates)」>**「作成」**をクリックします。
-
以下のいずれかのオプションを使用して、品質ゲートを設定します。
- **「既定として設定」**をクリックして、新規作成される品質ゲートをデフォルトとして設定します。
- ダッシュボードで、プロジェクトを選択してから、「プロジェクト設定」>**「品質ゲート (Quality Gate)」**をクリックして、新規作成される品質ゲートをそのプロジェクトに使用します。
-
どの品質ゲートをプロジェクトに関連付けるかを指定します。 新しいスキャンはこの品質ゲートで評価され、エビデンスはこの品質ゲートの結果から作成されるようになります。
SonarQubeについて詳しくは、 SonarQube Documentationを参照してください。
独自の構成ファイルの使用
独自の SonarQube インスタンスを使用しなくてもデフォルトの構成を変更することができます。 構成ファイルの作成先となるリポジトリー内に sonar-project.properties
ファイルを作成します。 IBM のスクリプトは、リポジトリーで既存の構成ファイル configuration sonar-project.properties
を検出すると、デフォルトのファイルの代わりにそのファイルを使用します。
構成ファイルで使用可能な分析パラメーターについて詳しくは、ここにある「 分析パラメーター 」を参照してください。
構成ファイルに正しいログイン資格情報とホスト URL を追加したことを確認してください。
別の静的スキャン実装の使用
.pipeline-config.yaml
ファイルを変更して独自のカスタム・スクリプトを static-scan
ステージに追加することで、独自の静的スキャン実装を使用できます。
SonarQube に関する詳細
SonarQubeについて詳しくは、 ツールチェーンへの SonarQube 分析の統合を参照してください。