注: CodeQL runner は非推奨になりました。 GitHub Enterprise Server 3.0 以降では、CodeQL CLI バージョン 2.6.3 をインストールして、CodeQL runner を置き換えることができます。
詳しくは、「CodeQL ランナーの非推奨化」をご覧く� さい。 CodeQL CLI への移行については、「CodeQL ランナーから CodeQL CLI への移行」を参照してく� さい。
init
コマンドの所要時間が長すぎる
CodeQL runner は、コードのビルドと解析を行う前に、CodeQL CLI と CodeQL ライブラリを含んでいる CodeQL バンドルへのアクセス権が必要です。
お使いのコンピューターで CodeQL runner を初めて使用する際、init
コマンドは CodeQL バンドルをコンピューターにダウンロードします。 ダウンロードには数分かかります。
CodeQL バンドルは次の実行の前にキャッシュされるので、CodeQL runner を同じマシンで再度使用する際は、CodeQL バンドルを再ダウンロードすることはありません。
この自動ダウンロードを回避するには、CodeQL バンドルをコンピューターに手動でダウンロードし、init
コマンドの --codeql-path
フラグを使用してパスを指定します。
ビルド中にコードが見つからない
CodeQL runner の analyze
コマンドがエラー No source code was seen during the build
で失敗した� �合は、CodeQL がコードを監視できなかったことを示します。 このようなエラーが発生する理由として、次のようなものがあります。
-
自動言語検出により、サポートされている言語が特定されたが、リポジトリにその言語の分析可能なコードがない。 一般的な例としては、言語検出サービスが
.h
ファイルや.gyp
ファイルなどの特定のプログラミング言語に関連付けられたファイルを見つけたが、対応する実行可能コードがリポジトリに存在しない� �合です。 この問題を解決するには、init
コマンドの--languages
フラグを使用して、分析する言語を手動で定義できます。 詳細については、「CI システ� での CodeQL runner の構成」を参照してく� さい。 -
autobuild
コマンドを使用せずにコンパイル済み言語を分析していて、init
ステップの後にビルド ステップを自分で実行します。 ビルドが機能するには、CodeQL runner がビルドのプロセスをモニターできるように環境をセットアップする必要があります。init
コマンドは、必要な環境変数をエクスポートする方法についての説明を生成するので、それをコピーしてinit
コマンドの実行後にスクリプトを実行できます。- macOS および Linux:
$ . codeql-runner/codeql-env.sh
- Windows では、コマンド シェル (
cmd
) またはバッチ ファイル (.bat
) を使用します。> call codeql-runner\codeql-env.bat
- Windows で、PowerShell を使用する� �合:
> cat codeql-runner\codeql-env.sh | Invoke-Expression
環境変数もファイル
codeql-runner/codeql-env.json
に� �納されます。 このファイルには、環境変数キーを値にマッピングする単一の JSON オブジェクトが含まれています。init
コマンドで生成されたスクリプトを実行できない� �合、JSON 形式のデータを代わりに使用できます。注:
init
コマンドの--temp-dir
フラグを使用して一時ファイルのカスタ� ディレクトリを指定した� �合、codeql-env
ファイルへのパスが異なる� �合があります。 - macOS および Linux:
-
autobuild
コマンドを使用せずに macOS でコンパイル済み言語を分析していて、init
ステップの後にビルド ステップを自分で実行します。 SIP (システ� 整合性保護) が有効になっている� �合、解析は失敗することがあります。OSX の最近のバージョンでは、SIP はデフォルトで有効になっています。 修正するには、ビルド コマンドの前に$CODEQL_RUNNER
環境変数を付ける必要があります。 たとえば、ビルド コマンドがcmd arg1 arg2
である� �合は、$CODEQL_RUNNER cmd arg1 arg2
を実行する必要があります。 -
コードがコンテナまたは別のマシンでビルドされている。 コンテナ化されたビルドを使用しているか、ビルドを別のマシンに委託している� �合は、必ず CodeQL runner をコンテナまたはビルドタスクを実行するマシンで実行してく� さい。 詳細については、「Running CodeQL code scanning in a container」(コンテナーでの CodeQL コード スキャンの実行) を参照してく� さい。