|
| 1 | +--- |
| 2 | +title: Checking out the CodeQL CLI source code |
| 3 | +intro: Set up the {% data variables.product.prodname_codeql_cli %} directly from the source code. |
| 4 | +product: '{% data reusables.gated-features.codeql %}' |
| 5 | +versions: |
| 6 | + fpt: '*' |
| 7 | + ghes: '*' |
| 8 | + ghec: '*' |
| 9 | +topics: |
| 10 | + - Code Security |
| 11 | + - Code scanning |
| 12 | + - CodeQL |
| 13 | +contentType: how-tos |
| 14 | +shortTitle: Check out source code |
| 15 | +--- |
| 16 | + |
| 17 | +Some users prefer working with {% data variables.product.prodname_codeql %} query sources directly in order to work on or contribute to open source shared queries. |
| 18 | + |
| 19 | +## 1. Download the {% data variables.product.prodname_codeql_cli %} tar archive |
| 20 | + |
| 21 | +{% data reusables.codeql-cli.download-codeql-cli %} |
| 22 | + |
| 23 | +## 2. Create a new {% data variables.product.prodname_codeql %} directory |
| 24 | + |
| 25 | +Create a new directory where you can place the CLI and any queries and libraries |
| 26 | +you want to use. For example, `$HOME/codeql-home`. |
| 27 | + |
| 28 | +The CLI’s built-in search operations automatically look in all of its sibling |
| 29 | +directories for the files used in database creation and analysis. Keeping these |
| 30 | +components in their own directory prevents the CLI searching unrelated sibling |
| 31 | +directories while ensuring all files are available without specifying any |
| 32 | +further options on the command line. |
| 33 | + |
| 34 | +## 3. Obtain a local copy of the {% data variables.product.prodname_codeql %} queries |
| 35 | + |
| 36 | +The [{% data variables.product.prodname_codeql %} repository](https://github.com/github/codeql?ref_product=code-scanning&ref_type=engagement&ref_style=text) contains |
| 37 | +the queries and libraries required for {% data variables.product.prodname_codeql %} analysis of all supported languages. |
| 38 | +Clone a copy of this repository into `codeql-home`. |
| 39 | + |
| 40 | +By default, the root of the cloned repository will be called `codeql`. |
| 41 | +Rename this folder `codeql-repo` to avoid conflicting with the {% data variables.product.prodname_codeql_cli %} that you will extract in step 1. If you use git on the command line, you can |
| 42 | +clone and rename the repository in a single step by running |
| 43 | +`git clone git@github.com:github/codeql.git codeql-repo` in the `codeql-home` folder. |
| 44 | + |
| 45 | +Within this repository, the queries and libraries are organized into {% data variables.product.prodname_codeql %} |
| 46 | +packs. Along with the queries themselves, {% data variables.product.prodname_codeql %} packs contain important metadata |
| 47 | +that tells the {% data variables.product.prodname_codeql_cli %} how to process the query files. For more information, |
| 48 | +see [AUTOTITLE](/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/creating-and-working-with-codeql-packs). |
| 49 | + |
| 50 | +> [!NOTE] |
| 51 | +> There are different versions of the {% data variables.product.prodname_codeql %} queries available for different users. Check out the correct version for your use case: |
| 52 | +> |
| 53 | +> * For the queries that are intended to be used with the latest {% data variables.product.prodname_codeql_cli %} release, check out the branch tagged `codeql-cli/latest`. You should use this branch for databases you’ve built using the {% data variables.product.prodname_codeql_cli %} or recently downloaded from {% data variables.product.github %}. |
| 54 | +> * For the most up to date {% data variables.product.prodname_codeql %} queries, check out the `main` branch. This branch represents the very latest version of {% data variables.product.prodname_codeql %}’s analysis. |
| 55 | +
|
| 56 | +## 4. Extract the {% data variables.product.prodname_codeql_cli %} tar archive |
| 57 | + |
| 58 | +Extract the tar archive into the directory you created in step 2. |
| 59 | + |
| 60 | +For example, if the path to your copy of the {% data variables.product.prodname_codeql %} repository is `$HOME/codeql-home/codeql-repo`, then extract the CLI into |
| 61 | +`$HOME/codeql-home/`. |
| 62 | + |
| 63 | +## 5. Launch `codeql` |
| 64 | + |
| 65 | +{% data reusables.codeql-cli.launch-codeql %} |
| 66 | + |
| 67 | +## 6. Verify your {% data variables.product.prodname_codeql_cli %} setup |
| 68 | + |
| 69 | +{% data variables.product.prodname_codeql_cli %} has subcommands you can execute to verify that you are correctly set up to create and analyze databases: |
| 70 | + |
| 71 | +* Run `codeql resolve languages` to show which languages are available for database creation. This will list the languages supported by default in your {% data variables.product.prodname_codeql_cli %} package. |
| 72 | +* Run `codeql resolve qlpacks` to show which {% data variables.product.prodname_codeql %} packs the CLI can find. This will display the names of all the {% data variables.product.prodname_codeql %} packs directly available to the {% data variables.product.prodname_codeql_cli %}. This should include: |
| 73 | + * Query packs for each supported language, for example, `codeql/{language}-queries`. These packs contain the standard queries that will be run for each analysis. |
| 74 | + * 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. |
| 75 | + * Example packs for each supported language, for example, `codeql/{language}-examples`. These packs contain useful snippets of {% data variables.product.prodname_codeql %} that query writers may find useful. |
| 76 | + * Legacy packs that ensure custom queries and libraries created using older products are compatible with your version of {% data variables.product.prodname_codeql %}. |
0 commit comments