Acerca del análisis de lenguajes compilados
Para lenguajes compilados como C/C++, C#, Go, and Java, 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 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 comandosbuild.sh
en un mismo repositorio, es posible que no se complete el análisis, ya que el pasoautobuild
solo 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 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, 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@v2
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.