> For the complete documentation index, see [llms.txt](https://docs.flosum.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.flosum.com/devops/devops-ja/paipurain/paipurain-1/paipurain-kdosukyan.md).

# パイプライン操作: コードスキャン

{% hint style="warning" %}

#### 旧UI向けに作成

この記事は旧UI向けに作成されました。手順は今でも使用できますが、スクリーンショットは古くなっています。場合によっては、手順で参照されている項目が移動または変更されていることがあります。項目が見つからない場合は、 [どこに行ったのか](/devops/devops-ja/shii-uiux-heno/dokonittanoka.md) 記事。
{% endhint %}

## ![](https://225042527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FG5ZbxX918xOHwbAwAJ4n%2FSummary2-Small-Icon.svg?alt=media\&token=da26a67f-ff7f-47b3-8669-06be960dc2d7) 概要

その **コードスキャン** Code Scan の操作は、デプロイ前に Salesforce メタデータを解析してコード品質の問題を特定します。静的コード解析によって、ブランチ内の Apex クラス、トリガー、その他のコンポーネントにおけるルール違反を報告し、定義したコーディング標準を満たしていることを確認します。Code Scan のルールセットには以下が含まれます:

* **コーディングスタイルとベストプラクティス**：可読性、保守性、一貫性をコードベース全体で向上させます。
* **セキュリティのベストプラクティス**：コード内の一般的な脆弱性や危険なパターンを特定します。
* **パフォーマンスの提案**：エンドユーザーに影響する前に、非効率なロジックを強調表示します。

重大度のしきい値を設定して、違反が指定レベルに達した場合またはそれを超えた場合にパイプラインを中断できます。パイプラインで Code Scan を実行すると、一貫したコード品質を維持でき、信頼性が高く、安全で応答性の高いコンポーネントをデプロイできます。

この記事では、Code Scan の操作を構成して使用する方法を説明します。詳細は以下のセクションを参照してください:

* [#scan-types](#scan-types "mention")
* [#severity-levels](#severity-levels "mention")
* [#code-scan-operation-configuration](#code-scan-operation-configuration "mention")
* [#code-scan-results-1](#code-scan-results-1 "mention")

{% hint style="info" %}

#### ベストプラクティス

* すべてのデプロイの前に Code Scan を自動的に実行します。
* CI/CD ルールに基づいて重大度のしきい値を設定します。
* 定期的に **Code Scan 結果** を確認し、繰り返し発生する問題を修正します。
* 組み合わせる **コードスキャン** と **手動ステップ** を組み合わせて、本番デプロイ前にレビューと承認を必須にします。
* 一貫した **コードスキャン** 構成をすべての環境で維持します。
  {% endhint %}

### スキャンタイプ

Code Scan の操作は 2 つのスキャンタイプをサポートします: **Apex PMD** と **Flosum Scan**。以下の説明を確認して、チームの品質基準に最も合うスキャンタイプを選択してください。Check type のドロップダウンメニューでは、Flosum Scan は Flosum として表示されます。

#### Apex PMD

**Apex PMD** Apex PMD は、Salesforce コンポーネントにおける一般的な問題を検出するオープンソースのルールセットです。Flosum Scan よりもルール数が少なく、スキャンも高速に完了するため、素早いフィードバック向けの軽量なオプションです。基本チェックで要件を満たす場合、または検出する問題を少なくしたい場合は Apex PMD を選択してください。

#### Flosum Scan

**Flosum Scan** Flosum Scan は、コード品質の最高基準を求めるチーム向けに構築された、DevOps の最も包括的なルールセットです。Apex PMD のすべてのルールに加え、数百件の追加チェックを備えており、Apex PMD の約 6 倍のカバレッジを提供します。また、Apex PMD では対象外の言語にも静的解析を拡張しており、以下を含みます **Salesforce Flow** と **TypeScript**。この拡張されたカバレッジにより、より深い分析と厳格な検証が可能になり、各デプロイにさらなる安心をもたらします。Salesforce コードを最も徹底的に保護したい場合は Flosum Scan を選択してください。

{% hint style="info" %}

#### なぜ Flosum Scan なのか?

* **より広い言語カバレッジ**：正式にサポートを追加します **Salesforce Flow** と **TypeScript**、どちらも Apex PMD では解析されません **Apex PMD**.
* **より深い Lightning カバレッジ**： **JavaScript** と **Lightning Web Components**に対して 19 個と比較して **Apex PMD**.
* **より強力なメタデータ検証**： **Salesforce Metadata**に対して 2 個と比較して **Apex PMD**.
* **継続的に拡張される**：この **Flosum Scan** ルールセットは Flosum によって維持され、Salesforce プラットフォームの変更に合わせて拡張され続けます。
  {% endhint %}

#### 言語別ルールカバレッジ

下の表は、各スキャンタイプでサポートされている言語を示しています。チャートは、サポート対象言語ごとの各スキャンタイプのルールカバレッジを比較しています。この情報を使って、選択したスキャンタイプがブランチで使用している言語に対して十分なルールセットを提供していることを確認してください。

<table><thead><tr><th width="399.666748046875">言語</th><th align="center">Apex PMD</th><th align="center">Flosum Scan</th></tr></thead><tbody><tr><td>JavaScript / Lightning Web Components</td><td align="center"><img src="https://225042527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FFyAlTI4AIHg46Nb6SL90%2FCheckBox-Icon.svg?alt=media&amp;token=3ab847f7-5568-405e-aa0a-23e02f38d451" alt="" data-size="line"></td><td align="center"><img src="https://225042527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FFyAlTI4AIHg46Nb6SL90%2FCheckBox-Icon.svg?alt=media&amp;token=3ab847f7-5568-405e-aa0a-23e02f38d451" alt="" data-size="line"></td></tr><tr><td>TypeScript</td><td align="center"><img src="https://225042527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FzwOFIIvK4ue9gjxBh5iX%2FX-Icon.svg?alt=media&amp;token=bbcd7bc0-1097-450d-b6ce-62677c4c4097" alt="" data-size="line"></td><td align="center"><img src="https://225042527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FFyAlTI4AIHg46Nb6SL90%2FCheckBox-Icon.svg?alt=media&amp;token=3ab847f7-5568-405e-aa0a-23e02f38d451" alt="" data-size="line"></td></tr><tr><td>Apex</td><td align="center"><img src="https://225042527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FFyAlTI4AIHg46Nb6SL90%2FCheckBox-Icon.svg?alt=media&amp;token=3ab847f7-5568-405e-aa0a-23e02f38d451" alt="" data-size="line"></td><td align="center"><img src="https://225042527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FFyAlTI4AIHg46Nb6SL90%2FCheckBox-Icon.svg?alt=media&amp;token=3ab847f7-5568-405e-aa0a-23e02f38d451" alt="" data-size="line"></td></tr><tr><td>Salesforce Metadata</td><td align="center"><img src="https://225042527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FFyAlTI4AIHg46Nb6SL90%2FCheckBox-Icon.svg?alt=media&amp;token=3ab847f7-5568-405e-aa0a-23e02f38d451" alt="" data-size="line"></td><td align="center"><img src="https://225042527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FFyAlTI4AIHg46Nb6SL90%2FCheckBox-Icon.svg?alt=media&amp;token=3ab847f7-5568-405e-aa0a-23e02f38d451" alt="" data-size="line"></td></tr><tr><td>HTML / Salesforce Lightning Design System</td><td align="center"><img src="https://225042527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FFyAlTI4AIHg46Nb6SL90%2FCheckBox-Icon.svg?alt=media&amp;token=3ab847f7-5568-405e-aa0a-23e02f38d451" alt="" data-size="line"></td><td align="center"><img src="https://225042527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FFyAlTI4AIHg46Nb6SL90%2FCheckBox-Icon.svg?alt=media&amp;token=3ab847f7-5568-405e-aa0a-23e02f38d451" alt="" data-size="line"></td></tr><tr><td>Salesforce Flow</td><td align="center"><img src="https://225042527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FzwOFIIvK4ue9gjxBh5iX%2FX-Icon.svg?alt=media&amp;token=bbcd7bc0-1097-450d-b6ce-62677c4c4097" alt="" data-size="line"></td><td align="center"><img src="https://225042527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FFyAlTI4AIHg46Nb6SL90%2FCheckBox-Icon.svg?alt=media&amp;token=3ab847f7-5568-405e-aa0a-23e02f38d451" alt="" data-size="line"></td></tr><tr><td>Visualforce</td><td align="center"><img src="https://225042527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FFyAlTI4AIHg46Nb6SL90%2FCheckBox-Icon.svg?alt=media&amp;token=3ab847f7-5568-405e-aa0a-23e02f38d451" alt="" data-size="line"></td><td align="center"><img src="https://225042527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FFyAlTI4AIHg46Nb6SL90%2FCheckBox-Icon.svg?alt=media&amp;token=3ab847f7-5568-405e-aa0a-23e02f38d451" alt="" data-size="line"></td></tr></tbody></table>

<figure><img src="https://225042527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FmEJomEj5Qdzu2DhZttFe%2FPipelineOperationCodeScan-Chart-01.png?alt=media&amp;token=f613ed31-b5e6-431f-af8f-24fa0d48a3bf" alt=""><figcaption></figcaption></figure>

### 重大度レベル

Code Scan が問題を検出すると、その問題がコード品質にとってどれほど重大かを示す重大度レベルが割り当てられます。これらのレベルを使って修正の優先順位を付け、操作が失敗する条件となる重大度のしきい値を設定します。

<table><thead><tr><th width="150">重大度レベル</th><th>説明</th></tr></thead><tbody><tr><td>ブロッカー</td><td>システム障害やデータ損失を引き起こす可能性のある深刻なセキュリティリスクや重大なバグ。</td></tr><tr><td>クリティカル</td><td>通常は Salesforce AppExchange の標準に違反する重大な問題。</td></tr><tr><td>メジャー</td><td>保守性に影響するベストプラクティス違反やパフォーマンスの問題。</td></tr><tr><td>マイナー</td><td>影響の小さいコード品質の問題やスタイルの不整合。</td></tr><tr><td>情報</td><td>対応を必要としない情報メッセージ。</td></tr></tbody></table>

## Code Scan 操作の設定

{% hint style="info" %}
以下の手順は、このパイプライン操作の構成に適用されます。パイプラインステップの追加と次のステップの設定に関する一般的な手順については、次の記事を参照してください。

[パイプラインステップの追加](/devops/devops-ja/paipurain/paipurainsuteppuno/paipurainsuteppuno.md)
{% endhint %}

{% stepper %}
{% step %}

### 操作とタイプを選択

1. 次を **操作** ドロップダウンメニューをクリックします。
2. 選択 **コードスキャン**.

   <div align="left"><figure><img src="https://225042527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FJylQJG03TIzkfefDNYLj%2FPipelineOperationCodeScan-Config-S01-01.png?alt=media&amp;token=50da9df9-7700-4111-b356-1d43b6601806" alt="" width="563"><figcaption></figcaption></figure></div>
3. 次を **Check type** ドロップダウンメニューをクリックします。
4. 選択 **Apex PMD** または **Flosum**. **Flosum** は Flosum Scan タイプです。詳細は上の「スキャン種類」セクションを参照してください。

   <div align="left"><figure><img src="https://225042527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FkMG1WoaoeonBhuJpbd9u%2FPipelineOperationCodeScan-Config-S01-02.png?alt=media&amp;token=14189fc7-aaf4-443f-9c2b-2a36f9cb4911" alt="" width="563"><figcaption></figcaption></figure></div>

{% endstep %}

{% step %}

### 説明としきい値を入力

1. （任意）次の **説明** テキストボックスに、この Code Scan が実行する内容の概要を入力します。
2. 次を **重大度しきい値** ドロップダウンメニューをクリックします。
3. Code Scan 操作を失敗させる最小の重大度レベルを選択します。詳細は上の「重大度レベル」セクションを参照してください。

   <div align="left"><figure><img src="https://225042527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FA6IsOXnlWyUCGVXt6kL4%2FPipelineOperationCodeScan-Config-S02-01.png?alt=media&amp;token=571b2ca8-d64f-4a4f-a48a-d9f29c889b2d" alt="" width="563"><figcaption></figcaption></figure></div>

{% hint style="info" %}
その **重大度しきい値** は、選択した重大度レベル以上の問題が見つかった場合、Code Scan が失敗することを意味します。
{% endhint %}
{% endstep %}
{% endstepper %}

## Code Scan の結果

{% hint style="info" %}
パイプラインが開始されると、その進行状況と結果は、 **アクティビティ** タブで、パイプラインを実行したブランチから確認できます。以下の手順では、この操作の結果を確認する方法を示します。ブランチからパイプライン結果にアクセスする一般的な手順については、次の記事を参照してください。

* [パイプライン結果の表示](/devops/devops-ja/paipurain/paipurain/paipurainno-1.md)
  {% endhint %}

{% stepper %}
{% step %}

### サマリーとログ

Code Scan が完了したら、次を選択して結果サマリーを表示できます: **コードスキャン** パイプライン結果のステップ

<div align="left"><figure><img src="https://225042527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FCqkIBlg2aZej5hNl2buC%2FPipelineOperationCodeScan-Results-S01-01.png?alt=media&amp;token=0f223c77-c928-428b-8552-b78e9abcb0c4" alt="" width="563"><figcaption></figcaption></figure></div>

その **サマリー** Code Scan 結果には以下の情報が表示されます:

<table><thead><tr><th width="200.3333740234375">項目</th><th>説明</th></tr></thead><tbody><tr><td>ステータス</td><td><p><strong>完了</strong> 見つかったすべての問題が設定した重大度しきい値未満の場合。</p><p><strong>例外</strong> いずれかの問題が重大度しきい値以上の場合。</p></td></tr><tr><td>所要時間</td><td>Code Scan の完了にかかった時間。時間、分、秒で表示されます。</td></tr><tr><td>開始/終了日時</td><td>Code Scan の開始日時と終了日時。</td></tr><tr><td>検出された問題</td><td>各重大度レベルで見つかった問題の数。</td></tr><tr><td>ログ</td><td>Code Scan ジョブのログエントリです。ログを使ってジョブのステータスやエラーメッセージを確認できます。</td></tr></tbody></table>

Code Scan ログの例:

{% code overflow="wrap" expandable="true" %}

```
[2026年5月22日 13:09]: [info] ジョブを開始しました
[2026年5月22日 13:09]: [info] Salesforce プロジェクトの作成を開始しました
[2026年5月22日 13:09]: [info] Salesforce プロジェクトの作成が完了しました
[2026年5月22日 13:09]: [info] Salesforce コンポーネントの取得を開始しました
[2026年5月22日 13:09]: [info] Salesforce コンポーネントの取得が完了しました
[2026年5月22日 13:09]: [info] コードアナライザーを開始しました
[2026年5月22日 13:10]: [info] コードアナライザーが完了しました
[2026年5月22日 13:10]: [error] ジョブに失敗しました: Code scan が許容値「Minor」を超えました
```

{% endcode %}
{% endstep %}

{% step %}

### Code Scan の結果

Code Scan 結果を表示して、ブランチ内のどのファイルに問題が見つかり、各重大度レベルがいくつ検出されたかを確認できます。

1. クリック **結果を表示**.

   <div align="left"><figure><img src="https://225042527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FrOAv0f836UScNKtf3aS0%2FPipelineOperationCodeScan-Results-S02-01.png?alt=media&amp;token=a15a8b79-c6f1-47f9-8b0f-4f88264ae34a" alt="" width="563"><figcaption></figcaption></figure></div>

{% hint style="info" %}
現在、 **Code Scan 結果** ページの重大度レベルラベルは、他の Code Scan セクションで使用されているラベルと異なります。この小さな問題はまもなく解決されます。ひとまず、以下の対応表で重大度レベルを読み替えてください:

* **クリティカル → ブロッカー**
* **高 → クリティカル**
* **中 → メジャー**
* **低 → マイナー**
* **マイナー → 情報**
  {% endhint %}

結果ページの上部には、各重大度レベルで見つかった問題の合計数が表示されます。合計の下には、問題のあるコンポーネントファイルの一覧と、重大度別に整理された問題の棒グラフが表示されます。

<div align="left"><figure><img src="https://225042527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FaJKENrYjN8xUipfT7eFB%2FPipelineOperationCodeScan-Results-S02-02.png?alt=media&amp;token=d942f17b-de32-4f35-8474-0fca346a4c6f" alt="" width="563"><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}

### ファイルレベルの結果

ファイルレベルの結果では、各問題の原因とソースファイル内の発生箇所が説明されます。各問題を確認し、必要に応じてコンポーネントに必要な変更を加えてください。

1. 一覧からファイルをクリックすると、問題の完全な一覧を表示できます。

   <div align="left"><figure><img src="https://225042527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FCP8sA4LTlyR8ZVbTguv7%2FPipelineOperationCodeScan-Results-S03-01.png?alt=media&amp;token=4df75b5f-1c1c-4dd3-bbc3-b556d01af65d" alt="" width="563"><figcaption></figcaption></figure></div>
2. 利用できる場合は、 **さらに表示** をクリックして、このファイルで見つかった追加の問題を表示します。

以下のスクリーンショットと表では、各問題に表示される情報を説明しています。

<div align="left"><figure><img src="https://225042527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRpUu5iMlzMFAudyBvMOl%2Fuploads%2FHdwii7OwDPNZ8z4dOuIC%2FPipelineOperationCodeScan-Results-S03-02.png?alt=media&amp;token=9556a7af-d237-43f8-968f-55b1212b8694" alt="" width="563"><figcaption></figcaption></figure></div>

<table><thead><tr><th width="199.66668701171875">列</th><th>説明</th></tr></thead><tbody><tr><td>重大度レベル</td><td>中に文字が入った色付きの丸が重大度レベルを示します。文字は重大度レベル名の先頭文字と一致し、色はそのレベルに対応します。注: Major と Minor はどちらも M で始まりますが、Major はオレンジ、Minor は緑です。</td></tr><tr><td>ルール名</td><td>問題を検出したルールの名前。</td></tr><tr><td>違反の説明</td><td>問題の原因の説明。</td></tr><tr><td>違反箇所</td><td>問題が見つかった行番号と列番号。</td></tr></tbody></table>
{% endstep %}
{% endstepper %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.flosum.com/devops/devops-ja/paipurain/paipurain-1/paipurain-kdosukyan.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
