Skip to main content

Utilizar el análisis de código de CodeQL con tu sistema de IC existente

Puedes analizar tu código con la CodeQL CLI u otra herramienta en un sistema de integración continua de terceros y cargar los resultados en GitHub.com. Las alertas del code scanning resultantes se muestran junto con cualquier alerta que se genere dentro de GitHub Enterprise Cloud.

Who can use this feature?

Code scanning está disponible para todos los repositorios públicos en GitHub.com. Para utilizar code scanning en un repositorio privado que pertenece a una organización, debes tener una licencia para GitHub Advanced Security. Para obtener más información, vea «Acerca de GitHub Advanced Security».

Acerca del uso del code scanning con el sistema de CI existente

Como alternativa a la ejecución de code scanning dentro de GitHub con GitHub Actions, puedes analizar código en un sistema externo de integración continua o entrega/implementación continua (CI/CD) y, a continuación, cargar los resultados en GitHub Enterprise Cloud.

Puedes añadir la CodeQL CLI a tu sistema de terceros, o utilizar otra herramienta de análisis estático de terceros que pueda producir resultados como datos del Formato de Intercambio de Resultados para Análisis Estático (SARIF) 2.1.0. Para más información sobre el formato SARIF compatible, consulta «Soporte de SARIF para escaneo de código».

La CodeQL CLI es una herramienta de línea de comandos independiente que puedes utilizar para analizar código. Para obtener más información, vea «Acerca de la CLI de CodeQL».

Las alertas para code scanning que puedes generar externamente se muestran de la misma forma que aquellas para el code scanning que generas con GitHub. Si ejecutas el análisis de código con varias configuraciones, a veces se generará la misma alerta mediante más de una configuración. Si una alerta proviene de varias configuraciones, puedes ver el estado de la alerta para cada configuración en la página de alertas. Para obtener más información, vea «Acerca de las alertas de análisis de código».

Nota: Cargar datos de SARIF para mostrarlos como resultados de code scanning en GitHub Enterprise Cloud es compatible para los repositorios que pertenezcan a organizaciones con la GitHub Advanced Security habilitada y para los repositorios públicos en GitHub.com. Para obtener más información, vea «Administración de la configuración de seguridad y análisis para el repositorio».

Configuración de la herramienta de análisis

Primero, deberás descargar la herramienta de análisis que prefieras y configurarla con el sistema de IC.

Si estás usando la CodeQL CLI, necesitas habilitar el contenido integral del paquete de la CodeQL CLI para cada servidor de IC en el que quieras ejecutar el análisis de code scanning de CodeQL. Para obtener más información, vea «Configuración de la CLI de CodeQL».

Una vez que hayas puesto la herramienta de análisis a disposición de los servidores del sistema de IC, estarás listo para generar datos.

Análisis de código

Si deseas analizar el código con la CodeQL CLI u otra herramienta de análisis, querrás consultar el código que deseas analizar y configurar el entorno de código base, asegurándote de que hay dependencias disponibles. También puedes encontrar el comando de compilación para el código base, normalmente disponible en el archivo de configuración del sistema de IC.

A continuación, puedes completar los pasos para analizar el código base y generar resultados, que variarán en función de la herramienta de análisis estático que estés usando.

Si usas la CodeQL CLI, primero deberás crear una base de datos de CodeQL a partir del código y, a continuación, analizar la base de datos para generar resultados de SARIF. Para obtener más información, vea «Preparación del código para el análisis de CodeQL» y «Análisis del código con consultas de CodeQL».

Generar un token para autenticarse con GitHub Enterprise Cloud

Cada servidor de CI necesita una GitHub App o personal access token para cargar los resultados en GitHub Enterprise Cloud, sin importar si estás utilizando la CodeQL CLI, la API de REST u otro método. Debes usar un token de acceso o GitHub App con el permiso de escritura security_events. Si los servidores de IC utilizan un token con este ámbito para verificar los repositorios de GitHub Enterprise Cloud, podrías utilizar potencialmente el mismo token. De lo contrario, crea un token nuevo con el permiso de escritura security_events y agrégalo al almacén de secretos del sistema de CI. Para información, consulta "Acerca de la creación de GitHub Apps" y "Administración de tokens de acceso personal".

Para obtener más información sobre los distintos métodos para cargar resultados en GitHub Enterprise Cloud, consulta «Subir un archivo SARIF a GitHub».

Cargando tus resultados en GitHub Enterprise Cloud

Una vez que hayas analizado el código, generado resultados SARIF y asegurado de que puedes autenticarte con GitHub Enterprise Cloud, puedes cargar los resultados en GitHub Enterprise Cloud. Para obtener más información sobre los diferentes métodos que puedes usar para cargar los resultados, consulta «Subir un archivo SARIF a GitHub».

Para obtener detalles específicos sobre cómo cargar los resultados en GitHub Enterprise Cloud con CodeQL CLI, consulta «Carga de los resultados del análisis de CodeQL en GitHub».

Predeterminadamente, el code scanning espera un archivo de resultado SARIF por cada análisis de un repositorio. Como consecuencia, cuando cargues un segundo archivo de resultados SARIF para una confirmación, este se tratará como un reemplazo para el conjunto de datos original. Puede que desees cargar dos archivos SARIF diferentes para un análisis si, por ejemplo, la herramienta de análisis genera un archivo SARIF diferente para cada idioma que analizas o cada conjunto de reglas que usas. Si quieres cargar más de un conjunto de resultados para una confirmación en un repositorio, debes identificar cada conjunto de resultados como un conjunto único. La forma de especificar una categoría para una carga de SARIF varía de acuerdo con el método de análisis. Para obtener más información, vea «Soporte de SARIF para escaneo de código».