Skip to main content

Esta versión de GitHub Enterprise Server se discontinuó el 2024-09-25. No se realizarán lanzamientos de patch, ni siquiera para problemas de seguridad críticos. Para obtener rendimiento mejorado, seguridad mejorada y nuevas características, actualice a la versión más reciente de GitHub Enterprise Server. Para obtener ayuda con la actualización, póngase en contacto con el soporte técnico de GitHub Enterprise.

CodeQL examinó menos líneas de lo esperado

Si CodeQL analizó menos código de lo esperado, es posible que tengas que usar un comando de compilación personalizado.

Acerca del análisis de lenguajes compilados

Para lenguajes compilados como C/C++, C#, Go, Java, Kotlin y Swift, CodeQL solo examina los archivos que se compilan durante el análisis. Por lo tanto, la cantidad de líneas de código escaneado será menor de lo esperado si parte del código fuente no se compila correctamente. Esto puede ocurrir por varios motivos:

  1. La característica autobuild de CodeQL utiliza la heurística para compilar el código de un repositorio. Sin embargo, algunas veces, este enfoque da como resultado un análisis incompleto del repositorio. Por ejemplo, cuando existen varios comandos build.sh en un mismo repositorio, es posible que no se complete el análisis, ya que el paso autobuild solo ejecutará uno de los comandos y, por tanto, algunos archivos de código fuente podrían no compilarse.

  2. Algunos compiladores no funcionan con CodeQL y pueden causar problemas cuando analizan el código. Por ejemplo, CodeQL no reconocerá la mayoría de los compiladores de C específicos de proveedor no se reconocerán. El código de C deberá compilarse con un compilador reconocido (como GCC, Clang o MSVC) para poder analizarse.

Si su análisis de CodeQL examina menos líneas de código de las esperadas, puede probar reemplazando el paso autobuild por comandos de compilación si el flujo de trabajo contiene un paso autobuild o inspeccionando la copia de los archivos de origen en la base de datos de CodeQL.

Reemplace el paso autobuild

Reemplace el proceso autobuild con los mismos comandos de compilación que usaría en producción. Esto garantiza que CodeQL sepa exactamente cómo compilar todos los archivos de código fuente que quieras escanear. Para obtener más información sobre cómo definir los pasos de compilación, consulta Análisis de código de CodeQL para lenguajes compilados.

Inspecciona la copia de los archivos de código fuente en la base de datos de CodeQL

Podrías entender por qué algunos archivos de código fuente no se ha analizado si inspeccionas la copia del código fuente que se incluye utilizando la base de datos de CodeQL. Para obtener la base de datos del flujo de trabajo de Acciones, modifique el paso init del archivo de flujo de trabajo de CodeQL y establezca debug: true.

- name: Initialize CodeQL
  uses: github/codeql-action/init@v2
  with:
    debug: true

Esto carga la base de datos como un artefacto de acciones que puedes descargar en tu máquina local. Para más información, consulta Almacenamiento y uso compartido de datos desde un flujo de trabajo.

El artefacto contendrá una copia archivada de los archivos de código fuente examinados por CodeQL denominada src.zip. Si compara los archivos de código fuente del repositorio con los de src.zip, verá qué tipos de archivo faltan. Una vez que sepas qué tipos de archivo son los que no se analizan es más fácil entender cómo podrías cambiar el flujo de trabajo para el análisis de CodeQL.