Skip to main content

database trace-command

[Asociación] Ejecuta un solo comando como parte de una compilación de la que se realiza un seguimiento.

¿Quién puede utilizar esta característica?

CodeQL está disponible para los siguientes tipos de repositorios:

Note

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 trace-command [--threads=<num>] [--ram=<MB>] [--extractor-option=<extractor-option-name=value>] <options>... -- <database> <command>...

Descripción

[Asociación] Ejecuta un solo comando como parte de una compilación de la que se realiza un seguimiento.

Esto ejecuta una única línea de comandos dada en un elemento de seguimiento, por lo que posiblemente realiza alguna extracción, pero no finaliza la base de datos CodeQL resultante.

Opciones

Opciones principales

<database>

[Obligatorio] Ruta de acceso a la base de datos CodeQL en construcción. Debe haberse preparado para la extracción con codeql database init.

Si se proporciona la opción --db-cluster, no es una base de datos propiamente dicha, sino un directorio que contiene bases de datos y todas esas bases de datos se procesarán juntas.

<command>...

Comando que debe ejecutar. Puede constar de uno o varios argumentos, que se usan para crear el proceso. Se recomienda pasar el argumento "--" antes de enumerar los argumentos del comando, con el fin de evitar confusiones entre sus argumentos y los nuestros.

Se espera que el comando salga con un código de estado de 0. Cualquier otro código de salida se interpreta como un error.

El comando se puede omitir cuando se da --index-traceless-dbs.

-j, --threads=<num>

Pide al extractor que use esta gran cantidad de subprocesos. Esta opción se pasa al extractor como sugerencia. Si se establece la variable de entorno CODEQL_THREADS, el valor de la variable de entorno tiene prioridad sobre esta opción.

Puedes pasar 0 para usar un subproceso por núcleo en la máquina o N para dejar N núcleos sin usar (excepto que aún se usa al menos un subproceso).

-M, --ram=<MB>

Pide al extractor que use esta gran cantidad de memoria. Esta opción se pasa al extractor como sugerencia. Si se establece la variable de entorno CODEQL_RAM, el valor de la variable de entorno tiene prioridad sobre esta opción.

--[no-]db-cluster

Indica que el directorio especificado en la línea de comandos no es una base de datos propiamente dicha, sino un directorio que contiene una o varias bases de datos en construcción. Esas bases de datos se procesarán juntas.

--no-tracing

[Avanzado] No realiza un seguimiento del comando especificado, sino que confía en él para generar directamente todos los datos necesarios.

--extra-tracing-config=<tracing-config.lua>

[Avanzado] Ruta de acceso a un archivo de configuración de seguimiento. Se puede usar para modificar el comportamiento del seguimiento de compilación. Se puede usar para seleccionar los procesos del compilador que se ejecutan como parte del comando de compilación y desencadenar la ejecución de otras herramientas. Los extractores proporcionarán archivos de configuración de seguimiento predeterminados que deberían funcionar en la mayoría de las situaciones.

--[no-]index-traceless-dbs

Además del comando especificado, ejecuta el script principal para extractores que no dependen del seguimiento de un proceso de compilación. Si vas a crear bases de datos para varios lenguajes con --db-cluster, esta opción debe proporcionarse exactamente a una invocación de codeql database trace-command.

--[no-]use-build-mode

Determine qué ejecutar en función del modo de compilación de la base de datos. Esta opción no se puede usar con --index-traceless-dbs.

--working-dir=<dir>

[Avanzado] Directorio en el que debe ejecutarse el comando especificado. Si no se proporciona este argumento, el comando se ejecuta en el valor de --source-root pasado a codeql database create, si existe alguno. Si no se proporciona ningún argumento --source-root, el comando se ejecuta en el directorio de trabajo actual.

--no-run-unnecessary-builds

[Avanzado] Ejecuta solo los comandos de compilación especificados si una base de datos en construcción usa un extractor que depende del seguimiento de un proceso de compilación. Si no se proporciona esta opción, el comando se ejecutará incluso cuando CodeQL no lo necesite, sobre el supuesto de que necesitas sus efectos secundarios por otros motivos.

Opciones para controlar el comportamiento del extractor

-O, --extractor-option=<extractor-option-name=value>

Establece opciones para los extractores de CodeQL. extractor-option-name debe tener el formato extractor_name.group1.group2.option_name o group1.group2.option_name. Si extractor_option_name comienza con un nombre de extractor, el extractor indicado debe declarar la opción group1.group2.option_name. De lo contrario, cualquier extractor que declare la opción group1.group2.option_name tendrá la opción establecida. value puede ser cualquier cadena que no contenga una nueva línea.

Puedes usar esta opción de línea de comandos repetidamente para establecer varias opciones de extractor. Si proporcionas varios valores para la misma opción de extractor, el comportamiento depende del tipo que espera la opción de extractor. Las opciones de cadena usarán el último valor proporcionado. Las opciones de matriz usarán todos los valores proporcionados, en orden. Las opciones de extractor especificadas mediante esta opción de línea de comandos se procesan después de las opciones de extractor dadas a través de --extractor-options-file.

Cuando se pasa a codeql database init o codeql database begin-tracing, las opciones solo se aplican al entorno de seguimiento indirecto. Si el flujo de trabajo también realiza llamadas a codeql database trace-command, las opciones también deben pasarse allí si así lo quieres.

Consulta https://codeql.github.com/docs/codeql-cli/extractor-options para más información sobre las opciones de extractor de CodeQL, incluido cómo enumerar las opciones declaradas por cada extractor.

--extractor-options-file=<extractor-options-bundle-file>

Especifica los archivos de agrupación de opciones de extractor. Un archivo de agrupación de opciones de extractor es un archivo JSON (extensión .json) o un archivo YAML (extensión .yaml o .yml) que establece las opciones de extractor. El archivo debe tener la clave de mapa de nivel superior "extractor" y, debajo, los nombres del extractor como claves de mapa de segundo nivel. Otros niveles de mapas representan grupos de extractores anidados y las opciones de cadena y matriz son entradas de mapa con valores de cadena y matriz.

Los archivos de agrupación de opciones de extractor se leen en el orden en que se especifican. Si diferentes archivos de agrupación de opciones de extractor especifican la misma opción de extractor, el comportamiento depende del tipo que espera la opción de extractor. Las opciones de cadena usarán el último valor proporcionado. Las opciones de matriz usarán todos los valores proporcionados, en orden. Las opciones de extractor especificadas mediante esta opción de línea de comandos se procesan antes que las opciones de extractor proporcionadas a través de --extractor-option.

Cuando se pasa a codeql database init o codeql database begin-tracing, las opciones solo se aplican al entorno de seguimiento indirecto. Si el flujo de trabajo también realiza llamadas a codeql database trace-command, las opciones también deben pasarse allí si así lo quieres.

Consulta https://codeql.github.com/docs/codeql-cli/extractor-options para más información sobre las opciones de extractor de CodeQL, incluido cómo enumerar las opciones declaradas por cada extractor.

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.