Qodana 2022.2 Help

Quality gate

Quality gate is the maximum number of problems that can be detected by Qodana without causing a CI/CD workflow or pipeline fail. Once the quality gate limit is reached, Qodana terminates with the exit code 255.

This feature lets you control your code quality and build software that meets your quality metrics. For example, if you set the quality gate for ten problems, a build workflow will fail once the eleventh problem is detected.

The quality gate and fail threshold terms are used interchangeably with the former being a feature in overall, and the latter meaning a configuration option.

This section explains how to configure Qodana quality gate for:

Local run

You can run Qodana with the configured quality gate locally using available Docker images:

docker run -v <source-directory>/:/data/project/ \ jetbrains/qodana-<linter> \ --fail-threshold <number>

In this sample, <source-directory> specifies the full local path to the project source code, and the --fail-threshold <number> option configures the quality gate.

GitHub Actions

You can enforce GitHub to block merge of pull requests if the Qodana quality gate has failed. To do it, create a branch protection rule as described below:

  1. Create a new or open an existing GitHub Actions workflow that invokes the Qodana scan action.

  2. Set the workflow to run on pull_request events that target the main branch.

    on: pull_request: branches: - main

    Instead of main, you can specify your branch here.

  3. Set the fail threshold (number) for the Qodana Action fail-threshold option.

  4. Under your repository name, click Settings.

  5. On the left menu, click Branches.

  6. In the branch protection rules section, click Add rule.

  7. Add main to Branch name pattern.

  8. Select Require status checks to pass before merging.

  9. Search for the Qodana status check, then check it.

  10. Click Create.

Jenkins

To set up Qodana quality gate in a Jenkins Pipeline, you can add the --fail-threshold <number> option to the steps block:

stage('Qodana') { agent { docker { image 'jetbrains/qodana-<linter>' args '-v <project-directory>:/data/project/' args '-v <report-directory>:/data/results/' args '--entrypoint=""' } } steps { sh "qodana --save-report --fail-threshold <number>" } }

To learn more about Qodana integration with Jenkins, see the Jenkins integration section of this documentation.

GitLab CI/CD

To configure the Qodana quality gate in a GitLab CI/CD pipeline, you can save this configuration sample to the .gitlab-ci.yml file:

qodana: image: name: jetbrains/qodana-<linter> entrypoint: [''] script: - qodana --results-dir=$CI_PROJECT_DIR/qodana --save-report --report-dir=$CI_PROJECT_DIR/qodana/report --fail-threshold <number> artifacts: paths: - qodana

In this sample, the script section specifies the --fail-threshold <number> option.

Last modified: 30 September 2022