Skip to main content
コードスキャンとは、1つ以上のリポジトリを読み取って検出結果を報告し、プルリクエストによる修正まで行える Devin セッション (およびそこから開始される子セッション) のことです。セキュリティスキャンについては Security Swarm を参照してください。このページでは、それ以外のスキャンタイプについて説明します。
スキャンを実行するには:
  • コードスキャンを利用する 権限と、Devin セッションを利用する権限が必要です。アクセスと権限を参照してください。
  • 組織がスキャン対象のリポジトリにアクセスできる必要があります。

/scan でスキャンを開始する

  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 をクリックしてください。
スキャンタイプを選んだり、スキャンを自分で設定したりする必要はありません。リポジトリのパフォーマンススキャンなど、領域全体を対象とするリクエストには該当するスキャンタイプが使われます。メモリリークの検出など、より限定的または異なる目的の場合は、記述した内容に焦点を当てた Custom スキャンが使われます。 セキュリティ以外のスキャンが完了すると、別の通知方法を指定した場合や通知不要とした場合を除き、Devin は検出結果をまとめた Slack のダイレクトメッセージを送信します。Slack メッセージを利用するには、組織の Slack 統合でセッションがダイレクトメッセージを送信できるように設定されている必要があります。
セキュリティ以外のスキャンは、通常のエフォートで無人実行されます。エフォートの選択や、調査の前に脅威モデルを確認できるよう Devin が一時停止するインタラクティブモードは、セキュリティスキャンでのみ利用できます。

スキャンタイプ

脆弱性や攻撃対象領域には、Security Swarm のスキャンを利用してください。

検出結果のレビューと対処

検出結果を順に処理するには、スキャンを開始したセッション、またはスキャンのメインセッションで Findings タブを開きます。未対応の検出結果は、進行段階ごとにグループ化されています。
  • Unassigned — 修復セッションがまだ開始されていません。
  • Assigned — 修復セッションは開始済みですが、プルリクエスト は未作成です。
  • PR open — その検出結果に対するプルリクエスト が作成されています。
各検出結果では、次の操作が可能です。
  • Assign to Devin — 検出結果に対処してプルリクエスト を作成する Devin セッションを開始します。Open session で作業の進行を確認し、Open PR で結果をレビューできます。
  • Dismiss — 対応が不要な検出結果を削除します。
スキャンの実行中は、スキャンのメインセッションの Findings タブに Pause scanResume scanKill scan も表示されます。これらの操作には Manage code scans 権限が必要です。

scanのスケール

Scan new commits

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

自動化

自動化では、任意の種類のスキャンをスケジュールに沿って、またはイベントに応じて実行できます。エージェントの種類として Code scan を選択し、Scan で次のいずれかを指定します。
  • Create a new scan を選択すると、自動化が発生するたびに新規スキャンを開始します。リポジトリ、スキャンの種類、プロファイルを指定してください。セキュリティ以外のスキャンの種類には、同じ種類のスキャンプロファイルが必要です。
  • 既存のスキャンを選択すると、自動化が発生するたびに、そのスキャンの新しいコミットをスキャンします。対象のスキャンには、完了済みの実行が既にある必要があります。
自動化から開始したスキャンは無人で実行されます。詳しくは自動化からスキャンを開始するを参照してください。

API

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