Acerca de code scanning con CodeQL
CodeQL es el motor de análisis de código que desarrolló GitHub para automatizar las verificaciones de seguridad. Puedes analizar tu código utilizando CodeQL y mostrando los resultados como alertas del code scanning.
Hay dos tres principales de usar el análisis de CodeQL para code scanning:
-
Usa la configuración predeterminada para configurar automáticamente el análisis de CodeQL para code scanning en el repositorio. La configuración predeterminada elige los lenguajes que se van a analizar, los conjuntos de consultas que se van a ejecutar y los eventos que desencadenan exámenes y, después, muestra un resumen de la configuración de análisis. Después de habilitar CodeQL, GitHub Actions ejecutará ejecuciones de flujo de trabajo para examinar el código. Para obtener más información, vea «Configuración del análisis de código para un repositorio».
-
Usa la configuración avanzada para agregar el flujo de trabajo de CodeQL al repositorio. Esto genera un archivo de flujo de trabajo personalizable en el que se usa github/codeql-action para ejecutar la instancia de CodeQL CLI. Para obtener más información, vea «Configuración del análisis de código para un repositorio».
-
Ejecutar el CLI de CodeQL directamente en un sistema de IC externo y cargar los resultados en GitHub. Para obtener más información, vea «Acerca del escaneo de código de CodeQL en tu sistema de IC».
Acerca de CodeQL
El CodeQL trata el código como datos, permitiéndote encontrar vulnerabilidades potenciales en tu código con mayor confianza que los analizadores estáticos tradicionales.
- Generas una base de datos de CodeQL para representar tu base de código.
- Entonces, ejecutarás consultas de CodeQL en esa base de datos para identificar problemas en la base de código.
- Estos resultados de consulta se muestran como alertas del code scanning en GitHub cuando utilizas al CodeQL con el code scanning.
CodeQL es compatible tanto con lenguajes compilados como interpretados, y puede buscar vulnerabilidades y errores en el código escrito en los lenguajes compatibles.
- C/C++
- C#
- Go
- Java/Kotlin
- JavaScript/TypeScript
- Python
- Ruby
Notas:
- El análisis de CodeQL para Kotlin se encuentra actualmente en versión beta. Durante el beta, el análisis para Kotlin será menos exhaustivo que el análisis de CodeQL para otros lenguajes.
- Usa
java
para analizar el código escrito en Java, Kotlin o ambos. - Usa
javascript
para analizar el código escrito en JavaScript, TypeScript o ambos.
Para más información, vea la documentación en el sitio web de CodeQL: "Lenguajes y marcos admitidos".
Acerca de las consultas de CodeQL
Los expertos de GitHub, investigadores de seguridad y contribuyentes comunitarios escriben y mantienen las consultas predeterminadas de CodeQL que se utilizan para el code scanning. Las consultas se actualizan frecuentemente para mejorar el análisis y reducir cualquier resultado falso positivo. Las consultas son código abierto, por lo que puede ver y contribuir en ellas en el repositorio de github/codeql
. Para obtener más información, consulte CodeQL en el sitio web de CodeQL. También puede escribir consultas propias. Para obtener más información, consulte "Acerca de las consultas de CodeQL" en la documentación de CodeQL.
Si vas a examinar el código con la configuración avanzada o un sistema de CI externo, puedes ejecutar consultas adicionales como parte del análisis. Estas consultas deben pertenecer a un paquete de consultas (beta) de CodeQL publicado o un paquete de CodeQL en un repositorio. Los paquetes (beta) de CodeQL proporcionan los siguientes beneficios con respecto a los paquetes de QL tradicionales:
- Cuando un paquete de consultas de CodeQL (beta) se publica en el Container registry de GitHub, todas las dependencias transitivas que requieren las consultas y un caché de compilación se incluyen en el paquete. Esto mejora el rendimiento y garantiza que el ejecutar las consultas del paquete proporciona resultados idénticos cada vez que actualizas a una versión nueva del paquete o de CLI.
- Los paquetes de QL no incluyen dependencias transitivas, por lo que las consultas del paquete pueden depender únicamente de las bibliotecas estándar (es decir, a las que se hace referencia mediante una instrucción
import LANGUAGE
en la consulta), o bien de bibliotecas del mismo paquete de QL que la consulta. - Los paquetes de consulta (beta) de CodeQL se pueden descargar de varios registros de contenedor de GitHub. Para obtener más información, vea «Personalización del examen de código».
Para obtener más información, vea «Acerca de los paquetes de CodeQL».
Nota: La funcionalidad de administración de paquetes de CodeQL, incluidos los de CodeQL, se encuentra actualmente en versión beta y está sujeta a cambios.