Skip to main content

Enterprise Server 3.15 actualmente está disponible como versión candidata para lanzamiento.

database index-files

[Asociación] Indexa archivos independientes con un extractor de CodeQL determinado.

¿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 index-files --language=<lang> [--threads=<num>] [--ram=<MB>] [--extractor-option=<extractor-option-name=value>] <options>... -- <database>

Descripción

[Asociación] Indexa archivos independientes con un extractor de CodeQL determinado.

Este comando selecciona un conjunto de archivos en el directorio de trabajo especificado y les aplica el extractor especificado. De forma predeterminada, se seleccionan todos los archivos. Las invocaciones típicas especificarán opciones para restringir el conjunto de archivos incluidos.

Las opciones --include, --exclude y --prune toman patrones globales, que pueden usar los siguientes caracteres comodín:

  • Un solo "?" coincide con cualquier carácter que no sea una barra diagonal o barra diagonal invertida.
  • Una sola "*" coincide con cualquier número de caracteres distintos de una barra diagonal o barra diagonal invertida.
  • El patrón "**" coincide con cero o más componentes de directorio completos.

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.

-l, --language=<lang>

[Obligatorio] Extractor que se debe usar para indexar archivos coincidentes.

-j, --threads=<num>

Pide al extractor que use estos muchos 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.

--working-dir=<dir>

[Avanzado] Directorio en el que se debe ejecutar 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.

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 para limitar el conjunto de archivos indexados

--include-extension=<.ext>

Incluye todos los archivos del árbol de directorios de búsqueda que tengan la extensión especificada. Normalmente, debes incluir el punto delante de la extensión. Por ejemplo, si se pasa --include-extension .xml, se incluirán todos los archivos con la extensión ".xml". Esta opción no es compatible con las opciones --include negadas.

--include=<glob>

Incluye todos los archivos y directorios del árbol de directorios de búsqueda que coincidan con el elemento glob dado; para ello, se usa la ruta de acceso relativa de cada archivo y directorio del directorio de búsqueda. Si el elemento glob comienza con un carácter !, los archivos y directorios coincidentes se excluirán.

Las opciones --include se procesan en orden, donde las opciones posteriores reemplazan a las anteriores. Por ejemplo, --include ** --include !sub/*.ts --include sub/main.* incluiría sub/main.ts (porque lo incluye sub/main.*), excluiría sub/index.ts (porque lo excluye !sub/*.ts) e incluiría sub/test.js (porque lo incluye ** sin que se excluya posteriormente).

--also-match=<glob>

Requiere que todos los resultados coincidan también con el elemento glob especificado y usa la ruta de acceso relativa de cada archivo y directorio del directorio de búsqueda. Esta opción tiene la misma estructura e interpretación que --include, pero especifica una secuencia distinta de elementos glob que se aplican junto con --include.

--exclude=<glob>

Excluye todos los archivos y directorios que coincidan con el elemento glob dado; para ello, se usa la ruta de acceso relativa de cada archivo y directorio desde el directorio de búsqueda. Esta opción invalida todas las opciones de inclusión. Esta opción no es compatible con las opciones --include negadas.

--prune=<glob>

Excluye todos los archivos y directorios que coincidan con el elemento glob dado; para ello, se usa la ruta de acceso relativa de cada archivo y directorio desde el directorio de búsqueda. Esta opción invalida todas las opciones de inclusión. Esta opción no es compatible con las opciones --include negadas.

--size-limit=<bytes>

Excluye todos los archivos cuyo tamaño supera el límite especificado. El límite de tamaño se muestra en bytes o en kibibytes (KiB) con el sufijo "k", en mebibytes (MiB) con el sufijo "m" y en gibibytes (GiB) con el sufijo "g". Esta opción invalida todas las opciones de inclusión.

--total-size-limit=<bytes>

Hace que el comando salga con un error si el tamaño combinado de todos los archivos resueltos superara el límite especificado. El límite de tamaño se muestra en bytes o en kibibytes (KiB) con el sufijo "k", en mebibytes (MiB) con el sufijo "m" y en gibibytes (GiB) con el sufijo "g".

Sigue los vínculos simbólicos a sus destinos.

--[no-]find-any

Busca como máximo una coincidencia (en lugar de todas las coincidencias).

Disponible desde la versión v2.11.3.

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.