Nota: El Ejecutor de CodeQL se va a obsoletizar. Por favor, utiliza la versión 2.6.2 de CodeQL CLI o superior en su lugar. GitHub Enterprise Server 3.3 será la última serie de lanzamiento que será compatible con el Ejecutor de CodeQL. En Nube de GitHub Enterprise, el Ejecutor de CodeQL será compatible hasta marzo del 2022. Para obtener más información, consulta la obsoletización del ejecutor de CodeQL.
Nota: El Escaneo de código se encuentra en beta dentro de GitHub Enterprise Server 2.22. Para encontrar un lanzamiento de disponibilidad general del escaneo de código, mejora al último lanzamiento de GitHub Enterprise Server.
El comando init
tarda demasiado
Antes de que el Ejecutor de CodeQL pueda compilar y analizar código, necesita tener acceso al paquete de CodeQL, el cual contiene el CLI y las bibliotecas de CodeQL.
Cuando utilizas el Ejecutor de CodeQL por primera vez en tu máquina, el comando init
descargará el paquete de CodeQL a tu máquina. Esta descarga puede demorar algunos minutos. El paquete de CodeQL se guarda en el caché entre las ejecuciones, así que si utilizas el Ejecutor de CodeQL nuevamente en la misma máquina, no descargará el paquete de CodeQL nuevamente.
Para evitar esta descarga automática, puedes descargar manualmente el paquete de CodeQL a tu máquina ye specifica la ruta utilizando el marcador de --codeql-path
del comando init
.
No se encontró código durante la compilación
Si el comando analyze
para el Ejecutor de CodeQL falla con un error de No source code was seen during the build
, esto indica que CodeQL no pudo monitorear tu código. Hay muchas razones que podrían explicar esta falla.
-
La detección automática del lenguaje identificó un lenguaje compatible, pero no hay código analizable en dicho lenguaje dentro del repositorio. Un ejemplo típico es cuando nuestro servicio de detección de lenguaje encuentra un archivo que se asocia con un lenguaje de programación específico como un archivo
.h
, o.gyp
, pero no existe el código ejecutable correspondiente a dicho lenguaje en el repositorio. Para resolver el problema, puedes definir manualmente los lenguajes que quieres analizar si utilizas el marcador--languages
del comandoinit
. Para obtener más información, consulta la sección "Configurar el escaneo de código en tu sistema de IC". -
Estás analizando un lenguaje compilado sin utilizar el comando
autobuild
y ejecutaste los pasos de compilación después del pasoinit
. Para que la compilación funcione, debes configurar el ambiente para que el Ejecutor de CodeQL pueda monitorear el código. El comandoinit
genera instrucciones de cómo exportar las variables de ambiente requeridas, así que puedes copiar y ejecutar el script después de que has ejecutado el comandoinit
.- En macOS y Linux:
$ . codeql-runner/codeql-env.sh
- En Windows, utilizando el shell de comandos (
cmd
) o un archivo de lote (.bat
):> call codeql-runner\codeql-env.bat
- En Windows, utilizando PowerShell:
> cat codeql-runner\codeql-env.sh | Invoke-Expression
Las variables de ambiente también se almacenan en el archivo
codeql-runner/codeql-env.json
. Este archivo contiene solo un objeto de JSON que mapea las claves de variable de ambiente a valores. Si no puedes ejecutar el script que generó el comandoinit
, entonces puedes utilizar los datos en formato JSON.Nota: Si utilizaste el marcador
--temp-dir
flag del comandoinit
para especificar un directorio personalizado para los archivos temporales, la ruta hacia los archivos decodeql-env
podría ser diferente. - En macOS y Linux:
-
Estás analizando un lenguaje compilado en macOS sin utilizar el comando
autobuild
y ejecutas los pasos de compilación tú mismo después del pasoinit
. Si está habilitada la SIP (Protección Integral del Sistema, por sus siglas en inglés), que es lo predeterminado en las versiones más recientes de OSX, el análisis podría fallar. Para arreglar esto, usa un prefijo en el comando de la compilación con la variable de ambiente$CODEQL_RUNNER
. Por ejemplo, si tu comando de compilación escmd arg1 arg2
, debes ejecutar$CODEQL_RUNNER cmd arg1 arg2
. -
El código se compila en un contenedor o en una máquina independiente. Si utilizas una compilación que ya esté en un contenedor o si terciarizas la compilación a otra máquina, asegúrate de ejecutar el Ejecutor de CodeQL en el contenedor o en la máquina en donde toma lugar tu tarea de compilación. Para obtener más información, consulta la sección "Ejecutar el escaneo de código de CodeQL en un contenedor".