Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Bases de datos de código y qué contienen

5 tareas · 35 min · Principiante

Un análisis semántico no lee el código como texto: primero lo convierte en una base de datos y después le hace preguntas. Si la base está incompleta, las preguntas se contestan sobre algo que no es tu repositorio. En esta sala abres la base de datos de código de api-pedidos, la API de Mangostino Agro, y miras qué guarda, de qué momento es y qué quedó fuera sin que nadie se enterara.

0 de 5 · 0%

Objetivo de la sala

Un análisis semántico no lee el código como texto: primero lo convierte en una base de datos y después le hace preguntas. Si la base está incompleta, las preguntas se contestan sobre algo que no es tu repositorio. En esta sala abres la base de datos de código de api-pedidos, la API de Mangostino Agro, y miras qué guarda, de qué momento es y qué quedó fuera sin que nadie se enterara.

Un análisis semántico, como el de CodeQL, trabaja en dos tiempos. En el primero, una extracción recorre el código y construye una base de datos de código: tablas relacionales con la estructura del programa (su árbol sintáctico, el flujo de control y el flujo de datos), una copia del código fuente tal como estaba y unos metadatos. En el segundo, una consulta pregunta a esa base y devuelve alertas.

La documentación oficial lo resume así: una base contiene datos extraídos de un código, de un solo lenguaje y en un momento concreto. Dos consecuencias prácticas. Un repositorio con dos lenguajes necesita dos bases. Y la base es una foto: si el código cambia después, la base no se entera hasta que se vuelve a construir.

Responde para continuar

El repositorio de una empresa tiene código en Python y en JavaScript, y se quiere analizarlo entero con una consulta por lenguaje. ¿Qué hace falta construir?

Los metadatos de la base dicen de qué lenguaje es, cuántas líneas de código tenía y, sobre todo, de qué revisión del repositorio salió. Ese dato decide si una alerta habla del código que hoy está en la rama o de uno que ya cambió. Cuando alguien dice «el análisis no ve el fallo que arreglamos ayer», lo primero que se comprueba es de qué revisión es la base.

Abre bd/codeql-database.yml en la base de Mangostino Agro.

Responde para continuar

Escribe la revisión del código de la que salió la base de datos.

La extracción no siempre procesa todo. Un archivo con sintaxis que el extractor no entiende (por ejemplo, de una versión vieja del lenguaje) se omite, y un lenguaje sin base no se analiza en absoluto. Lo peligroso es que un archivo omitido no produce alertas: en el informe parece limpio, cuando en realidad nadie lo miró. El registro de la extracción es donde se descubre.

Lee el registro de extracción de la base y busca la línea que dice ERROR.

Responde para continuar

Escribe el nombre del archivo que la extracción omitió.

Saber cuánto del repositorio queda sin cubrir es parte de leer un análisis. Se suman los archivos que la extracción omitió dentro de un lenguaje con base y los de los lenguajes que no tienen base.

Con el inventario del repositorio y el registro de extracción, calcula el hueco de cobertura. No cuentes las plantillas de marcado: no son código de programa.

Responde para continuar

¿Cuántos archivos de código de api-pedidos no están representados en ninguna base? Escribe solo el número.

Una alerta ausente puede significar dos cosas muy distintas: que el código se miró y está bien, o que no se miró. Quien lee el informe sin mirar la extracción las confunde. Por eso un informe responsable dice cuánto código cubrió, y por eso se revisa la cobertura antes de celebrar un resultado en verde.

Responde para continuar

Un archivo omitido por la extracción no aparece con alertas en el informe. ¿Cómo se debe leer eso?

Inicia sesión para registrar tus puntos y progreso en el ranking.

Whoami-Labs Pro

Whoami-Labs Pro utiliza cookies

Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad