Skip to main content

database interpret-results

[Asociación] Interpreta los resultados calculados de consultas en formatos significativos como SARIF o CSV.

¿Quién puede utilizar esta característica?

CodeQL está disponible para los siguientes tipos de repositorios:

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 interpret-results --format=<format> --output=<output> [--threads=<num>] <options>... -- <database> <file|dir|suite>...

Descripción

[Asociación] Interpreta los resultados de consultas calculadas en formatos significativos como SARIF o CSV.

Los resultados se deben haber calculado y almacenado en un directorio de base de datos CodeQL mediante codeql database run-queries. (Por lo general, estos pasos se deben completar en conjunto mediante codeql database analyze).

Opciones

Opciones principales

<database>

[Obligatorio] Ruta de acceso a la base de datos CodeQL que se consultó.

<filesuite>...

Especifica nuevamente las consultas que se ejecutaron.

Si las omites, la CLI determinará un conjunto adecuado de consultas con la misma lógica de codeql database run-queries.

(En una versión futura, se debería poder omitir esto y, en su lugar, interpretar todos los resultados que se encuentran en la base de datos. Ese futuro increíble todavía no llega, lamentablemente).

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

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

-j, --threads=<num>

Número de subprocesos usados para calcular rutas de acceso.

De manera predeterminada, su valor es 1. Puedes pasar 0 para usar un subproceso por núcleo en la máquina o -N para dejar N núcleos sin utilizar (excepto que aún se usa al menos un subproceso).

--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-]print-diagnostics-summary

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

--[no-]print-metrics-summary

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

--[no-]print-baseline-loc

Imprime las líneas de código de base de referencia registradas en la salida estándar.

Opciones para configurar el administrador de paquetes de CodeQL

--registries-auth-stdin

Autentícate en los registros de contenedores de servidor de GitHub Enterprise; para ello, pasa una lista separada por comas de pares <registry_url>=<token>.

Por ejemplo, puedes pasar https://containers.GHEHOSTNAME1/v2/=TOKEN1,https://containers.GHEHOSTNAME2/v2/=TOKEN2 para autenticarte en dos instancias del servidor de GitHub Enterprise.

Esto invalida las variables de entorno CODEQL_REGISTRIES_AUTH y GITHUB_TOKEN. Si solo necesitas autenticarte en el registro de contenedor de github.com, puedes hacerlo mediante la opción --github-auth-stdin más sencilla.

--github-auth-stdin

Autentícate en el registro de contenedores de github.com; para ello, pasa un token de aplicaciones de GitHub en github.com o un token de acceso personal mediante la entrada estándar.

Para autenticarte en los registros de contenedores de servidor de GitHub Enterprise, pasa --registries-auth-stdin o usa la variable de entorno CODEQL_REGISTRIES_AUTH.

Esto invalida la variable de entorno GITHUB_TOKEN.

Opciones para especificar qué extensiones usar al interpretar los resultados

--model-packs=<name@range>...

Lista de nombres de paquete de CodeQL, cada uno con un intervalo de versiones opcional, que se usará como paquetes de modelos para personalizar las consultas que están a punto de evaluarse.

Opciones para buscar paquetes de QL (que pueden ser necesarios para interpretar conjuntos de consultas)

--search-path=<dir>[:<dir>...]

Lista de directorios en los que se pueden encontrar paquetes de QL. Cada directorio puede ser un paquete de QL (o una agrupación de paquetes que contenga un archivo .codeqlmanifest.json en la raíz) o el elemento primario inmediato de uno o varios directorios de este tipo.

Si la ruta de acceso contiene más de un directorio, su orden define la prioridad entre ellos: cuando un nombre de paquete que se debe resolver tiene coincidencias en más de uno de los árboles de directorio, tiene prioridad el que se indica primero.

Apuntar esto a una extracción del repositorio CodeQL de código abierto debería funcionar al consultar uno de los lenguajes que residen allí.

Si extrajiste el repositorio CodeQL como un elemento relacionado de la cadena de herramientas CodeQL desempaquetada, no es necesario proporcionar esta opción; dichos directorios del mismo nivel siempre se buscarán paquetes de QL que no se encuentren de otro modo. (Si este valor predeterminado no funciona, se recomienda encarecidamente configurar --search-path de una vez en un archivo de configuración por usuario).

(Nota: En Windows, el separador de ruta de acceso es ;).

--additional-packs=<dir>[:<dir>...]

Si se da esta lista de directorios, se buscarán paquetes en ellos antes que en los incluidos en --search-path. El orden entre ellos no importa; si se encuentra un nombre de paquete en dos lugares diferentes de esta lista es un error.

Esto resulta útil si estás desarrollando temporalmente una versión nueva de un paquete que también aparece en la ruta de acceso predeterminada. Por otro lado, no se recomienda reemplazar esta opción en un archivo de configuración; algunas acciones internas agregarán esta opción sobre la marcha y reemplazarán cualquier valor configurado.

(Nota: En Windows, el separador de ruta de acceso es ;).

Opciones comunes

-h, --help

Muestra este texto de ayuda.

-J=<opt>

[Avanzado] Asigna la opción a la JVM que ejecuta el comando.

(Ten en cuenta que las opciones que contienen espacios no se administrarán correctamente).

-v, --verbose

Aumenta incrementalmente el número de mensajes de progreso impresos.

-q, --quiet

Reduce incrementalmente el número de mensajes de progreso impresos.

--verbosity=<level>

[Avanzado] Establece explícitamente el nivel de detalle en errores, advertencias, progreso, progreso+, progreso++, progreso+++. Invalida -v y -q.

--logdir=<dir>

[Avanzado] Escribe registros detallados en uno o varios archivos del directorio especificado, con nombres generados que incluyen marcas de tiempo y el nombre del subcomando en ejecución.

(Para escribir un archivo de registro con un nombre sobre el que tienes control total, proporciona --log-to-stderr y redirige stderr como quieras).

--common-caches=<dir>

[Avanzado] Controla la ubicación de los datos en caché del disco que se conservarán entre varias ejecuciones de la CLI, como paquetes QL descargados y planes de consulta compilada. Si no se define explícitamente, se toma como predeterminado un directorio denominado .codeql en el directorio principal del usuario, que se creará en caso de que no exista.

Disponible desde la versión v2.15.2.