Note: The CodeQLランナー is being deprecated. Please use the CodeQL CLI version 2.6.2 or greater instead. GitHub Enterprise Server 3.3 will be the final release series that supports the CodeQLランナー. On GitHub Enterprise Cloud, the CodeQLランナー will be supported until March 2022. For more information, see the CodeQL runner deprecation.
ノート: Code scanningはGitHub Enterprise Server 2.22ではベータです。 Code Scanningの一般に利用なリリースについては、GitHub Enterprise Serverの最新リリースにアップグレードしてください。
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フラグを使用して、解析する言語を手動で定義できます。 詳しい情報については、「code scanning を 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 コードスキャンを実行する」を参照してください。