Skip to main content

database interpret-results

[Conexão] Interprete os resultados da consulta computada em formatos significativos, como SARIF ou CSV.

Quem pode usar esse recurso?

O CodeQL do GitHub é licenciado por usuário após a instalação. Você pode usar o CodeQL somente para determinadas tarefas sob as restrições de licença. Para obter mais informações, confira "Sobre a CLI do CodeQL".

Se você tiver uma licença do GitHub Advanced Security, poderá usar o CodeQL para análise automatizada, integração contínua e entrega contínua. Para obter mais informações, confira "Sobre a Segurança Avançada do GitHub".

Este conteúdo descreve a versão mais recente do CodeQL CLI. Para obter mais informações sobre essa versão, confira https://github.com/github/codeql-cli-binaries/releases.

Para ver os detalhes das opções disponíveis para esse comando em uma versão anterior, execute o comando com a opção --help no terminal.

Sinopse

Shell
codeql database interpret-results --format=<format> --output=<output> [--threads=<num>] <options>... -- <database> <file|dir|suite>...

Descrição

[Conexão] Interprete os resultados da consulta computada em formatos significativos, como SARIF ou CSV.

Os resultados deveriam ter sido computados e armazenados em um diretório de banco de dados CodeQL com codeql database run-queries. (Normalmente, o ideal é executar essas etapas em conjunto, usando codeql database analyze).

Opções

Opções principais

<database>

[Obrigatório] Caminho para o banco de dados CodeQL que foi consultado.

<filesuite>...

Repita a especificação de quais consultas foram executadas aqui.

Se isso for omitido, a CLI determinará um conjunto adequado de consultas usando a mesma lógica de codeql database run-queries.

(Em uma versão futura, talvez seja possível omitir isso e interpretar todos os resultados encontrados no banco de dados. Esse futuro glorioso ainda não chegou. Lamnetamos.)

--format=<format>

[Obrigatório] O formato no qual os resultados serão gravados. Um destes:

csv: valores formatados separados por vírgula, incluindo colunas com metadados de regra e de alerta.

sarif-latest: SARIF (Static Analysis Results Interchange Format), um formato baseado em JSON usado para descrever os resultados da análise estática. Essa opção de formato usa a versão mais recente com suporte (v2.1.0). Essa opção não é adequada para uso na automação, pois produzirá diferentes versões do SARIF entre diferentes versões do CodeQL.

sarifv2.1.0: SARIF v2.1.0.

graphtext: um formato textual que representa um grafo. Compatível apenas com consultas com o grafo @kind.

dgml: Directed Graph Markup Language, um formato baseado em XML para a descrição de grafos. Compatível apenas com consultas com o grafo @kind.

dot: linguagem DOT do Graphviz, um formato baseado em texto para a descrição de grafos. Compatível apenas com consultas com o grafo @kind.

-o, --output=<output>

[Obrigatório] O caminho de saída no qual os resultados serão gravados. Para formatos de grafo, esse deve ser um diretório, e o resultado (ou os resultados, caso o comando dê suporte à interpretação de mais de uma consulta) será gravado nesse diretório.

--max-paths=<maxPaths>

O número máximo de caminhos a serem produzidos para cada alerta com caminhos. (Padrão: 4)

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

[Somente formatos SARIF] Inclua o conteúdo completo do arquivo para todos os arquivos referenciados em, pelo menos, um resultado.

--[no-]sarif-add-snippets

[Somente formatos SARIF] Inclua snippets de código para cada local mencionado nos resultados, com duas linhas de contexto antes e depois do local relatado.

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

[Somente formatos SARIF] [Preterido] Inclua ajuda de consulta Markdown para todas as consultas. Isso carrega a ajuda de consulta para /path/to/query.ql por meio do arquivo /path/to/query.md. Se esse sinalizador não for fornecido, o comportamento padrão será incluir ajuda apenas para consultas personalizadas, ou seja, aquelas em pacotes de consulta que não são na forma `codeql/<lang&rt;-queries`. Essa opção não tem nenhum efeito quando transmitida para codeql bqrs interpret.

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

[Somente formatos SARIF] Especifique se deseja incluir ajuda de consulta na saída SARIF. Um destes:

always: Incluir ajuda de consulta para todas as consultas.

custom_queries_only(padrão): inclua ajuda de consulta apenas para consultas personalizadas, ou seja, aquelas em pacotes de consulta que não são do formulário `codeql/<lang&rt;-queries`.

never: Não inclua ajuda de consulta para quaisquer consultas.

Essa opção não tem nenhum efeito quando transmitida para codeql bqrs interpret.

Disponível desde v2.15.2.

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

[Somente formatos SARIF] Coloque o objeto de regra para cada consulta no pacote QL correspondente na propriedade <run>.tool.extensions. Essa opção não tem nenhum efeito quando transmitida para codeql bqrs interpret.

--[no-]sarif-multicause-markdown

[Somente formatos SARIF] Para alertas que têm várias causas, inclua-os como uma lista de itens formatados em Markdown na saída, além de uma cadeia de caracteres sem formatação.

--no-group-results

[Somente formatos SARIF] Produz um resultado por mensagem, em vez de um resultado por local exclusivo.

--csv-location-format=<csvLocationFormat>

O formato no qual os locais serão produzidos na saída CSV. Um dos seguintes: uri, line-column ou offset-length. (Padrão: linha-coluna)

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

Uma cadeia de caracteres de formato que define o formato no qual as URLs de local do arquivo serão produzidas na saída DOT. Os seguintes espaços reservados podem ser usados: {path} {start:line} {start:column} {end:line} {end:column}, {offset} e {length}

--[no-]sublanguage-file-coverage

[Somente para GitHub.com e GitHub Enterprise Server v3.12.0+] Use informações de cobertura de arquivo de sub-linguagem. Isso calcula, exibe e exporta informações de cobertura de arquivos separadas para linguagens que compartilham um extrator CodeQL como C e C++, Java e Kotlin e JavaScript e TypeScript.

Disponível desde v2.15.2.

--sarif-category=<category>

[Somente formatos SARIF] Especifique uma categoria que será incluída nessa análise na saída SARIF. Uma categoria pode ser usada para distinguir várias análises executadas no mesmo commit e repositório, mas em diferentes linguagens ou partes do código.

Se você analisar a mesma versão de uma base de código de várias maneiras diferentes (por exemplo, para diferentes linguagens) e carregar os resultados no GitHub para apresentação na verificação de código, esse valor deverá ser diferente entre cada uma das análises, o que informa à verificação de código de que as análises suplementam umas às outras em vez de substituí-las. (Os valores devem ser consistentes entre as execuções da mesma análise para diferentes versões da base de código.)

Esse valor será exibido (com uma barra à direita acrescentada se ainda não estiver presente) como a propriedade <run>.automationId em SARIF v1, a propriedade <run>.automationLogicalId em SARIF v2 e a propriedade <run>.automationDetails.id em SARIF v 2.1.0.

-j, --threads=<num>

O número de threads usados para os caminhos de computação.

O valor padrão é 1. Você pode transmitir 0 para usar um thread por núcleo no computador ou -N para manter N núcleos não utilizados (com a exceção de que ainda será usado, pelo menos, um thread).

--no-database-extension-packs

[Avançado] Omita pacotes de extensão armazenados no banco de dados durante a criação do banco de dados, seja de um arquivo de configuração de varredura de código ou de arquivos de extensão armazenados no diretório 'extensions' da base de código analisada.

--[no-]print-diagnostics-summary

Imprima um resumo do diagnóstico analisado na saída padrão.

--[no-]print-metrics-summary

Imprima um resumo das métricas analisadas na saída padrão.

--[no-]analysis-summary-v2

[Somente para GitHub.com e GitHub Enterprise Server v3.9.0+] Use uma versão melhorada do resumo da análise. Isso incorpora informações de cobertura de arquivos e melhora a forma como os resultados de diagnóstico são exibidos.

Disponível desde v2.15.2.

--[no-]print-baseline-loc

Imprima as linhas de código de linha de base contadas na saída padrão.

Opções para configurar o gerenciador de pacotes CodeQL

--registries-auth-stdin

Autentique-se nos registros de contêiner do GitHub Enterprise Server transmitindo uma lista separada por vírgula de pares <registry_url>=<token>.

Por exemplo, você pode transmitir https://containers.GHEHOSTNAME1/v2/=TOKEN1,https://containers.GHEHOSTNAME2/v2/=TOKEN2 para se autenticar em duas instâncias do GitHub Enterprise Server.

Isso substitui as variáveis de ambiente CODEQL_REGISTRIES_AUTH e GITHUB_TOKEN. Se você só precisar se autenticar no registro de contêiner do github.com, poderá se autenticar usando a opção --github-auth-stdin mais simples.

--github-auth-stdin

Autentique-se no registro de contêiner do github.com transmitindo um token do GitHub Apps do github.com ou um token de acesso pessoal por meio da entrada padrão.

Para se autenticar nos registros de contêiner do GitHub Enterprise Server, transmita --registries-auth-stdin ou use a variável de ambiente CODEQL_REGISTRIES_AUTH.

Isso substitui a variável de ambiente GITHUB_TOKEN.

Opções para localizar pacotes QL (que podem ser necessários para interpretar conjuntos de consultas)

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

Uma lista de diretórios nos quais os pacotes QL podem ser encontrados. Cada diretório pode ser um pacote QL (ou um conjunto de pacotes que contém um arquivo .codeqlmanifest.json na raiz) ou o pai imediato de um ou mais desses diretórios.

Se o caminho contiver mais de um diretório, a ordem deles definirá a precedência entre eles: quando for encontrada uma correspondência do nome de um pacote que precisa ser resolvido em mais de uma das árvores do diretório, a primeira fornecida vencerá.

Se você apontar isso para um check-out do repositório do CodeQL de código aberto, isso deverá funcionar durante a consulta de uma das linguagens que se encontram nele.

Se você tiver feito check-out do repositório do CodeQL como um irmão da cadeia de ferramentas CodeQL descompactada, não precisará fornecer essa opção. Nesses diretórios irmãos, sempre será feita a pesquisa por pacotes QL que não podem ser encontrados de outra forma. (Caso esse padrão não funcione, recomendamos fortemente configurar --search-path de uma vez por todas em um arquivo de configuração por usuário).

(Observação: no Windows, o separador de caminho é ;).

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

Se essa lista de diretórios for fornecida, nesses diretórios, será feita a pesquisa de pacotes antes daqueles contidos em --search-path. A ordem entre eles não importa: será indicado um erro se o nome de um pacote for encontrado em dois locais diferentes nessa lista.

Isso será útil se você estiver desenvolvendo temporariamente uma nova versão de um pacote que também aparece no caminho padrão. Por outro lado, não recomendamos substituir essa opção em um arquivo de configuração. Algumas ações internas adicionarão essa opção em tempo real, substituindo qualquer valor configurado.

(Observação: no Windows, o separador de caminho é ;).

Opções comuns

-h, --help

Mostre este texto de ajuda.

-J=<opt>

[Avançado] Forneça a opção para a JVM que executa o comando.

(Use-a com cautela, pois as opções que contêm espaços não serão tratadas corretamente.)

-v, --verbose

Aumente incrementalmente o número de mensagens de progresso impressas.

-q, --quiet

Diminua incrementalmente o número de mensagens de progresso impressas.

--verbosity=<level>

[Avançado] Defina explicitamente o nível de detalhamento como erros, avisos, progresso, progresso+, progresso++ ou progresso+++. Substitui -v e -q.

--logdir=<dir>

[Avançado] Escreva logs detalhados em um ou mais arquivos no diretório fornecido, com nomes gerados que incluem carimbos de data/hora e o nome do subcomando em execução.

(Para gravar um arquivo de log com um nome sobre o qual você tem controle completo, forneça --log-to-stderr e redirecione stderr conforme desejado.)

--common-caches=<dir>

[Avançado] Controle a localização dos dados armazenados em cache no disco que persistirão entre várias execuções da CLI, como pacotes QL baixados e planos de consulta compilada. Se não for definido explicitamente, o padrão corresponde a um diretório intitulado .codeql no diretório inicial do usuário; que será criado se ainda não existir.

Disponível desde v2.15.2.