Skip to main content

Checking out the CodeQL CLI source code

Set up the CodeQL CLI directly from the source code.

Quem pode usar esse recurso?

O CodeQL está disponível para os seguintes tipos de repositórios:

Some users prefer working with CodeQL query sources directly in order to work on or contribute to open source shared queries.

1. Download the CodeQL CLI tar archive

O pacote de download do CodeQL CLI é um arquivo tar que contém ferramentas, scripts e vários arquivos específicos do CodeQL. Se você não tiver uma licença do GitHub Enterprise, baixando esse arquivo, você estará concordando com os termos e condições do GitHub CodeQL.

Baixe o pacote do CodeQL em https://github.com/github/codeql-action/releases. O pacote contém:

  • produto de CodeQL CLI
  • Uma versão compatível das consultas e bibliotecas do https://github.com/github/codeql
  • Versões pré-compiladas de todas as consultas incluídas no pacote

Observação

Para o GitHub Enterprise Server 3.16, recomendamos o CodeQL CLI versão 2.20.3.

Use sempre o pacote CodeQL. Fazer isso garante a compatibilidade e proporciona um desempenho muito melhor que um download separado da CodeQL CLI e o check-out das consultas da CodeQL. Se estiver executando apenas a CLI em uma plataforma específica, baixe o arquivo codeql-bundle-PLATFORM.tar.zst apropriado. Como alternativa, você pode baixar codeql-bundle.tar.zst, que contém a CLI para todas as plataformas compatíveis.

Existem também variantes tar.gz do pacote, que são idênticas às variantes tar.zst, exceto por serem compactadas usando o algoritmo gzip menos eficiente. A única razão para baixar as variantes tar.gz é se você estiver usando ferramentas de descompactação mais antigas que não suportam o algoritmo de compactação Zstandard.

2. Create a new CodeQL directory

Create a new directory where you can place the CLI and any queries and libraries you want to use. For example, $HOME/codeql-home.

The CLI’s built-in search operations automatically look in all of its sibling directories for the files used in database creation and analysis. Keeping these components in their own directory prevents the CLI searching unrelated sibling directories while ensuring all files are available without specifying any further options on the command line.

3. Obtain a local copy of the CodeQL queries

The CodeQL repository contains the queries and libraries required for CodeQL analysis of all supported languages. Clone a copy of this repository into codeql-home.

By default, the root of the cloned repository will be called codeql. Rename this folder codeql-repo to avoid conflicting with the CodeQL CLI that you will extract in step 1. If you use git on the command line, you can clone and rename the repository in a single step by running git clone git@github.com:github/codeql.git codeql-repo in the codeql-home folder.

Within this repository, the queries and libraries are organized into CodeQL packs. Along with the queries themselves, CodeQL packs contain important metadata that tells the CodeQL CLI how to process the query files. For more information, see Como criar e trabalhar com pacotes do CodeQL.

Observação

There are different versions of the CodeQL queries available for different users. Check out the correct version for your use case:

  • For the queries that are intended to be used with the latest CodeQL CLI release, check out the branch tagged codeql-cli/latest. You should use this branch for databases you’ve built using the CodeQL CLI or recently downloaded from GitHub.
  • For the most up to date CodeQL queries, check out the main branch. This branch represents the very latest version of CodeQL’s analysis.

4. Extract the CodeQL CLI tar archive

Extract the tar archive into the directory you created in step 2.

For example, if the path to your copy of the CodeQL repository is $HOME/codeql-home/codeql-repo, then extract the CLI into $HOME/codeql-home/.

5. Launch codeql

Após a extração, você poderá executar processos do CodeQL executando o executável codeql de algumas maneiras:

  • Ao executar <extraction-root>/codeql/codeql, em que <extraction-root> é a pasta na qual você extraiu o pacote da CodeQL CLI.
  • Adicione o <extraction-root>/codeql ao PATH, para que você possa executar o executável apenas como codeql.

Neste ponto, você pode executar comandos do CodeQL. Para ver uma lista completa dos comandos da CodeQL CLI, confira Manual de comandos da CLI do CodeQL.

6. Verify your CodeQL CLI setup

CodeQL CLI has subcommands you can execute to verify that you are correctly set up to create and analyze databases:

  • Run codeql resolve languages to show which languages are available for database creation. This will list the languages supported by default in your CodeQL CLI package.
  • Run codeql resolve qlpacks to show which CodeQL packs the CLI can find. This will display the names of all the CodeQL packs directly available to the CodeQL CLI. This should include:
    • Query packs for each supported language, for example, codeql/{language}-queries. These packs contain the standard queries that will be run for each analysis.
    • Library packs for each supported language, for example, codeql/{language}-all. These packs contain query libraries, such as control flow and data flow libraries, that may be useful to query writers.
    • Example packs for each supported language, for example, codeql/{language}-examples. These packs contain useful snippets of CodeQL that query writers may find useful.
    • Legacy packs that ensure custom queries and libraries created using older products are compatible with your version of CodeQL.