👋 We've unified all of GitHub's product documentation in one place! Check out the content for REST API, GraphQL API, and Developers. Stay tuned for a blog post later today.


ドキュメントには頻繁に更新が加えられ、その都度公開されています。本ページの翻訳はまだ未完成な部分があることをご了承ください。最新の情報については、英語のドキュメンテーションをご参照ください。本ページの翻訳に問題がある場合はこちらまでご連絡ください。

SARIF ファイルを GitHub にアップロードする

サードパーティの静的解析ツールからGitHubにSARIFファイルをアップロードし、リポジトリ内でそれらのツールからのcode scanningアラートを見ることができます。

リポジトリへの書き込み権限を持つユーザは、サードパーティツールから code scanning データをアップロードできます。

ここには以下の内容があります:

ノート: Code scanningは現在ベータで、変更されることがあります。 ベータへのアクセスをリクエストするには、待ちリストに参加してください。

code scanning に対する SARIF ファイルのアップロードについて

サードパーティツールから結果をアップロードするには、Static Analysis Results Interchange Format (SARIF) 2.1.0 形式を使用する必要があります。 詳しい情報については、「コードスキャンに対する SARIF サポートについて」を参照してください。

GitHub は、リポジトリにアップロードされた SARIF ファイルからの code scanning アラートを表示します。 詳しい情報については、「code scanning からのアラートを管理する」を参照してください。

サードパーティの SARIF ファイルの結果を表示するには、GitHub Actions ワークフローを使用して SARIF ファイルを GitHub にアップロードする必要があります。 SARIF ファイルは、ファイルのアップロードに使用したものと同じ GitHub Actions ワークフローで実行する SARIF 互換の分析ツールから生成できます。 または、ファイルがリポジトリ外のアーティファクトとして生成されている場合、SARIF ファイルをリポジトリに直接プッシュし、ワークフローを使用して SARIF ファイルをアップロードできます。

GitHub Actions での code scanning 分析をアップロードする

サードパーティの SARIF ファイルを GitHub にアップロードするには、GitHub Actions ワークフローが必要です。 詳しい情報については、「GitHub Actions について」および「ワークフローを設定する」を参照してください。

ワークフローは、upload-sarif アクションを使用する必要があります。これには、アップロードの設定に使用できる入力パラメータがあります。 使用する主な入力パラメータは、アップロードする SARIF ファイルのファイルまたはディレクトリを設定する sarif-file です。 ディレクトリまたはファイルのパスは、リポジトリのルートからの相対パスです。 詳しい情報については、「upload-sarif アクション」を参照してください。

upload-sarif アクションは、push および scheduled イベントが発生したときに実行するように設定できます。 GitHub Actions イベントについて詳しい情報は、「ワークフローをトリガーするイベント」を参照してください。

SARIF ファイルに partialFingerprints が含まれていない場合、upload-sarif アクションは、partialFingerprints フィールドを計算し、アラートの重複を防止しようと試みます。 GitHub は、リポジトリに SARIF ファイルと静的分析で使用されるソースコードの両方が含まれている場合にのみ、partialFingerprints を作成できます。 重複アラートの防止に関する詳しい情報については、「コードスキャンに対する SARIF サポートについて」を参照してください。

リポジトリ外で生成された SARIF ファイルのワークフロー例

SARIF ファイルをリポジトリにコミットした後でアップロードする新しいワークフローを作成できます。 これは、SARIF ファイルがリポジトリ外のアーティファクトとして生成される場合に役立ちます。

この例のワークフローは、コミットがリポジトリにプッシュされるたびに実行されます。 アクションは partialFingerprints プロパティを使用して、変更が発生したかどうかを判断します。 コミットがプッシュされたときに実行されるだけでなく、ワークフローは週に 1 回実行されるようにスケジュールされます。 詳しい情報については、「ワークフローをトリガーするイベント」を参照してください。

このワークフローは、リポジトリのルートにある results.sarif ファイルをアップロードします。 ワークフローファイルの作成に関する詳細な情報については「ワークフローを設定する」を参照してください。

または、このワークフローを変更して、SARIF ファイルのディレクトリをアップロードすることもできます。 たとえば、すべての SARIF ファイルをリポジトリのルートにある sarif-output というディレクトリに配置し、アクションの入力パラメータ sarif_filesarif-output に設定できます。

name: "Upload SARIF"

# コードがリポジトリにプッシュされるたびに、スケジュールに従ってワークフローを実行します。
# スケジュールされたワークフローは、毎週日曜日の 00:00(UTC)に実行されます。
on:
  push:
  schedule:
  - cron: '0 0 * * 0'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    # このステップでは、リポジトリのコピーをチェックアウトします。
    - name: Checkout repository
      uses: actions/checkout@v2
    - name: Upload SARIF file
      uses: github/codeql-action/upload-sarif@v1
      with:
        # リポジトリのルートに対する SARIF ファイルへの相対パス
        sarif_file: results.sarif

ESLint 分析ツールを実行するワークフローの例

継続的インテグレーション(CI)ワークフローの一部としてサードパーティの SARIF ファイルを生成する場合は、CI テストの実行後のステップとして、upload-sarif アクションを追加できます。 CI ワークフローがない場合は、GitHub Actions テンプレートを使用して作成できます。 詳しい情報については「事前設定されたワークフローテンプレートで始める」を参照してください。

この例のワークフローは、コミットがリポジトリにプッシュされるたびに実行されます。 アクションは partialFingerprints プロパティを使用して、変更が発生したかどうかを判断します。 コミットがプッシュされたときに実行されるだけでなく、ワークフローは週に 1 回実行されるようにスケジュールされます。 詳しい情報については、「ワークフローをトリガーするイベント」を参照してください。

ワークフローでは、ESLint 静的分析ツールをワークフローのステップとして実行する例を示しています。 Run ESLint ステップは ESLint ツールを実行して、results.sarif ファイルを出力します。 次に、ワークフローは upload-sarif アクションを使用して、results.sarif ファイルを GitHub にアップロードします。 ワークフローファイルの作成に関する詳細な情報については「ワークフローを設定する」を参照してください。

name: "ESLint analysis"

# コードがリポジトリにプッシュされるたびに、スケジュールに従ってワークフローを実行します。
# スケジュールされたワークフローは、毎週日曜日の 00:00(UTC)に実行されます。
on:
  push:
  schedule:
  - cron: '0 0 * * 0'

jobs:
  build:
    steps:
    - uses: actions/checkout@v2
    - name: Run npm install
      run: npm install
    # ESlint コード分析を実行する
    - name: Run ESLint
      # eslint は報告するものを見つけると 1 を終了する
      run: node_modules/.bin/eslint build docs lib script spec-main -f node_modules/@microsoft/eslint-formatter-sarif/sarif.js -o results.sarif || true
    # upload-sarif アクションを使用して、results.sarif を GitHub リポジトリにアップロードする
    - uses: github/codeql-action/upload-sarif@v1
      with:
        # リポジトリのルートに対する SARIF ファイルへの相対パス
        sarif_file: results.sarif

参考リンク

担当者にお尋ねください

探しているものが見つからなかったでしょうか?

弊社にお問い合わせください