Solucionar problemas del ejecutor de CodeQL en tu sistema de IC

Si estás teniendo problemas con el Ejecutor de CodeQL, puedes solucionarlos si utilizas estos tips.

El Escaneo de código se encuentra disponible si tienes una licencia de GitHub Advanced Security. Para obtener más información, consulta la sección "Acerca de GitHub Advanced Security".

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.

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.

  1. 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 comando init. Para obtener más información, consulta la sección "Configurar el Ejecutor de CodeQL en tu sistema de IC".

  2. Estás analizando un lenguaje compilado sin utilizar el comando autobuild y ejecutaste los pasos de compilación después del paso init. Para que funcione la compilación, debes configurar el ambiente para que el Ejecutor de CodeQL pueda monitorear el proceso de compilación. El comando init 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 comando init.

    • 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 comando init, entonces puedes utilizar los datos en formato JSON.

    Nota: Si utilizaste el marcador --temp-dir flag del comando init para especificar un directorio personalizado para los archivos temporales, la ruta hacia los archivos de codeql-env podría ser diferente.

  3. 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 paso init. 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 es cmd arg1 arg2, debes ejecutar $CODEQL_RUNNER cmd arg1 arg2.

  4. 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".

¿Te ayudó este documento?

Política de privacidad

¡Ayúdanos a hacer geniales estos documentos!

Todos los documentos de GitHub son de código abierto. ¿Notas algo que esté mal o que no sea claro? Emite una solicitud de cambios.

Haz una contribución

O, aprende cómo contribuir.