Skip to main content

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

Cuando los lenguajes compilados se analizan mediante el modo de compilación autobuild o manual, 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 cambiando el modo de compilación a manual y especificando comandos de compilación si el flujo de trabajo especifica un modo de compilación, 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.

Cambie a un proceso de compilaciónmanual

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, consulte "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@v3
  with:
    debug: true

Esto carga la base de datos como un artefacto de acciones que puedes descargar en tu máquina local. Para obtener más información, vea «Almacenar los datos de los flujos de trabajo como artefactos».

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.