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. Las alertas de code scanning resultantes se muestran junto con cualquier alerta que se genere en GitHub.

¿Quién puede utilizar esta característica?

Usuarios con acceso de escritura

Repositorios propiedad de la organización con GitHub Advanced Security habilitado

Note

El administrador del sitio debe habilitar code scanning antes de que puedas utilizar esta característica. Para obtener más información, vea «Configuración la digitalización de código para el dispositivo».

Es posible que no puedas habilitar o deshabilitar code scanning si un propietario de una empresa ha establecido una directiva GitHub Advanced Security (GHAS) en el nivel empresarial. Para obtener más información, vea «Aplicación de directivas de seguridad y análisis de código de la empresa».

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 Server.

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 mediante varias configuraciones, en ocasiones una alerta tendrá varios orígenes de análisis. Si una alerta tiene varios orígenes de análisis, puede ver el estado de la alerta para cada origen de análisis en la página de alertas. Para obtener más información, vea «Acerca de las alertas de análisis de código».

Note

Cargar datos de SARIF para mostrarlos como resultados de code scanning en GitHub Enterprise Server se admite en los repositorios propiedad de una organización que tengan GitHub Advanced Security habilitado. 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 Server

Cada servidor de CI necesita una GitHub App o personal access token para cargar los resultados en GitHub Enterprise Server, 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 Server, 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 Server, consulta «Subir un archivo SARIF a GitHub».

Cargando tus resultados en GitHub Enterprise Server

Una vez que hayas analizado el código, generado resultados SARIF y asegurado de que puedes autenticarte con GitHub Enterprise Server, puedes cargar los resultados en GitHub Enterprise Server. 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 Server 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».