ノート: CodeQLランナーは非推奨になりました。 GitHub Enterprise Server 3.0移行では、CodeQL CLIバージョン2.6.3をインストールしてCodeQLランナーを置き換えることができます。
詳しい情報についてはCodeQLランナーの非推奨化を参照してください。 CodeQL CLIへの移行に関する情報については「CodeQLランナーからCodeQL CLIへの移行」を参照してください。
init
コマンドに時間がかかりすぎる
CodeQLランナー は、コードのビルドと解析を行う前に、CodeQL CLI と CodeQL ライブラリを含んでいる CodeQL バンドルへのアクセス権が必要です。
お使いのマシンで CodeQLランナー を初めて使用する際、init
コマンドは CodeQL バンドルをマシンにダウンロードします。 ダウンロードには数分かかります。
CodeQL バンドルは次の実行の前にキャッシュされるので、CodeQLランナー を同じマシンで再度使用する際は、CodeQL バンドルを再ダウンロードすることはありません。
この自動ダウンロードを回避するには、CodeQL バンドルをマシンに手動でダウンロードし、init
コマンドの --codeql-path
フラグでパスを指定します。
ビルド中にコードが見つからない
CodeQLランナー の analyze
コマンドで、No source code was seen during the build
というエラーが出て失敗する場合、CodeQL がコードをモニターできなかったことを示しています。 このようなエラーが発生する理由として、次のようなものがあります。
-
自動言語検出により、サポートされている言語が特定されたが、リポジトリにその言語の分析可能なコードがない。 一般的な例としては、言語検出サービスが
.h
や.gyp
ファイルなどの特定のプログラミング言語に関連付けられたファイルを見つけたが、対応する実行可能コードがリポジトリに存在しない場合です。 この問題を解決するには、init
コマンドの--languages
フラグを使用して、解析する言語を手動で定義できます。 詳しい情報については、「CodeQLランナー を CI システムで設定する」を参照してください。 -
コンパイル型言語を
autobuild
コマンドを使用せずに解析し、init
ステップの後に自分でビルドステップを実行している。 ビルドが機能するには、CodeQLランナー がビルドのプロセスをモニターできるように環境をセットアップする必要があります。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:
-
macOS でコンパイル型言語を
autobuild
コマンドを使用せずに解析し、init
ステップの後に自分でビルドステップを実行している。 SIP (システム整合性保護) が有効になっている場合、解析は失敗することがあります。OSX の最近のバージョンでは、SIP はデフォルトで有効になっています。 この問題を解決するには、ビルドコマンドの前に$CODEQL_RUNNER
の環境変数を付けてください。 たとえばビルドコマンドがcmd arg1 arg2
の場合、$CODEQL_RUNNER cmd arg1 arg2
を実行します。 -
コードがコンテナまたは別のマシンでビルドされている。 コンテナ化されたビルドを使用しているか、ビルドを別のマシンに委託している場合は、必ず CodeQLランナー をコンテナまたはビルドタスクを実行するマシンで実行してください。 詳しい情報については、「コンテナで CodeQL コードスキャンを実行する」を参照してください。