# 定期診断

## 概要 {#overview}

定期診断は、GitHub リポジトリの対象ブランチで変更されたファイルを、毎週または毎月のスケジュールで自動的に診断する機能です。予定時刻になると、Takumi は前回の予定時刻から今回の予定時刻までに変更されたファイルを対象に、ホワイトボックス診断またはグレーボックス診断を実行します。

Shisho Cloud byGMO の Web 画面から利用でき、Slack 連携は不要です。Slack 上で設定する[定期診断 (Slack)](/docs/ja/t/assessment/features/periodic-assessment.md)とは別の機能です。

各回で診断するのは期間中に変更されたファイルだけなので、アプリケーション全体を毎回診断する場合よりもクレジットの消費を抑えられます。機能の追加や修正が頻繁に行われるリポジトリで、変更によって埋め込まれた脆弱性を継続的に確認したい場合に適しています。

## 事前準備 {#prerequisites}

定期診断の対象には、連携済みの GitHub リポジトリを指定できます。GitHub と連携する手順は「[GitHub を連携する](/docs/ja/t/assessment/features/integrations/github.md)」を参照ください。

## 定期診断の作成 {#create}

サイドバーの「診断」をクリックし、画面上部の「定期診断」タブを選択すると、定期診断の一覧が表示されます。「定期診断を作成」ボタンを押すと、設定画面が開きます。

### 設定 {#settings}

設定画面の主な項目は以下のとおりです。

- **診断名**：この定期診断を識別するための名前を入力する
- **レポート言語**：診断レポートの言語を選択する（英語または日本語）
- **実行スケジュール**：「毎週」または「毎月」を選び、実行する曜日または日付と、時刻を指定する。時刻は UTC で指定する。29 日以降を指定した場合、その日がない月は末日に実行する
- **診断手法**：「ホワイトボックス診断」または「グレーボックス診断」を選択する
- **クレジット上限**：1 回の実行で消費するクレジットの上限を指定する（最小 50）
- **ソースコードとファイルスコープ**：診断対象の GitHub リポジトリとブランチ、診断範囲と除外設定を指定する。各項目の内容は[ホワイトボックス診断](/docs/ja/t/assessment/features/whitebox-assessment.md)と同じ。グレーボックス診断の場合は、[グレーボックス診断](/docs/ja/t/assessment/features/graybox-assessment.md)と同じくアプリケーションの設定も指定する
- **通知先**：この定期診断から作成された診断が完了したときに通知する Slack チャンネル・メールアドレスを指定する (任意)

なお、あるリポジトリに設定できる定期診断は 1 つのみです。

## 実行の流れ {#how-it-works}

予定時刻になると、Takumi は次の 2 点を確認します。どちらかを満たさない場合、その回の実行は中止されます。

- 組織のクレジット残高が、クレジット上限以上あること
- 前回の予定時刻から今回の予定時刻までに、対象ブランチへの新たな push があること

両方の条件を満たす場合は、期間中に変更されたファイルを対象とする診断を Takumi が作成し、自動的に開始します。作成された診断は診断一覧に表示されます。

### 今すぐ実行 {#run-now}

定期診断の一覧で、各行のメニューから「今すぐ実行」を選ぶと、予定時刻を待たずに実行できます。この場合の診断対象は、実行した時点までの 1 週間（毎月のスケジュールでは 1 か月）に変更されたファイルです。

### 実行履歴 {#run-history}

定期診断の一覧から定期診断を選ぶと、詳細画面の「実行履歴」で、各回の診断対象の期間と結果を確認できます。結果は次のいずれかです。

- **開始済み**：既に診断が作成・開始されている
- **中止 (差分なし)**：期間内に対象ブランチへの push が存在しなかったため実行しなかった
- **中止 (クレジット不足)**：クレジット残高がクレジット上限より少なかったため実行しなかった
- **失敗**：その他の内部エラーで診断を開始できなかった

## 診断結果の確認 {#results}

定期診断が作成した診断のレポートは、通常のホワイトボックス診断やグレーボックス診断と同じく、診断一覧から開いて確認できます。通知先を設定している場合は、診断が完了すると Slack またはメールで完了通知が届きます。

## 定期診断の編集と削除 {#edit-and-delete}

設定は、定期診断の詳細画面で編集できます。変更したスケジュールが適用されるのは、次の予定時刻からです。

定期診断を削除するには、一覧の各行のメニューから「削除」を選択します。削除後は定期実行が行われなくなりますが、作成済みの診断はそのまま残ります。

## クレジット消費に関して {#credits}

各回の診断は、クレジット上限の範囲内でクレジットを消費します。実行が中止された回では、クレジットは消費されません。

予定時刻に組織のクレジット残高がクレジット上限より少ない場合、その回の診断は実行されません。定期診断を継続して利用する場合は、クレジット残高にご注意ください。
