Acerca del análisis de lenguajes compilados
Cuando los lenguajes compilados se analizan mediante el autobuild modo de compilación 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:
-
La CodeQL
autobuildcaracterística usa heurística para compilar el código en un repositorio. Sin embargo, algunas veces, este enfoque da como resultado un análisis incompleto del repositorio. Por ejemplo, cuando existen varios comandosbuild.shen un mismo repositorio, es posible que no se complete el análisis, ya que el pasoautobuildsolo ejecutará uno de los comandos y, por tanto, algunos archivos de código fuente podrían no compilarse. -
Algunos compiladores no funcionan con CodeQL y pueden causar problemas al analizar el código. Por ejemplo, la mayoría de los compiladores de C específicos del proveedor no serán reconocidos por CodeQL. El código de C deberá compilarse con un compilador reconocido (como GCC, Clang o MSVC) para poder analizarse.
Si el CodeQL análisis examina menos líneas de código de las esperadas, puede intentar cambiar el modo de compilación a manual y especificar comandos de compilación si el flujo de trabajo especifica un modo de compilación, reemplazando el autobuild paso por comandos de compilación si el flujo de trabajo contiene un autobuild paso o inspeccionando la copia de los archivos de origen en la CodeQL base de datos.
Cambio a un proceso de compilación de manual
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 origen que desea examinar.
Para más información sobre definir pasos de compilación, consulta CodeQL code scanning for compiled languages.
Inspecciona la copia de los archivos de origen en la CodeQL base de datos
Es posible que pueda comprender por qué algunos archivos de código fuente no se han analizado inspeccionando la copia del código fuente incluido en la CodeQL base de datos. Para obtener la base de datos desde su flujo de trabajo de Acciones, modifique el paso init del archivo de flujo de trabajo CodeQL y configure debug: true.
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
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 con artefactos de flujo de trabajo.
El artefacto contendrá una copia archivada de los archivos de origen escaneados por CodeQL llamada 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 sepa qué tipos de archivo no se están analizando, es más fácil comprender cómo puede que necesite cambiar el flujo de trabajo para el análisis de CodeQL.