> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Devin コードスキャン

> Devin コードスキャンを利用して、リポジトリ全体のパフォーマンス、テストカバレッジ、デッドコード、アクセシビリティなどの問題を検出し、Devin で修正しましょう

コードスキャンとは、1つ以上のリポジトリを読み取って**検出結果**を報告し、プルリクエストによる修正まで行える Devin セッション (およびそこから開始される子セッション) のことです。セキュリティスキャンについては [Security Swarm](/ja/work-with-devin/security-swarm) を参照してください。このページでは、それ以外のスキャンタイプについて説明します。

<Accordion title="前提条件">
  スキャンを実行するには:

  * **コードスキャンを利用する** 権限と、Devin セッションを利用する権限が必要です。[アクセスと権限](/ja/work-with-devin/security-swarm#access-and-permissions)を参照してください。
  * 組織がスキャン対象のリポジトリにアクセスできる必要があります。
</Accordion>

<div id="start-a-scan-with-scan">
  ## `/scan` でスキャンを開始する
</div>

1. コンポーザーで `/scan` に続けて検出したい内容を入力し、スキャン対象のリポジトリをメンションします。例: `/scan find N+1 queries in @acme/api`。コンポーザーで選択済みのリポジトリも対象に含まれます。
2. メッセージを送信します。Devin はスキャンをセットアップするための新しいセッションを開始し、そのセッションを開きます。`/scan` のみを送信した場合は、遅いデータベースクエリや未使用コードの検出といったスキャンの例を提案し、何を検出したいかを尋ねます。
3. Devin はリクエスト内容からスキャンタイプを選び、その内容を1行で示します。たとえば「camelCase の変数名のみを検出するカスタムスキャンをセットアップします」といった具合です。別の内容にしたい場合は返信してください。
4. Devin は **Code scan setup** のカードを表示します。スキャン対象の **Repositories** を確認し、必要に応じて **What should the scan focus on?** にガイダンスを追加してください。リポジトリをメンションしていない場合、Devin は最近のプルリクエストを基に、最も多く作業しているリポジトリをあらかじめ選択します。
5. **Start scan** をクリックします。Devin はカードを送信して初めてスキャンを作成し、そのスキャンのセッションへのリンクを共有します。セットアップを取り消す場合は **Dismiss** をクリックしてください。

スキャンタイプを選んだり、スキャンを自分で設定したりする必要はありません。リポジトリのパフォーマンススキャンなど、領域全体を対象とするリクエストには該当する[スキャンタイプ](#scan-types)が使われます。メモリリークの検出など、より限定的または異なる目的の場合は、記述した内容に焦点を当てた **Custom** スキャンが使われます。

<video autoPlay muted loop playsInline className="w-full aspect-video" src="https://mintcdn.com/cognitionai/C44xaWXfrf74E4c0/images/work-with-devin/code-scans/code-scans-walkthrough.mp4?fit=max&auto=format&n=C44xaWXfrf74E4c0&q=85&s=8c69208be93267cd470d3591447f3c5f" data-path="images/work-with-devin/code-scans/code-scans-walkthrough.mp4" />

セキュリティ以外のスキャンが完了すると、別の通知方法を指定した場合や通知不要とした場合を除き、Devin は検出結果をまとめた Slack のダイレクトメッセージを送信します。Slack メッセージを利用するには、組織の Slack 統合でセッションがダイレクトメッセージを送信できるように設定されている必要があります。

<Note>セキュリティ以外のスキャンは、通常のエフォートで無人実行されます。エフォートの選択や、調査の前に脅威モデルを確認できるよう Devin が一時停止するインタラクティブモードは、[セキュリティスキャン](/ja/work-with-devin/security-swarm#interactive-mode)でのみ利用できます。</Note>

<div id="scan-types">
  ## スキャンタイプ
</div>

| スキャンタイプ              | 検出内容                                                                    |
| -------------------- | ----------------------------------------------------------------------- |
| **Performance**      | パフォーマンス上の問題と、コードをより高速・効率的にできる改善余地。                                      |
| **Database queries** | コードがデータストアにクエリを発行している箇所の問題 (非効率・不正確・安全でない・信頼性に欠けるクエリ) 。                 |
| **Test coverage**    | テストでカバーされていないフローやコンポーネント。                                               |
| **Dead code**        | どこからも到達しなくなったコード (未使用の関数、モジュール、フラグ、依存関係など、安全に削除できるもの) 。                 |
| **Code quality**     | コードの読みやすさ、変更のしやすさ、正しさの維持を妨げる保守性の問題。                                     |
| **Cleanup**          | 動作を変えずに整理できる、雑然とした・冗長な・作り込みすぎのコード。                                      |
| **Telemetry**        | テレメトリや計測の実装が必要な箇所。                                                      |
| **Accessibility**    | ラベルの欠落、キーボード操作の不備、コントラスト不足など、アクセシビリティガイドライン (WCAG) を満たしていないフロントエンドのコード。 |
| **Compliance**       | 機密データの取り扱い、監査証跡、保持期間など、スキャンで検証するよう設定した規制・標準・ポリシーに対する不備。                 |
| **Migration docs**   | コードのエンドツーエンドのフローとビジネスロジックを追跡し、図を含む移行対応のドキュメントを生成します。                    |
| **Custom**           | 個人データをログに記録している箇所や、チームで徹底したい命名規則など、指定した任意の観点。                           |

脆弱性や攻撃対象領域には、[Security Swarm](/ja/work-with-devin/security-swarm) のスキャンを利用してください。

<div id="review-and-fix-findings">
  ## 検出結果のレビューと対処
</div>

検出結果を順に処理するには、スキャンを開始したセッション、またはスキャンのメインセッションで **Findings** タブを開きます。未対応の検出結果は、進行段階ごとにグループ化されています。

* **Unassigned** — 修復セッションがまだ開始されていません。
* **Assigned** — 修復セッションは開始済みですが、プルリクエスト は未作成です。
* **PR open** — その検出結果に対するプルリクエスト が作成されています。

各検出結果では、次の操作が可能です。

* **Assign to Devin** — 検出結果に対処してプルリクエスト を作成する Devin セッションを開始します。**Open session** で作業の進行を確認し、**Open PR** で結果をレビューできます。
* **Dismiss** — 対応が不要な検出結果を削除します。

スキャンの実行中は、スキャンのメインセッションの Findings タブに **Pause scan**、**Resume scan**、**Kill scan** も表示されます。これらの操作には **Manage code scans** 権限が必要です。

<div id="scale-scanning">
  ## scanのスケール
</div>

<div id="scan-new-commits">
  ### Scan new commits
</div>

いずれかの種類のスキャンが完了した後、Findings タブで **Scan new commits** をクリックすると、そのスキャンの前回の完了実行以降に追加されたコミットのみを対象とする増分実行を開始できます。この実行ではスキャンの既存の設定が利用され、検出結果は同じスキャンに追加されます。このボタンはスキャンの実行中やアーカイブ後には表示されず、利用には **Manage code scans** 権限が必要です。新しいコミットがない場合、実行は開始されません。

セッション内で Devin に、既存のスキャンの新しいコミットをスキャンするよう依頼することもできます。

<div id="automations">
  ### 自動化
</div>

[自動化](/ja/product-guides/automations)では、任意の種類のスキャンをスケジュールに沿って、またはイベントに応じて実行できます。エージェントの種類として **Code scan** を選択し、**Scan** で次のいずれかを指定します。

* **Create a new scan** を選択すると、自動化が発生するたびに新規スキャンを開始します。リポジトリ、スキャンの種類、プロファイルを指定してください。セキュリティ以外のスキャンの種類には、同じ種類の[スキャンプロファイル](/ja/work-with-devin/security-swarm#scan-profiles)が必要です。
* 既存のスキャンを選択すると、自動化が発生するたびに、そのスキャンの新しいコミットをスキャンします。対象のスキャンには、完了済みの実行が既にある必要があります。

自動化から開始したスキャンは無人で実行されます。詳しくは[自動化からスキャンを開始する](/ja/work-with-devin/security-swarm#start-scans-from-automations)を参照してください。

<div id="api">
  ### API
</div>

[Code Scans API](/ja/api-reference/v3/code-scans/triggering-code-scans) を使えば、Web アプリを使わずにスキャンの開始、ポーリング、検出結果の取得ができます。API 経由でセキュリティ以外のスキャンを開始する場合は、そのスキャンタイプに対応するプロファイルの `profile_id` を指定する必要があります。`scan_type` は、デフォルトでそのプロファイルのタイプになります。API 経由で開始したスキャンはインタラクティブに操作できません。

<div id="related-pages">
  ## 関連ページ
</div>

* [Security Swarm](/ja/work-with-devin/security-swarm) — セキュリティスキャン、スキャンプロファイル、インタラクティブモード、code scans の権限について。
* [Devin API 経由での code scan のトリガー](/ja/api-reference/v3/code-scans/triggering-code-scans) — エンドツーエンドの API フロー。
* [自動化](/ja/product-guides/automations) — スキャンのスケジュール設定とトリガー。
