Skip to main content

database analyze

Analiza una base de datos y genera resultados significativos en el contexto del código fuente.

¿Quién puede utilizar esta característica?

CodeQL está disponible para los siguientes tipos de repositorios:

Nota:

En este contenido se describe la versión más reciente de CodeQL CLI. Para obtener más información sobre esta versión, consulta https://github.com/github/codeql-cli-binaries/releases.

Para ver detalles de las opciones disponibles para este comando en una versión anterior, ejecuta el comando con la opción --help en el terminal.

Sinopsis

Shell
codeql database analyze --format=<format> --output=<output> [--threads=<num>] [--ram=<MB>] <options>... -- <database> <query|dir|suite|pack>...

Descripción

Analiza una base de datos y genera resultados significativos en el contexto del código fuente.

Ejecuta un conjunto de consultas (o algunas consultas individuales) en una base de datos CodeQL y genera resultados, con estilo de alertas o rutas de acceso, en SARIF u otro formato interpretado.

Este comando combina el efecto de los comandos codeql database run-queries y codeql database interpret-results. Si quieres ejecutar consultas cuyos resultados no cumplen con los requisitos para su interpretación como alertas de código fuente, usa en su lugar codeql database run-queries o codeql query run y, luego, codeql bqrs decode para convertir los resultados sin formato en una notación legible.

Opciones

Opciones principales

<database>

[Obligatorio] Ruta de acceso a la base de datos CodeQL que se va a consultar.

<query|dir|suite|pack>...

Consultas que se van a ejecutar. Cada argumento tiene el formato scope/name@range:path, donde:

  • scope/name es el nombre completo de un paquete de CodeQL.
  • range es un intervalo de SemVer.
  • path es una ruta de acceso al sistema de archivos.

Si se especifica scope/name, range y path son opcionales. Un elemento range que falta implica la versión más reciente del paquete especificado. Un elemento path que falta implica el conjunto de consultas predeterminado del paquete especificado.

path puede ser un archivo de consulta *.ql, un directorio que contiene una o varias consultas o un archivo de conjunto de consultas .qls. Si no se especifica ningún nombre de paquete, se debe proporcionar un elemento path, que se interpretará en relación con el directorio de trabajo actual del proceso actual.

Para especificar un elemento path que contiene un literal @ o :, usa path: como prefijo del argumento, tal como se muestra a continuación: path:directory/with:and@/chars.

Si se especifica scope/name y path, el valor de path no puede ser absoluto. Se interpreta en relación con la raíz del paquete de CodeQL.

Si no se especifica ninguna consulta, la CLI determinará automáticamente un conjunto adecuado de consultas que se van a ejecutar. En concreto, si se especificó un archivo de configuración de análisis de código en el momento de la creación de la base de datos mediante --codescanning-config, se usarán las consultas de este. De lo contrario, se usarán las consultas predeterminadas correspondientes al idioma que se analiza.

--format=<format>

[Obligatorio] Formato en el que se van a escribir los resultados. Uno de los valores siguientes:

csv: valores separados por comas con formato, incluidas las columnas con metadatos de regla y alerta.

sarif-latest: formato de intercambio de resultados de análisis estático (SARIF); un formato basado en JSON para describir los resultados de análisis estático. Esta opción de formato usa la versión admitida más reciente (v2.1.0). Esta opción no es adecuada para su uso en la automatización, ya que generará diferentes versiones de SARIF entre diferentes versiones de CodeQL.

sarifv2.1.0: SARIF v2.1.0.

graphtext: formato de texto que representa un grafo. Solo es compatible con las consultas con el grafo @kind.

dgml: lenguaje de marcado de grafos dirigido; un formato basado en XML para describir grafos. Solo es compatible con las consultas con el grafo @kind.

dot: lenguaje DOT de Graphviz; un formato basado en texto para describir grafos. Solo es compatible con las consultas con el grafo @kind.

-o, --output=<output>

[Obligatorio] Ruta de acceso de salida en la que se van a escribir los resultados. En el caso de los formatos de grafo, debe ser un directorio y el resultado (o los resultados si este comando admite la interpretación de más de una consulta) se escribirá en ese directorio.

--[no-]rerun

Evalúa incluso las consultas que parecen tener un resultado BQRS ya almacenado en la base de datos.

--no-print-diagnostics-summary

No imprimas un resumen de los diagnósticos analizados en la salida estándar.

--no-print-metrics-summary

No imprimas un resumen de las métricas analizadas en la salida estándar.

--max-paths=<maxPaths>

Número máximo de rutas de acceso que se van a generar para cada alerta con rutas de acceso. (Valor predeterminado: 4)

--[no-]sarif-add-file-contents

[Solo formatos SARIF] Incluye el contenido completo de todos los archivos a los que se hace referencia en al menos un resultado.

--[no-]sarif-add-snippets

[Solo formatos SARIF] Incluye fragmentos de código de cada ubicación mencionada en los resultados, con dos líneas de contexto antes y después de la ubicación notificada.

--[no-]sarif-add-query-help

[Solo formatos SARIF] [En desuso] Incluye la ayuda de la consulta de Markdown para todas las consultas. Carga la ayuda de consulta para /path/to/query.ql desde el archivo /path/to/query.md. Si no se proporciona esta marca, el comportamiento predeterminado es incluir ayuda solo para consultas personalizadas, es decir, las de los paquetes de consultas que no tienen el formato `codeql/<lang&rt;-queries`. Esta opción no tiene ningún efecto cuando se pasa a codeql bqrs interpret.

--sarif-include-query-help=<mode>

[Solo formatos SARIF] Especifica si se debe incluir la ayuda de consulta en la salida de SARIF. Uno de los valores siguientes:

always: incluir la ayuda de consulta para todas las consultas.

custom_queries_only(valor predeterminado): incluir la ayuda de consulta solo para consultas personalizadas, es decir, las de los paquetes de consultas que no tienen el formato `codeql/<lang&rt;-queries`.

never: no incluir la ayuda de consulta para ninguna consulta.

Esta opción no tiene ningún efecto cuando se pasa a codeql bqrs interpret.

Disponible desde la versión v2.15.2.

--no-sarif-include-alert-provenance

[Solo formatos [SARIF avanzados] No incluya información de procedencia de alertas en la salida de SARIF.

Disponible desde la versión v2.18.1.

--[no-]sarif-group-rules-by-pack

[Solo formatos SARIF] Coloca el objeto de regla de cada consulta en su paquete de QL correspondiente en la propiedad <run>.tool.extensions. Esta opción no tiene ningún efecto cuando se pasa a codeql bqrs interpret.

--[no-]sarif-multicause-markdown

[Solo formatos SARIF] Para las alertas que tienen varias causas, las incluyes como una lista de elementos con formato Markdown en la salida además de como una cadena sin formato.

--no-sarif-minify

[Formatos SARIF solamente] Produce resultados SARIF impresos con bastante detalle. De manera predeterminada, la salida SARIF se minimiza para reducir el tamaño del archivo de resultados.

--sarif-run-property=<String=String>

[Solo formatos SARIF] Par clave-valor para añadir al contenedor de propiedades "run" de SARIF generado. Se puede repetir.

--no-group-results

[Solo formatos SARIF] Genera un resultado por mensaje, en lugar de un resultado por ubicación única.

--csv-location-format=<csvLocationFormat>

Formato en el que se van a generar ubicaciones en la salida CSV. Puede ser: URI, columna de línea, longitud de desplazamiento. (Valor predeterminado: columna de línea)

--dot-location-url-format=<dotLocationUrlFormat>

Cadena de formato que define el formato en el que se van a generar direcciones URL de ubicación de archivo en la salida de DOT. Se pueden usar los siguientes marcadores de posición {path} {start:line} {start:column} {end:line} {end:column}, {offset}, {length}.

--[no-]sublanguage-file-coverage

[GitHub.com y GitHub Enterprise Server v3.12.0 y versiones posteriores solamente] Use la información de cobertura de archivos de sublenguaje. Esto calcula, muestra y exporta información de cobertura de archivos independiente para lenguajes que comparten un extractor de CodeQL como C y C++, Java y Kotlin, y JavaScript y TypeScript.

Disponible desde la versión v2.15.2.

--sarif-category=<category>

[Solo formatos SARIF] [Recomendado] Especifica una categoría para este análisis que se va a incluir en la salida de SARIF. Puede usarse una categoría para distinguir análisis múltiples realizados en la misma confirmación y repositorio, pero en lenguajes diferentes o en partes diferentes del código.

Si analizas la misma versión de una base de código de varias maneras diferentes (por ejemplo, para distintos lenguajes) y cargas los resultados en GitHub para su presentación en el análisis de código, este valor debe variar entre cada uno de los análisis, lo que indica al análisis de código que los análisis se complementan en lugar de sustituirse entre sí. (Los valores deben ser coherentes entre ejecuciones del mismo análisis para diferentes versiones del código base).

Este valor aparecerá (con una barra diagonal final anexada si aún no está presente) como la propiedad <run>.automationDetails.id.

--no-database-extension-packs

[Avanzado] Omite los paquetes de extensión almacenados en la base de datos durante su creación, ya sea desde un archivo de configuración de análisis de código o desde archivos de extensión almacenados en el directorio "extensions" del código base analizado.

--no-database-threat-models

[Avanzado] Omite la configuración del modelo de riesgos almacenada en la base de datos durante la creación de esta a partir de un archivo de configuración de análisis de código.

--[no-]download

Descarga las consultas que faltan antes de analizarlas.

Opciones para controlar los paquetes de modelos que se van a usar

--model-packs=<