diff --git a/.idea/Qodana.iml b/.idea/Qodana.iml new file mode 100644 index 00000000..d6ebd480 --- /dev/null +++ b/.idea/Qodana.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 00000000..862d09bd --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 00000000..37cb1e8e --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..35eb1ddf --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 00000000..9cbfff90 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + 1707820664417 + + + + + + \ No newline at end of file diff --git a/cfg-writerside/build-script.xml b/cfg-writerside/build-script.xml new file mode 100644 index 00000000..ae1e4b4c --- /dev/null +++ b/cfg-writerside/build-script.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cfg-writerside/buildprofiles.xml b/cfg-writerside/buildprofiles.xml new file mode 100644 index 00000000..1f91d7a8 --- /dev/null +++ b/cfg-writerside/buildprofiles.xml @@ -0,0 +1,64 @@ + + + + + + + https://www.jetbrains.com/help/qodana/ + 3 + false + true + false + jetbrains + false + https://data.services.jetbrains.com/feedback + false + false + webmaster@jetbrains.com + mailto:qodana-support@jetbrains.com/ + true + https://data.services.jetbrains.com/search/ + true + https://github.com/JetBrains/Qodana/edit/2023.3/ + true + true + https://data.services.jetbrains.com/help-versions + https://www.jetbrains.com/help + @qodanaevolves + https://resources.jetbrains.com/storage/products/qodana/img/meta/preview.png + thirdparty/dpk-gtm-analytics.html + + + + true + true + https://forms-service.jetbrains.com/feedback + Qodana Documentation + + + + + img/ + + false + false + false + Qodana TeamCity Plugin Documentation + + + + img/ + + false + false + false + + + + img/ + + false + false + false + + \ No newline at end of file diff --git a/cfg-writerside/platforms.xml b/cfg-writerside/platforms.xml new file mode 100644 index 00000000..fbbb3895 --- /dev/null +++ b/cfg-writerside/platforms.xml @@ -0,0 +1,12 @@ + + + + + + ctrl:Ctrl;control:Ctrl;alt:Alt;shift:Shift;command:⌘;meta:⌘ + \ + + + ctrl:^;control:Control;alt:⌥;shift:⇧;command:⌘;meta:⌘ + / + + diff --git a/cfg-writerside/thirdparty/dpk-gtm-analytics.html b/cfg-writerside/thirdparty/dpk-gtm-analytics.html new file mode 100644 index 00000000..2acff540 --- /dev/null +++ b/cfg-writerside/thirdparty/dpk-gtm-analytics.html @@ -0,0 +1,11 @@ + + diff --git a/cfg/build-script.xml b/cfg/build-script.xml index 11f3f219..ae1e4b4c 100644 --- a/cfg/build-script.xml +++ b/cfg/build-script.xml @@ -1,29 +1,19 @@ + SYSTEM 'https://resources.jetbrains.com/writerside/1.0/build-script.dtd'> - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cfg/buildprofiles.xml b/cfg/buildprofiles.xml index 304124f9..bb8eed06 100644 --- a/cfg/buildprofiles.xml +++ b/cfg/buildprofiles.xml @@ -1,64 +1,60 @@ - - - - https://www.jetbrains.com/help/qodana/ - 3 - false - true - false - jetbrains - false - https://data.services.jetbrains.com/feedback - false - false - webmaster@jetbrains.com - mailto:qodana-support@jetbrains.com/ - true - https://data.services.jetbrains.com/search/ - true - https://github.com/JetBrains/Qodana/edit/2023.3/ - true - true - https://data.services.jetbrains.com/help-versions - https://www.jetbrains.com/help - @qodanaevolves - https://resources.jetbrains.com/storage/products/qodana/img/meta/preview.png - - - - - true - true - https://forms-service.jetbrains.com/feedback - - - - - - img/ - - false - false - false - - - - - img/ - - false - false - false - - - - - img/ - - false - false - false - - + + + + https://www.jetbrains.com/help/qodana/ + 3 + false + true + false + jetbrains + false + https://data.services.jetbrains.com/feedback + false + false + webmaster@jetbrains.com + mailto:qodana-support@jetbrains.com/ + true + https://data.services.jetbrains.com/search/ + true + https://github.com/JetBrains/Qodana/edit/2023.3/ + true + true + https://data.services.jetbrains.com/help-versions + https://www.jetbrains.com/help + @qodanaevolves + https://resources.jetbrains.com/storage/products/qodana/img/meta/preview.png + + + + true + true + https://forms-service.jetbrains.com/feedback + + + + + img/ + + false + false + false + + + + img/ + + false + false + false + + + + img/ + + false + false + false + + \ No newline at end of file diff --git a/images/qodana-cloud.gif b/images/qodana-cloud.gif new file mode 100644 index 00000000..fdffabee Binary files /dev/null and b/images/qodana-cloud.gif differ diff --git a/project.ihp b/project.ihp index c581e2b9..bad90e6f 100644 --- a/project.ihp +++ b/project.ihp @@ -1,6 +1,5 @@ - - + + sentence @@ -9,13 +8,7 @@ - + - - - - + diff --git a/qd.tree b/qd.tree index 9093d190..376a85da 100644 --- a/qd.tree +++ b/qd.tree @@ -1,159 +1,132 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/qd_tc.tree b/qd_tc.tree index 187926b9..0b6002b6 100644 --- a/qd_tc.tree +++ b/qd_tc.tree @@ -1,10 +1,8 @@ - - - - - - - - - + + + + + + + + diff --git a/redirection-rules.xml b/redirection-rules.xml index 368cb6eb..38f22aae 100644 --- a/redirection-rules.xml +++ b/redirection-rules.xml @@ -1,5 +1,5 @@ - - + + docker-techs.html @@ -12,4 +12,4 @@ teamcity-plugin.html - \ No newline at end of file + diff --git a/topics/Quick-start.xml b/topics/Quick-start.topic similarity index 66% rename from topics/Quick-start.xml rename to topics/Quick-start.topic index b4a8490b..94f0bec3 100644 --- a/topics/Quick-start.xml +++ b/topics/Quick-start.topic @@ -1,16 +1,16 @@ - - + + - + -

The current version of %product% (%product-version%) provides the linters that let you analyze +

The current version of %instance% (%product-version%) provides the linters that let you analyze Java, Kotlin, Groovy, PHP, JavaScript, TypeScript, C#, Visual Basic, C, C++, Python, and Golang projects. You can - also extend the default linter configuration using various features.

+ also extend the default linter configuration using various features.

-

As an example, this section explains how you can quickly start working with %product% using:

+

As an example, this section explains how you can quickly start working with %instance% using:

  • JetBrains IDEs
  • @@ -20,34 +20,34 @@ - You can skip the prerequisites if you would like to run %product% in JetBrains IDEs. + You can skip the prerequisites if you would like to run %instance% in JetBrains IDEs. -

    Depending on your %product% license, you probably need to obtain a trial license and accomplish +

    Depending on your %instance% license, you probably need to obtain a trial license and accomplish the onboarding stage at Qodana Cloud.

    -

    To run %product% in the CLI and GitHub, you will be using a project token available after creating a Qodana Cloud - project. To learn more about it, see the section.

    +

    To run %instance% in the CLI and GitHub, you will be using a project token available after creating a Qodana Cloud + project. To learn more about it, see the section.

    -

    Starting from version 2023.2, %product% is available in IntelliJ IDEA and PyCharm (both the Professional and +

    Starting from version 2023.2, %instance% is available in IntelliJ IDEA and PyCharm (both the Professional and Community editions), PhpStorm, WebStorm, GoLand, and Rider.

    - You do not need to buy a separate %product% license to run it in the IDE. + You do not need to buy a separate %instance% license to run it in the IDE. -

    Here is the short video showing how you can run %product% in your IDE.

    +

    Here is the short video showing how you can run %instance% in your IDE.

    - Running Qodana in an IDE + Running Qodana in an IDE

    Here is the description of all steps shown in this video:

    - In your IDE, navigate to the Problems tool window. - In the Problems tool window, click the Server-Side Analysis tab. - On the Server-Side Analysis tab, click the Try locally button. + In your IDE, navigate to the Problems tool window. + In the Problems tool window, click the Server-Side Analysis tab. + On the Server-Side Analysis tab, click the Try locally button. - On the Server-Side Analysis tab, you can view inspection results. It + On the Server-Side Analysis tab, you can view inspection results. It also contains two links in the upper part of the tab. Links on the Server-Side Analysis tab @@ -56,11 +56,11 @@ Qodana report -

    Open the configuration wizard for using %product% in CI/CD pipelines.

    +

    Open the configuration wizard for using %instance% in CI/CD pipelines.

    Qodana report -

    To learn more about %product% and CI/CD pipelines, see the section.

    +

    To learn more about %instance% and CI/CD pipelines, see the section.

    @@ -72,7 +72,7 @@

    Qodana provides two options for local analysis of your code. Qodana CLI is the easiest option to start. - Alternatively, you can use the Docker command from the Docker image tab.

    + Alternatively, you can use the Docker command from the Docker image tab.

    @@ -84,41 +84,41 @@

    Install with Homebrew (recommended):

    - + brew install jetbrains/utils/qodana - +

    Alternatively, you can install Qodana CLI using our installer:

    - + curl -fsSL https://jb.gg/qodana-cli/install | bash - -

    You can also install %product% using Go:

    - + +

    You can also install %instance% using Go:

    + go install github.com/JetBrains/qodana-cli@latest -
    +

    Install with Scoop:

    - + scoop bucket add jetbrains https://github.com/JetBrains/scoop-utils scoop install qodana - -

    You can also install %product% using Go:

    - + +

    You can also install %instance% using Go:

    + go install github.com/JetBrains/qodana-cli@latest -
    +

    In the project root directory, declare the QODANA_TOKEN variable containing the project token described in the prerequisites:

    - + QODANA_TOKEN="<cloud-project-token>" - -

    Now you can run %product%:

    - + +

    Now you can run %instance%:

    + qodana scan -
    +
    @@ -127,10 +127,10 @@

    Pull the image from Docker Hub (only necessary to get the latest version):

    - + docker pull <image> - -

    Here, image denotes the Docker image name of a %product% linter from this table:

    + +

    Here, image denotes the Docker image name of a %instance% linter from this table:

    @@ -181,14 +181,14 @@

    Run this command to analyze your codebase:

    - + docker run \ -p 8080:8080 \ -v <source-directory>/:/data/project/ \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> \ --show-report - +

    Here, <source-directory> points to the root of your project, and the QODANA_TOKEN variable contains the project token described in the prerequisites.

    @@ -200,20 +200,20 @@ - Depending on your tasks, you can configure %product% as explained on the page. + Depending on your tasks, you can configure %instance% as explained on the page. -

    Here is the short video showing how you can configure and run %product% in GitHub.

    +

    Here is the short video showing how you can configure and run %instance% in GitHub.

    - Running Qodana in GitHub + Running Qodana in GitHub -

    Assuming that you already generated a project token as described in the chapter, follow these steps to configure %product% in GitHub:

    +

    Assuming that you already generated a project token as described in the chapter, follow these steps to configure %instance% in GitHub:

    - + - You can learn more about how to use %product% in CI/CD pipelines in the section. + You can learn more about how to use %instance% in CI/CD pipelines in the section. @@ -221,11 +221,11 @@ -
  • Study inspection results using Qodana Cloud
  • -
  • Configure %product% profiles
  • +
  • Study inspection results using Qodana Cloud
  • +
  • Configure %instance% profiles
  • Use JetBrains IDEs to inspect your code
  • -
  • Build %product% into your CI pipelines
  • -
  • Configure Docker images
  • +
  • Build %instance% into your CI pipelines
  • +
  • Configure Docker images
  • diff --git a/topics/about-qodana.md b/topics/about-qodana.md index db794583..e028d81f 100644 --- a/topics/about-qodana.md +++ b/topics/about-qodana.md @@ -5,63 +5,63 @@ **Qodana** is a smart code quality platform by JetBrains best suited for working in teams. It can analyze code written in 60+ languages including Java, JavaScript, TypeScript, PHP, Kotlin, Python, Go, and C#. -## Run %product% in your CI/CD pipeline or locally +## Run %instance% in your CI/CD pipeline or locally Qodana provides native solutions for [](qodana-azure-pipelines.md), [CircleCI](circleci.md), [GitHub](github.md), and [TeamCity](teamcity.md). With other CI/CD systems, you can use [Docker images](docker-images.md). -To run %product% locally, you can use [Docker images](docker-images.md), the -[%product% CLI](https://github.com/jetbrains/qodana-cli) tool, and [JetBrains IDEs](qodana-ide-plugin.md). +To run %instance% locally, you can use [Docker images](docker-images.md), the +[%instance% CLI](https://github.com/jetbrains/qodana-cli) tool, and [JetBrains IDEs](qodana-ide-plugin.md). You can inspect your code using the default [inspection profiles](inspection-profiles.md#Default+profiles), which requires -no configuration steps and lets you run %product% out of the box. You can also configure the default inspection profiles or +no configuration steps and lets you run %instance% out of the box. You can also configure the default inspection profiles or create your own inspection profile in the [YAML](custom-profiles.md) and [XML](custom-xml-profiles.md) formats. -Finally, you can go beyond the existing inspections and [extend %product%](extending-qodana.xml). +Finally, you can go beyond the existing inspections and [extend %instance%](extending-qodana.topic). ## Improve the quality of your software -%product% reports provide detailed description of concrete problems and code fragments that contain such problems, +%instance% reports provide detailed description of concrete problems and code fragments that contain such problems, as well as recommendations about how to solve such problems. Using these recommendations, you can improve the quality of your product by preventing bugs in production and learning from the process. For more details, you can study the [](ui-overview.md) section. ## Optimize code reviews -%product% ensures your code is healthy before it even enters the review and testing phase. Achieve quick wins like fewer +%instance% ensures your code is healthy before it even enters the review and testing phase. Achieve quick wins like fewer bugs, vulnerabilities, and conflicting licenses, and meet long-term goals like maintainable code that makes it easy to ship new features and implement changes. The inspection report will be uploaded to Qodana Cloud, so that you can view it in detail. Besides that, you can -study %product% reports using [JetBrains IDEs](qodana-ide-plugin.md) and [Visual Studio Code](vscode.md). +study %instance% reports using [JetBrains IDEs](qodana-ide-plugin.md) and [Visual Studio Code](vscode.md). -Besides that, in GitHub %product% can inspect [pull requests](github.md#Pull+request+quality+gate). +Besides that, in GitHub %instance% can inspect [pull requests](github.md#Pull+request+quality+gate). ## Enforce coding standards -Using %product% as a [quality gate](quality-gate.xml), you can decide the number of problems to cause a build fail, plan -the problems to be solved right away and postponed by putting them to a [baseline](baseline.xml), or automatically apply +Using %instance% as a [quality gate](quality-gate.topic), you can decide the number of problems to cause a build fail, plan +the problems to be solved right away and postponed by putting them to a [baseline](baseline.topic), or automatically apply suggested [quick-fixes](quick-fix.md) to let your team save time. ## Share reports with other team members -[Qodana Cloud](https://qodana.cloud) helps you accumulate %product% reports and track the progress in your project(s) +[Qodana Cloud](https://qodana.cloud) helps you accumulate %instance% reports and track the progress in your project(s) from a single point. Such reports are available for all members of your team(s). To become more familiar with Qodana -Cloud, visit the [](cloud-about.xml) page. +Cloud, visit the [](cloud-about.topic) page. ## Take advantage of our pricing model -%product% license costs under the Ultimate and Ultimate Plus licenses depend on the number of active contributors, and +%instance% license costs under the Ultimate and Ultimate Plus licenses depend on the number of active contributors, and this lets you inspect an unlimited number of code lines. -You can also run %product% under the free Community license; however, in this case %product% functionality will be -restricted. To compare %product% licenses, you can visit the [](pricing.md) page. +You can also run %instance% under the free Community license; however, in this case %instance% functionality will be +restricted. To compare %instance% licenses, you can visit the [](pricing.md) page. ## Next steps -- Quick start guide +- Quick start guide - Request a demo -- %product% features +- %instance% features ## Contact us diff --git a/topics/baseline.xml b/topics/baseline.topic similarity index 68% rename from topics/baseline.xml rename to topics/baseline.topic index 17def4b6..8bca074d 100644 --- a/topics/baseline.xml +++ b/topics/baseline.topic @@ -1,13 +1,13 @@ - - + + - + -

    Baseline is a snapshot of the codebase problems taken at a specific %product% run and - contained in the qodana.sarif.json file.

    +

    Baseline is a snapshot of the codebase problems taken at a specific %instance% run and + contained in the qodana.sarif.json file.

    Using the baseline feature, you can compare your current code with its baseline state and see new, unchanged, and resolved problems.

    @@ -17,7 +17,7 @@ -

    If you run %product% without a baseline, you will be able to see the problems detected at a current run.

    +

    If you run %instance% without a baseline, you will be able to see the problems detected at a current run.

    Running Qodana without baseline @@ -25,39 +25,39 @@ existing problems.

    To improve the situation, you can add problems to a baseline and save them to the - qodana.sarif.json file in your project directory as explained in the - section of the %product% report description. Once done, - this file becomes a basis for comparing with subsequent code states. You can run %product% with the baseline - enabled using Qodana CLI, Docker images of %product%, + qodana.sarif.json file in your project directory as explained in the + section of the %instance% report description. Once done, + this file becomes a basis for comparing with subsequent code states. You can run %instance% with the baseline + enabled using Qodana CLI, Docker images of %instance%, or JetBrains IDEs:

    - + qodana scan \ -v <path_to_baseline>:/data/base/ \ -e QODANA_TOKEN="<cloud-project-token>" \ --baseline /data/base/qodana.sarif.json - +

    Here, the -v <path_to_baseline>:/data/base/ line mounts the directory - containing the SARIF-formatted baseline file to the /data/base directory of the %product% + containing the SARIF-formatted baseline file to the /data/base directory of the %instance% Docker image. The QODANA_TOKEN variable refers to the project token required by the Ultimate and Ultimate Plus linters.

    - + docker run \ -v $(pwd):/data/project/ \ -v <path_to_baseline>:/data/base/ \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> \ --baseline /data/base/qodana.sarif.json - +

    In this snippet, the -v <path_to_baseline>:/data/base/ line mounts the directory - containing the SARIF-formatted baseline file to the /data/base directory of the %product% + containing the SARIF-formatted baseline file to the /data/base directory of the %instance% Docker image. The --baseline option specifies the path to the baseline file from the Docker filesystem. The QODANA_TOKEN variable refers to the project token required by the @@ -71,16 +71,16 @@

    This video shows how you can inspect your code using baseline.

    - Running the baseline in the IDE + Running the baseline in the IDE

    Here is the description of each step from the video:

    - In your IDE, navigate to the Problems tool window. - In the Problems tool window, click the Server-Side Analysis tab. - On the Server-Side Analysis tab, click the Start Qodana button. - In the dialog that opens, click the Try locally button. - In the dialog, expand the Advanced Configuration section, select the baseline file, and then click Run. + In your IDE, navigate to the Problems tool window. + In the Problems tool window, click the Server-Side Analysis tab. + On the Server-Side Analysis tab, click the Start Qodana button. + In the dialog that opens, click the Try locally button. + In the dialog, expand the Advanced Configuration section, select the baseline file, and then click Run.
    @@ -99,37 +99,37 @@ -
  • The first %product% run detected two problems in the codebase.
  • +
  • The first %instance% run detected two problems in the codebase.
  • -
  • To create a baseline for your project, download the qodana.sarif.json file and +
  • To create a baseline for your project, download the qodana.sarif.json file and save it to your project directory as shown in the section. - Starting from this moment, these two problems are identified by %product% as baseline problems. + Starting from this moment, these two problems are identified by %instance% as baseline problems.
  • -
  • A subsequent %product% run detected three problems. Fortunately, this time %product% +
  • A subsequent %instance% run detected three problems. Fortunately, this time %instance% identifies one of them as new and marks it respectively. The other two are the baseline problems; they are already reflected in the baseline report and marked as unchanged.
  • -
  • After one baseline problem is resolved, you decided to run %product% again. This time, the report will +

  • After one baseline problem is resolved, you decided to run %instance% again. This time, the report will contain three problems. The new problem is the problem that was detected in the previous run and still remains new. There is also one unchanged problem that has not changed its status. Finally, the first baseline problem was resolved and now is marked as absent.

    -

    To include absent problems in the report, you need to run %product% with the - --baseline-include-absent option:

    +

    To include absent problems in the report, you need to run %instance% with the + --baseline-include-absent option:

    - + qodana scan \ -v <path_to_baseline>:/data/base/ \ -e QODANA_TOKEN="<cloud-project-token>" \ --baseline /data/base/qodana.sarif.json \ --baseline-include-absent - + - + docker run \ -v $(pwd):/data/project/ \ -v <path_to_baseline>:/data/base/ \ @@ -137,21 +137,21 @@ jetbrains/qodana-<linter> \ --baseline /data/base/qodana.sarif.json \ --baseline-include-absent - +
  • -

    As you can see, new problems do not change the status across %product% runs. To transform them to unchanged, +

    As you can see, new problems do not change the status across %instance% runs. To transform them to unchanged, you need to update your baseline.

    Updating the baseline -
  • Save the updated version of the qodana.sarif.json file to your project directory.
  • -
  • Run %product% again to see the change in the problem status.
  • +
  • Save the updated version of the qodana.sarif.json file to your project directory.
  • +
  • Run %instance% again to see the change in the problem status.
  • diff --git a/topics/before-running-qodana.md b/topics/before-running-qodana.md index eea02951..beee2c5c 100644 --- a/topics/before-running-qodana.md +++ b/topics/before-running-qodana.md @@ -1,8 +1,8 @@ [//]: # (title: Prepare your project) -When %product% runs on your project, it tries to figure out the build system and project structure by itself. -If %product% cannot figure out the project structure, it will run the inspections nevertheless, but some inspections may -report that they cannot find classes, packages, files or cannot resolve references. In these cases, %product% needs a +When %instance% runs on your project, it tries to figure out the build system and project structure by itself. +If %instance% cannot figure out the project structure, it will run the inspections nevertheless, but some inspections may +report that they cannot find classes, packages, files or cannot resolve references. In these cases, %instance% needs a bit of help. Typical actions to prepare the project for Qodana are: * Install third-party packages or libraries @@ -35,7 +35,7 @@ set -eu #npm install ``` -Run the script within a %product% Docker container using the `bootstrap` option: +Run the script within a %instance% Docker container using the `bootstrap` option: ```shell bootstrap: sh ./prepare-qodana.sh diff --git a/topics/bitbucket.md b/topics/bitbucket.md index 57ecf3c6..172f2061 100644 --- a/topics/bitbucket.md +++ b/topics/bitbucket.md @@ -5,9 +5,9 @@ [Bitbucket Cloud](https://support.atlassian.com/bitbucket-cloud/docs/get-started-with-bitbucket-cloud/) is a tool that gives teams one place to plan, collaborate, test, and deploy their code. This -section explains how you can run %product% [Docker images](docker-images.md) within Bitbucket Cloud +section explains how you can run %instance% [Docker images](docker-images.md) within Bitbucket Cloud [pipelines](%pipeline%) and covers -application of the [quality gate](quality-gate.xml) and [baseline](baseline.xml) features. +application of the [quality gate](quality-gate.topic) and [baseline](baseline.topic) features. ## Prepare your project @@ -17,13 +17,13 @@ for storing a pipeline configuration. ## Basic configuration - + This configuration will be used as a basis for all examples in this section. ## Quality gate -Using the [`--fail-threshold`](docker-image-configuration.xml#docker-config-reference-quality-gate) option, you can +Using the [`--fail-threshold`](docker-image-configuration.topic#docker-config-reference-quality-gate) option, you can configure the limit of problems accepted in your project: ```yaml @@ -50,8 +50,8 @@ definitions: ## Baseline -Use the [`--baseline `](docker-image-configuration.xml#docker-config-reference-baseline) option to -specify the path to the SARIF-formatted file used as a [baseline](baseline.xml): +Use the [`--baseline `](docker-image-configuration.topic#docker-config-reference-baseline) option to +specify the path to the SARIF-formatted file used as a [baseline](baseline.topic): ```yaml image: atlassian/default-image:4 diff --git a/topics/ci.md b/topics/ci.md index 3fbc63f7..c095f6a1 100644 --- a/topics/ci.md +++ b/topics/ci.md @@ -7,7 +7,7 @@ The Qodana UI can be part of the CI user interface in case your CI supports the spin the Qodana UI on your own following the [guidelines](html-report.md). -You can learn more about %product% integration solutions provided for: +You can learn more about %instance% integration solutions provided for: - [](qodana-azure-pipelines.md) - [](bitbucket.md) diff --git a/topics/circleci.md b/topics/circleci.md index 194da1d2..30d90606 100644 --- a/topics/circleci.md +++ b/topics/circleci.md @@ -1,6 +1,6 @@ [//]: # (title: CircleCI) -CircleCI is a cloud-based CI/CD system. You can build %product% into your CircleCI +CircleCI is a cloud-based CI/CD system. You can build %instance% into your CircleCI [pipelines](https://circleci.com/docs/concepts#pipelines) using the CircleCI Qodana [orb](https://circleci.com/docs/orb-concepts) as described in this procedure: @@ -12,7 +12,7 @@ version: 2.1 2. Below the CircleCI version, add the orbs stanza, and -then specify the qodana element along with the %product% version: +then specify the qodana element along with the %instance% version: ```yaml orbs: @@ -28,7 +28,7 @@ If necessary, repeat this step for all required workflows and jobs. ## Examples -Using this configuration sample, you can scan your project with %product% with the default configuration parameters: +Using this configuration sample, you can scan your project with %instance% with the default configuration parameters: ```yaml version: '2.1' @@ -71,16 +71,16 @@ workflows: ### Qodana Cloud - + To forward inspection results to Qodana Cloud, all you need to do is to create the `QODANA_TOKEN` [project variable](https://circleci.com/docs/set-environment-variable/#set-an-environment-variable-in-a-project) and - save the [project token](cloud-projects.xml#cloud-manage-projects) as its value. + save the [project token](cloud-projects.topic#cloud-manage-projects) as its value. After the token is set for analysis, all Qodana job results will be uploaded to your Qodana Cloud project. - + -![Qodana Cloud](https://user-images.githubusercontent.com/13538286/214899046-572649db-fe62-49b2-a368-b5d07737c1c1.gif) +![Qodana Cloud](qodana-cloud.gif) ## Commands and parameters @@ -96,6 +96,6 @@ This table contains the list of optional string parameters that can be additiona | `primary-cache-key` | Customize the generated cache hash | `qodana-2023.3-<< pipeline.git.branch >>-<< pipeline.git.revision >>` | | `additional-cache-key` | Customize the generated cache hash | `qodana-2023.3-<< pipeline.git.branch >>` | | `args` | Additional arguments of the [Qodana CLI](https://github.com/jetbrains/qodana-cli#scan) `scan` command | No default value | -| `artifact-name` | Name of the artifact resulting from scanning project with %product%, used for uploading of scan results | `qodana-report` | -| `cache-dir` | Directory for %product% caches | `/tmp/cache/qodana` | +| `artifact-name` | Name of the artifact resulting from scanning project with %instance%, used for uploading of scan results | `qodana-report` | +| `cache-dir` | Directory for %instance% caches | `/tmp/cache/qodana` | | `results-dir` | Directory for storing the results of scanning | `/tmp/qodana/results` | \ No newline at end of file diff --git a/topics/cloud-about.xml b/topics/cloud-about.topic similarity index 63% rename from topics/cloud-about.xml rename to topics/cloud-about.topic index 78a11951..a8aded61 100644 --- a/topics/cloud-about.xml +++ b/topics/cloud-about.topic @@ -1,12 +1,12 @@ - - + + - + - The Qodana Cloud diagram + The Qodana Cloud diagram

    In case you run Qodana in multiple projects or repositories, you can find that it would be good to load and aggregate all inspection reports in a single place, especially if the codebase is distributed across several @@ -17,5 +17,5 @@ reports and track the progress in your project(s) from a single point: Qodana instances automatically forward inspection reports to Qodana Cloud based on project tokens.

    -

    For more information, see the Qodana Cloud use-cases page.

    +

    For more information, see the Qodana Cloud use-cases page.

    diff --git a/topics/cloud-configure-for-os-projects.md b/topics/cloud-configure-for-os-projects.md index 3b90a6d7..915805c0 100644 --- a/topics/cloud-configure-for-os-projects.md +++ b/topics/cloud-configure-for-os-projects.md @@ -6,17 +6,17 @@ -This section explains how you can inspect your open-source projects using %product%, and how you can use %cloud% to -view %product% inspection results in a convenient form and free for open-source projects. +This section explains how you can inspect your open-source projects using %instance%, and how you can use %cloud% to +view %instance% inspection results in a convenient form and free for open-source projects. ## Before you start Depending on your needs, it may be useful to know how to: -* [Inspect your code](inspect-your-code.xml) using %product% -* Configure %product% using [`qodana.yaml`](qodana-yaml.md) and [](docker-image-configuration.xml) -* Run %product% either [locally](Quick-start.xml) on in your [CI/CD pipelines](ci.md) -* [Forward reports](cloud-forward-reports.xml) to %cloud% +* [Inspect your code](inspect-your-code.topic) using %instance% +* Configure %instance% using [`qodana.yaml`](qodana-yaml.md) and [](docker-image-configuration.topic) +* Run %instance% either [locally](Quick-start.topic) on in your [CI/CD pipelines](ci.md) +* [Forward reports](cloud-forward-reports.topic) to %cloud% ## Prepare %cloud% If you plan to create a separate team and project in your Qodana Cloud account, follow the steps below. @@ -28,25 +28,25 @@ In the %cloud% UI, navigate to your organization. Creating an organization
    -In your organization, create a team. +In your organization, create a team. -In your team, create a project. +In your team, create a project. -In the project, click Generate token to generate a project token. +In the project, click Generate token to generate a project token. Generate the project token -To learn more about using project tokens, see the section. +To learn more about using project tokens, see the section. ## Inspect your projects -You can inspect your codebase using methods described in the [](inspect-your-code.xml) section. +You can inspect your codebase using methods described in the [](inspect-your-code.topic) section. -Depending on the %product% [license](pricing.md#pricing-linters-licenses), you can configure various features, for example: +Depending on the %instance% [license](pricing.md#pricing-linters-licenses), you can configure various features, for example: * [Baseline](#Configure+baseline) for monitoring current and new problems * [Inspections](#Configure+inspections) that you would like to use @@ -56,14 +56,14 @@ Depending on the %product% [license](pricing.md#pricing-linters-licenses), you c Here are the links to the sections that describe other available features: * [](code-coverage.md) -* [](php-language-upgrade.xml) +* [](php-language-upgrade.topic) * [](quick-fix.md) * [](taint-analysis.md) * [](vulnerability-checker.md) ### Configure inspections -By default, %product% inspects your code using the `qodana.starter` profile. You can use additional inspections by +By default, %instance% inspects your code using the `qodana.starter` profile. You can use additional inspections by specifying the `qodana.recommended` profile in the [`qodana.yaml`](qodana-yaml.md) file contained in your project root: ```yaml @@ -81,7 +81,7 @@ profile: ### Configure license audit {id="configure-license-audit"} -[License audit](license-audit.xml) lets you track compatibility of dependency licenses with your project license. +[License audit](license-audit.topic) lets you track compatibility of dependency licenses with your project license. To enable the license audit, use the `include` option of the [`qodana.yaml`](qodana-yaml.md) file in your project root: @@ -92,10 +92,10 @@ include: ### Configure baseline -[Baseline](baseline.xml) lets you create a snapshot of your project that will be used as a basis for +[Baseline](baseline.topic) lets you create a snapshot of your project that will be used as a basis for subsequent analysis. To enable it, select inspections and download the `qodana.sarif.json` file. -You can run %product% with the baseline enabled using the `--baseline` option: +You can run %instance% with the baseline enabled using the `--baseline` option: ```shell --baseline @@ -104,7 +104,7 @@ You can run %product% with the baseline enabled using the `--baseline` option: ### Configure the quality gate {id="configure-quality-gate"} -[](quality-gate.xml) lets you configure the ultimate number of problems that will cause a CI/CD pipeline failure. +[](quality-gate.topic) lets you configure the ultimate number of problems that will cause a CI/CD pipeline failure. Once configured, a quality gate will make your CI/CD system: @@ -115,7 +115,7 @@ To enable the quality gate, you can use the `fail-threshold ` option. ### Types of Qodana reports -%product% can generate the following types of inspection reports: +%instance% can generate the following types of inspection reports: * Reports containing inspection results over a specific branch of your project * Pull or merge request inspection reports generated by [GitHub Actions](#GitHub+Actions) and [GitLab CI/CD](#GitLab+CI%2FCD) @@ -176,7 +176,7 @@ Using this example, you can configure GitLab CI/CD for: * Blocking merge requests if a quality gate has failed * Forwarding inspection results to %cloud% -Follow these steps to add a %product% runner to a GitLab CI/CD pipeline: +Follow these steps to add a %instance% runner to a GitLab CI/CD pipeline: 1. Create the [`QODANA_TOKEN`](https://docs.gitlab.com/ee/ci/variables/) variable and save the %cloud% project token value in it 2. Paste this sample to the `.gitlab-ci.yml` file: @@ -201,10 +201,10 @@ qodana: paths: - qodana ``` -In this sample, specify the %product% linter and the quality gate using `--fail-threshold` option. -Using this configuration, %product% will inspect the main branch and all merge requests coming to your repository. +In this sample, specify the %instance% linter and the quality gate using `--fail-threshold` option. +Using this configuration, %instance% will inspect the main branch and all merge requests coming to your repository. ## Inspection result overview After your project is inspected and inspection results are uploaded to %cloud%, you can view results as shown -[on this page](cloud-overview-reports.xml). \ No newline at end of file +[on this page](cloud-overview-reports.topic). \ No newline at end of file diff --git a/topics/cloud-forward-reports.xml b/topics/cloud-forward-reports.topic similarity index 73% rename from topics/cloud-forward-reports.xml rename to topics/cloud-forward-reports.topic index bbb0fdf5..1aea2382 100644 --- a/topics/cloud-forward-reports.xml +++ b/topics/cloud-forward-reports.topic @@ -1,10 +1,10 @@ - - + + - + @@ -12,7 +12,7 @@ -

    This section explains how you can forward %product% reports to Qodana Cloud using this software:

    +

    This section explains how you can forward %instance% reports to Qodana Cloud using this software:

  • Docker and Qodana CLI
  • @@ -27,7 +27,7 @@

    For all these cases, you need to generate a unique Qodana Cloud project token as - shown in the section of this documentation. This + shown in the section of this documentation. This token will be invoked using the QODANA_TOKEN variable.

    To provide correct work of the contributor counting functionality, add the IP address range @@ -36,7 +36,7 @@ -

    You can forward %product% reports to Qodana Cloud using either Docker or Qodana CLI:

    +

    You can forward %instance% reports to Qodana Cloud using either Docker or Qodana CLI:

    @@ -53,7 +53,7 @@

    This is the command that uses all these variables:

    - + docker run \ -v $(pwd):/data/project/ \ -e QODANA_TOKEN="<qodana-cloud-token>" \ @@ -62,14 +62,14 @@ -e QODANA_REVISION="<commit-hash>" \ -e QODANA_JOB_URL="<job-url>" \ jetbrains/qodana-<linter> - +
    - + qodana scan \ -e QODANA_TOKEN="<qodana-cloud-token>" - +
    @@ -82,38 +82,38 @@ - +

    The rest variables and values required by Qodana Cloud are automatically generated by QodanaScan.

    -

    To learn more about %product% integration with Azure Pipelines, see the +

    To learn more about %instance% integration with Azure Pipelines, see the section of this documentation.

    - + -

    To learn more about %product% integration with Bitbucket Cloud, see the +

    To learn more about %instance% integration with Bitbucket Cloud, see the section of this documentation.

    - + -

    To learn more about %product% integration with CircleCI, see the +

    To learn more about %instance% integration with CircleCI, see the section of this documentation.

    - + -

    To learn more about %product% integration with GitHub, see the +

    To learn more about %instance% integration with GitHub, see the GitHub Actions section of this documentation.

    @@ -122,12 +122,12 @@

    1. Create the $qodana_token variable, and save the - project token as its value.

    + project token as its value.

    2. In the root folder of your GitLab-hosted project, create the .gitlab-ci.yml file and save this configuration to that file:

    - + qodana: image: name: jetbrains/qodana-<linter> @@ -139,11 +139,11 @@ artifacts: paths: - qodana - + -

    3. In the image:name section of this configuration, specify the name of the %product% Docker image.

    +

    3. In the image:name section of this configuration, specify the name of the %instance% Docker image.

    -

    To learn more about %product% integration with GitLab CI/CD, see the section of this +

    To learn more about %instance% integration with GitLab CI/CD, see the section of this documentation.

    @@ -153,11 +153,11 @@

    1. In the Jenkins UI, create the credentials with the qodana-token name as described in the Adding new global credentials section of the Jenkins documentation, and save the - project token as the value for these credentials.

    + project token as the value for these credentials.

    2. In the root directory of your project, create the Jenkinsfile file and save this configuration to that file:

    - + pipeline { environment { QODANA_TOKEN=credentials('qodana-token') @@ -179,11 +179,11 @@ } } } - + -

    3. In the image section of this script, specify the %product% Docker image name.

    +

    3. In the image section of this script, specify the %instance% Docker image name.

    -

    To learn more about %product% integration with Jenkins, see the section of this +

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

    @@ -192,12 +192,12 @@

    1. In the JetBrains Space UI, create a secret with the qodana-token name, and save the generated - project token as its value.

    + project token as its value.

    2. In the root directory of your Space-based project, create the .space.kts file and save this configuration script to that file:

    - + job("Qodana") { container("jetbrains/qodana-<linter>") { env["QODANA_TOKEN"] = Secrets("qodana-token") @@ -206,22 +206,22 @@ } } } - + -

    3. In the container section of this script, specify the %product% Docker image name.

    +

    3. In the container section of this script, specify the %instance% Docker image name.

    -

    To learn more details about %product% integration with Space Automation, see the +

    To learn more details about %instance% integration with Space Automation, see the section of this documentation.

    -

    1. In the TeamCity UI, open the build step that will run %product%.

    -

    2. In the Cloud Token field, insert the Qodana Cloud token value.

    +

    1. In the TeamCity UI, open the build step that will run %instance%.

    +

    2. In the Cloud Token field, insert the Qodana Cloud token value.

    Configuring fields in TeamCity -

    To learn more about %product% integration with TeamCity, see the section of +

    To learn more about %instance% integration with TeamCity, see the section of this documentation.

    diff --git a/topics/cloud-get-access.xml b/topics/cloud-get-access.topic similarity index 71% rename from topics/cloud-get-access.xml rename to topics/cloud-get-access.topic index e7a715e3..d54b673f 100644 --- a/topics/cloud-get-access.xml +++ b/topics/cloud-get-access.topic @@ -1,20 +1,20 @@ - - + + - +

    Here is an overview of the Qodana Cloud landing page.

    Qodana Cloud start page -
  • You can click the Continue with JetBrains account button to create a +
  • You can click the Continue with JetBrains account button to create a JetBrains account to log in to Qodana Cloud.
  • As a non-registered user, you can explore demo projects that were already analyzed by Qodana. To explore - reports in details, see the section.
  • + reports in details, see the section.
    diff --git a/topics/cloud-onboarding.md b/topics/cloud-onboarding.md index b02cbc32..d23a935f 100644 --- a/topics/cloud-onboarding.md +++ b/topics/cloud-onboarding.md @@ -1,9 +1,9 @@ [//]: # (title: Onboarding) -Onboarding is an essential step in preparing %product% for working with your project, which lets you: +Onboarding is an essential step in preparing %instance% for working with your project, which lets you: - Connect your project repository to Qodana Cloud -- Create a Qodana Cloud [organization](cloud-organizations.xml), a [team](cloud-teams.xml), and a [project](cloud-projects.xml) +- Create a Qodana Cloud [organization](cloud-organizations.topic), a [team](cloud-teams.topic), and a [project](cloud-projects.topic) - Generate a [project token](project-token.md) required by the Ultimate and Ultimate Plus linters - Set up code inspection @@ -18,18 +18,18 @@ Below is the description of the steps. -

    In the New company name field, provide either a new company name that will be stored in +

    In the New company name field, provide either a new company name that will be stored in your JetBrains account. Alternatively, you can use the already existing company taken from your JetBrains account.

    -

    In the Name of your Qodana organization field, provide the name of the organization that will be +

    In the Name of your Qodana organization field, provide the name of the organization that will be used only in Qodana Cloud. In this case, multiple Qodana organizations can be created under a single JetBrains account.

    -

    In the Country field, select your country name.

    +

    In the Country field, select your country name.

    The first step of the Qodana Cloud onboarding
    -

    In the SSH URL field, provide the SSH URL to your project that can be accessible by Qodana Cloud.

    +

    In the SSH URL field, provide the SSH URL to your project that can be accessible by Qodana Cloud.

    The second step of the Qodana Cloud onboarding @@ -39,25 +39,23 @@ used only in Qodana Cloud. In this case, multiple Qodana organizations can be cr

    Copy this public key and save it in your VCS on the project level. For example, read how to do it on:

    - -
  • [GitLab](https://docs.gitlab.com/ee/user/project/deploy_keys/#create-a-project-deploy-key)
  • -
  • [GitHub](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/managing-deploy-keys#set-up-deploy-keys) - start from step 2, i.e. skip the SSH key generation step
  • -
  • [JetBrains Space](https://www.jetbrains.com/help/space/git-keys-and-passwords.html#ssh-key) - start from step 2, i.e. skip the SSH key generation step
  • -
    +* [GitLab](https://docs.gitlab.com/ee/user/project/deploy_keys/#create-a-project-deploy-key) +* [GitHub](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/managing-deploy-keys#set-up-deploy-keys) - start from step 2, i.e. skip the SSH key generation step +* [JetBrains Space](https://www.jetbrains.com/help/space/git-keys-and-passwords.html#ssh-key) - start from step 2, i.e. skip the SSH key generation step Do not store the key on the account level, so that it cannot be shared by other repositories within your account.
    -

    In the Your project name field, specify the name of the Qodana Cloud -project. In the field below it, specify the name of the team +

    In the Your project name field, specify the name of the Qodana Cloud +project. In the field below it, specify the name of the team that the project will be accessible for.

    The third step of the Qodana Cloud onboarding -

    Open your project locally using the JetBrains IDE, or learn how to configure %product% for running in a CI/CD pipeline. -This step also contains the project token that you can -copy and use for uploading %product% reports to Qodana Cloud.

    +

    Open your project locally using the JetBrains IDE, or learn how to configure %instance% for running in a CI/CD pipeline. +This step also contains the project token that you can +copy and use for uploading %instance% reports to Qodana Cloud.

    The fourth step of the Qodana Cloud onboarding
    diff --git a/topics/cloud-organizations.xml b/topics/cloud-organizations.topic similarity index 66% rename from topics/cloud-organizations.xml rename to topics/cloud-organizations.topic index 10b58840..a978d53f 100644 --- a/topics/cloud-organizations.xml +++ b/topics/cloud-organizations.topic @@ -1,10 +1,10 @@ - - + + - +

    Organizations provide top-level structuring of all entities in Qodana Cloud. @@ -15,21 +15,21 @@

    You can navigate between organizations using the list in the left part of the Qodana Cloud UI.

    - Creating an organization + Creating an organization

    You can create either private or public organizations. Reports stored in private organizations are accessible only by a user who created an organization and users who were invited to them. Reports stored in public organizations are available for all Qodana Cloud users, including unauthorized users with the - viewer role.

    + viewer role.

    -

    Each organization is created on the basis of a JetBrains account.

    +

    Each organization is created on the basis of a JetBrains account.

    In the sidebar, expand the list of organizations and then click - Create organization.

    + Create organization.

    Creating an organization
    @@ -47,10 +47,10 @@

    In the sidebar, navigate to the organization that you wish to configure.

    - Creating an organization + Creating an organization
    -

    On the organization page, click the Organization settings button in the upper-right corner.

    +

    On the organization page, click the Organization settings button in the upper-right corner.

    Navigate to the organization settings
    @@ -59,9 +59,9 @@

    On the settings page, you can find the following tabs:

    -
  • Subscription contains the %product% license information
  • -
  • Logs contains the list of log entries connected with your organization
  • -
  • Members contains the list of organization members. Using this tab, you can +
  • Subscription contains the %instance% license information
  • +
  • Logs contains the list of log entries connected with your organization
  • +
  • Members contains the list of organization members. Using this tab, you can manage your organization membership.
  • @@ -77,23 +77,23 @@

    Within your organization, you can:

    -
  • Invite new members using email addresses, and assign them user roles
  • -
  • Change roles of the existing organization members
  • +
  • Invite new members using email addresses, and assign them user roles
  • +
  • Change roles of the existing organization members
  • Exclude members from your organization
  • On the settings page of the organization, navigate - to the Members tab.

    + to the Members tab.

    -

    On the Members tab, click Invite members.

    +

    On the Members tab, click Invite members.

    Clicking the Invite members button
    -

    In the Invite members to ... organization dialog that opens, you can manage members of your organization.

    +

    In the Invite members to ... organization dialog that opens, you can manage members of your organization.

    Managing organization membership
    diff --git a/topics/cloud-overview-reports.xml b/topics/cloud-overview-reports.topic similarity index 82% rename from topics/cloud-overview-reports.xml rename to topics/cloud-overview-reports.topic index ededeb5c..b2fad89d 100644 --- a/topics/cloud-overview-reports.xml +++ b/topics/cloud-overview-reports.topic @@ -1,10 +1,10 @@ - - + + - +

    Information from project reports is aggregated and displayed in several sections marked on this image.

    @@ -62,8 +62,8 @@

    3. Timeline describing the date of inspection, number of problems detected.

    4. Buttons for navigating to the build page, downloading the report in SARIF format, and opening the help guide.

    5. Selector for overviewing either the absolute number of detected problems, or the number of problems - relatively to a baseline set for this project.

    + relatively to a baseline set for this project.

    -

    To learn more about %product% report UI, see the section.

    +

    To learn more about %instance% report UI, see the section.

    diff --git a/topics/cloud-profile-settings.topic b/topics/cloud-profile-settings.topic new file mode 100644 index 00000000..9822df4c --- /dev/null +++ b/topics/cloud-profile-settings.topic @@ -0,0 +1,16 @@ + + + + + +

    To configure your account, in the left sidebar click Account settings.

    + + Account settings + +

    Using this section, you can configure the appearance of your Qodana Cloud account, + log out or completely delete your account.

    + +
    diff --git a/topics/cloud-profile-settings.xml b/topics/cloud-profile-settings.xml deleted file mode 100644 index 80ebb508..00000000 --- a/topics/cloud-profile-settings.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - -

    To configure your account, in the left sidebar click Account settings.

    - - Account settings - -

    Using this section, you can configure the appearance of your Qodana Cloud account, - log out or completely delete your account.

    - -
    diff --git a/topics/cloud-projects.xml b/topics/cloud-projects.topic similarity index 76% rename from topics/cloud-projects.xml rename to topics/cloud-projects.topic index d5e336fb..b03f6e0f 100644 --- a/topics/cloud-projects.xml +++ b/topics/cloud-projects.topic @@ -1,21 +1,21 @@ - - + + - + -

    Projects accumulate Qodana reports.

    +

    Projects accumulate Qodana reports.

    -

    Each project is uniquely identified by a project token. This token is used for uploading %product% reports.

    +

    Each project is uniquely identified by a project token. This token is used for uploading %instance% reports.

    During the onboarding stage, Qodana Cloud helps you create a project, so you need this for creating additional projects.

    -

    On a team page, click the Create project button.

    +

    On a team page, click the Create project button.

    Creating a new project @@ -23,7 +23,7 @@ -

    In the SSH URL field, provide the SSH URL to your project that can be accessible by Qodana Cloud.

    +

    In the SSH URL field, provide the SSH URL to your project that can be accessible by Qodana Cloud.

    The second step of the Qodana Cloud onboarding @@ -42,16 +42,16 @@ Do not store the key on the account level, so that it cannot be shared by other repositories within your account.
    -

    In the Your project name field, specify the name of the Qodana Cloud - project. In the field below it, specify the name of the team +

    In the Your project name field, specify the name of the Qodana Cloud + project. In the field below it, specify the name of the team that the project will be accessible for.

    The third step of the Qodana Cloud onboarding
    -

    Open your project locally using the JetBrains IDE, or learn how to configure %product% for running in a CI/CD pipeline. - This step also contains the project token that you can - copy and use for uploading %product% reports to Qodana Cloud.

    +

    Open your project locally using the JetBrains IDE, or learn how to configure %instance% for running in a CI/CD pipeline. + This step also contains the project token that you can + copy and use for uploading %instance% reports to Qodana Cloud.

    The fourth step of the Qodana Cloud onboarding
    diff --git a/topics/cloud-quickstart.md b/topics/cloud-quickstart.md index 93e29725..5cc8f5c7 100644 --- a/topics/cloud-quickstart.md +++ b/topics/cloud-quickstart.md @@ -1,20 +1,20 @@ [//]: # (title: Quick start) To start using Qodana Cloud, navigate to the [Qodana Cloud website](https://qodana.cloud) and -[create your account](cloud-get-access.xml). +[create your account](cloud-get-access.topic). After logging in to Qodana Cloud for the first time, you will be redirected to the [onboarding](cloud-onboarding.md) -page for creating an [organization](cloud-organizations.xml), a [team](cloud-teams.xml), a [project](cloud-projects.xml), -and have a [project token](cloud-projects.xml#cloud-manage-projects) generated for your project. +page for creating an [organization](cloud-organizations.topic), a [team](cloud-teams.topic), a [project](cloud-projects.topic), +and have a [project token](cloud-projects.topic#cloud-manage-projects) generated for your project. -This is how you can learn more about Qodana Cloud components. +This is how you can learn more about Qodana Cloud components. -Use the generated project token for [forwarding %product% reports](cloud-forward-reports.xml) to Qodana Cloud. +Use the generated project token for [forwarding %instance% reports](cloud-forward-reports.topic) to Qodana Cloud. -Finally, run %product% [locally](Quick-start.xml#quickstart-run-using-cli) or in a [CI/CD pipeline](ci.md), -and [view](cloud-overview-reports.xml) inspection results in Qodana Cloud. +Finally, run %instance% [locally](Quick-start.topic#quickstart-run-using-cli) or in a [CI/CD pipeline](ci.md), +and [view](cloud-overview-reports.topic) inspection results in Qodana Cloud. If necessary, you can create additional teams and projects without the onboarding wizard: -1. On the organization page, you can create a [team](cloud-teams.xml#cloud-teams-create-team) -2. On the team page, you can create and configure a [project](cloud-projects.xml#cloud-create-project) \ No newline at end of file +1. On the organization page, you can create a [team](cloud-teams.topic#cloud-teams-create-team) +2. On the team page, you can create and configure a [project](cloud-projects.topic#cloud-create-project) \ No newline at end of file diff --git a/topics/cloud-running-introduction.xml b/topics/cloud-running-introduction.topic similarity index 68% rename from topics/cloud-running-introduction.xml rename to topics/cloud-running-introduction.topic index 32d88d3a..1b3df2f2 100644 --- a/topics/cloud-running-introduction.xml +++ b/topics/cloud-running-introduction.topic @@ -1,10 +1,10 @@ - - + + - +

    The basic entity in Qodana Cloud is an organization. Every Qodana Cloud user creates and becomes an organization member. Later, they can create additional organizations.

    @@ -12,7 +12,7 @@ members. If you run the Ultimate and Ultimate Plus linters, you can create the unlimited number of teams. If you use only the Community linters, you can create only one team in your organization.

    -

    Each project contains results of inspection carried out by %product% over a specific codebase.

    +

    Each project contains results of inspection carried out by %instance% over a specific codebase.

    Qodana Cloud entity hierarchy diff --git a/topics/cloud-teams.xml b/topics/cloud-teams.topic similarity index 59% rename from topics/cloud-teams.xml rename to topics/cloud-teams.topic index 8c9692dc..9957a303 100644 --- a/topics/cloud-teams.xml +++ b/topics/cloud-teams.topic @@ -1,13 +1,13 @@ - - + + - + -

    A team is a part of an organization accumulating specific - projects. Using teams, you can group users around dedicated projects in +

    A team is a part of an organization accumulating specific + projects. Using teams, you can group users around dedicated projects in Qodana Cloud.

    @@ -17,12 +17,12 @@ -

    On the organization page, click Create team.

    +

    On the organization page, click Create team.

    Create a team -

    This will open the New team dialog.

    +

    This will open the New team dialog.

    -

    In the New team dialog, specify the team name and click Create team.

    +

    In the New team dialog, specify the team name and click Create team.

    The New team dialog
    @@ -43,8 +43,8 @@ Configure a team -

    You can click Invite members to add new members to a team, configure - user roles of the existing team members, or delete them.

    +

    You can click Invite members to add new members to a team, configure + user roles of the existing team members, or delete them.

    Managing team members diff --git a/topics/cloud-use-cases.xml b/topics/cloud-use-cases.topic similarity index 81% rename from topics/cloud-use-cases.xml rename to topics/cloud-use-cases.topic index feb09fdd..15df804c 100644 --- a/topics/cloud-use-cases.xml +++ b/topics/cloud-use-cases.topic @@ -1,12 +1,12 @@ - - + + - + - +

    Using Qodana Cloud, you can aggregate Qodana reports from various projects, explore development trends, and analyze team and project performance.

    @@ -21,7 +21,7 @@
    - +

    If you are already a Qodana user, you might know that you can open issues spotted by Qodana right in your IDE. This feature is available in Qodana Cloud meaning that you can fix server-side errors in the editor like @@ -32,7 +32,7 @@ quality and IDE performance.

    - +

    In Qodana Cloud, you can build reports to evaluate all pieces of code that require modification, and select the issues to add to a baseline. This way, the whole team can see the same list of issues and monitor progress diff --git a/topics/cloud-user-roles.xml b/topics/cloud-user-roles.topic similarity index 74% rename from topics/cloud-user-roles.xml rename to topics/cloud-user-roles.topic index 440b8773..10fcb73b 100644 --- a/topics/cloud-user-roles.xml +++ b/topics/cloud-user-roles.topic @@ -1,10 +1,10 @@ - - + + - +

    The role assigned to your Qodana Cloud account will depend on the case.

    diff --git a/topics/code-coverage.md b/topics/code-coverage.md index b4cea5db..e5c6a40f 100644 --- a/topics/code-coverage.md +++ b/topics/code-coverage.md @@ -53,7 +53,7 @@ following linters: ## How it works -For the missing code coverage issues, the predefined threshold in %product% is currently set to 50%. +For the missing code coverage issues, the predefined threshold in %instance% is currently set to 50%. Code coverage employs several inspections that are already included in the `qodana.recommended` and `qodana.starter` [default inspection profiles](inspection-profiles.md#Default+profiles), so you do not need to enable them: @@ -69,11 +69,11 @@ Code coverage employs several inspections that are already included in the `qoda | [](qodana-go.md) | [`GoCoverageInspection`](https://www.jetbrains.com/help/inspectopedia/GoCoverageInspection.html) | | [](qodana-dotnet.md) | `NetCoverageInspection` | -Once the inspection is complete, reports are available in [%product% reports](html-report.md) and JetBrains IDEs. +Once the inspection is complete, reports are available in [%instance% reports](html-report.md) and JetBrains IDEs. ### Code coverage calculation -%product% calculates a code coverage based on the number of code lines containing logic with function, method, and class statements +%instance% calculates a code coverage based on the number of code lines containing logic with function, method, and class statements being ignored. Here is the snippet containing comments on how it works: ```javascript @@ -91,8 +91,8 @@ module.exports = divide; // Analyzed by the code coverage should have the relative paths inside the project. For example, if your codebase files are contained in the `/src/` directory, then file paths in code coverage reports should be `src/`. -2. If you run %product% [locally](Quick-start.xml), use your code coverage tool to generate a code coverage report. -Save the report to the directory where %product% can read it. If you run %product% in your [GitHub](github.md) pipeline, configure the workflow as shown in the [](#run-code-coverage) section. +2. If you run %instance% [locally](Quick-start.topic), use your code coverage tool to generate a code coverage report. +Save the report to the directory where %instance% can read it. If you run %instance% in your [GitHub](github.md) pipeline, configure the workflow as shown in the [](#run-code-coverage) section. For the [](qodana-dotnet.md) linter, configure coverlet.msbuild for the test project. @@ -100,7 +100,7 @@ For the [](qodana-dotnet.md) linter, configure -You can run %product% over a single test coverage report generated by a single code coverage tool at a time. +You can run %instance% over a single test coverage report generated by a single code coverage tool at a time. @@ -118,20 +118,20 @@ To learn about running code coverage using the [](qodana-dotnet.md) linter, skip Qodana CLI command samples:

    - + docker run \ -v $(pwd):/data/project/ \ -v /directory/with/coverage/report/:/data/coverage \ -e QODANA_TOKEN="<qodana-cloud-token>" \ jetbrains/qodana-<linter> - + - + qodana scan \ -v /directory/with/coverage/report/:/data/coverage \ -e QODANA_TOKEN="<qodana-cloud-token>" - + @@ -196,7 +196,7 @@ jobs:

    Create a GitLab CI/CD pipeline that will store all code coverage output files in the <project-root-dir>/coverage directory:

    - + qodana: image: name: jetbrains/qodana-<linter> @@ -218,10 +218,10 @@ directory:

    paths: - .qodana/results/report expose_as: 'Qodana report' -
    +

    This uses the QODANA_TOKEN variable to contain the project token. - The --coverage-dir=$CI_PROJECT_DIR/coverage in the script block runs %product% with the + The --coverage-dir=$CI_PROJECT_DIR/coverage in the script block runs %instance% with the code coverage directory.

    @@ -243,7 +243,7 @@ bootstrap: dotnet build, cd && \\ Here, the `dotnet` option configures the solution file. -The [`bootstrap`](before-running-qodana.md) command performs several steps before running %product% and explained in the table: +The [`bootstrap`](before-running-qodana.md) command performs several steps before running %instance% and explained in the table: | Command step | Description | |-----------------------------------------------------------------|-----------------------------------------------------------------------------------------------| @@ -259,9 +259,9 @@ Code coverage inspection results for the [](qodana-dotnet.md) linter are availab ### Fresh code -Fresh code is the code contained in a GitHub pull request. %product% can calculate fresh code coverage and display the results. +Fresh code is the code contained in a GitHub pull request. %instance% can calculate fresh code coverage and display the results. -While working with fresh code, %product% cannot analyze coverage issues for missing coverage in methods, classes, and files. +While working with fresh code, %instance% cannot analyze coverage issues for missing coverage in methods, classes, and files. To enable the fresh code feature, in your [GitHub](github.md) workflow configure the PR-mode. Here is the sample for inspecting the JavaScript fresh code: @@ -321,7 +321,7 @@ code coverage reports in [Qodana Cloud](#Qodana+Cloud) or using your [IDE](#IDE) ### Qodana Cloud -You can find code coverage statistics in the upper-right corner of the [%product% report](html-report.md) UI. It also +You can find code coverage statistics in the upper-right corner of the [%instance% report](html-report.md) UI. It also enumerates the inspections that were employed by the feature. Code coverage in Qodana Cloud @@ -338,15 +338,15 @@ Coverage Agent and JaCoCo, and LCOV-formatted reports generated by coverlet.msbu -

    In your IDE, navigate to Tools | Qodana | Log in to Qodana.

    +

    In your IDE, navigate to Tools | Qodana | Log in to Qodana.

    The Log in to Qodana Cloud menu
    -

    In the Settings dialog, click Log in.

    +

    In the Settings dialog, click Log in.

    The Settings window

    This will redirect you to the authentication page.

    -

    In the Settings dialog, search for the project you would like to link with.

    +

    In the Settings dialog, search for the project you would like to link with.

    Linking with the project
    @@ -355,12 +355,12 @@ Coverage Agent and JaCoCo, and LCOV-formatted reports generated by coverlet.msbu You can view locally-based code coverage reports directly in JetBrains IDEs. -In your IDE, navigate to Run | Show coverage data and open the file containing a code coverage +In your IDE, navigate to Run | Show coverage data and open the file containing a code coverage report. The Choose Coverage Suite to Display dialog -In the Coverage tool window, you can view the test coverage report. This report shows the +In the Coverage tool window, you can view the test coverage report. This report shows the percentage of the code that has been executed or covered by tests. The Coverage tool window diff --git a/topics/code-inspections.xml b/topics/code-inspections.topic similarity index 72% rename from topics/code-inspections.xml rename to topics/code-inspections.topic index 8c99fa48..bc3e49df 100644 --- a/topics/code-inspections.xml +++ b/topics/code-inspections.topic @@ -1,17 +1,17 @@ - - + + - +

    Each inspection is a set of conditions to check code, detect and correct abnormal fragments in it. Qodana inspections can find and highlight various problems, locate dead code, find probable bugs, spelling problems, and thus facilitate improving the overall code structure. Using inspections, Qodana implements its - static analysis mechanism. You can visit the + static analysis mechanism. You can visit the Inspectopedia website and learn more about the - inspections used by %product%. + inspections used by %instance%.

    All inspections are highly configurable, so you can configure:

    diff --git a/topics/components.topic b/topics/components.topic new file mode 100644 index 00000000..b493e847 --- /dev/null +++ b/topics/components.topic @@ -0,0 +1,20 @@ + + + + + +

    This section introduces the concepts that %instance% is based upon, such as:

    + + +
  • Static analysis
  • +
  • Code inspections
  • +
  • Linters
  • +
  • Project tokens for identification and verification purposes
  • +
  • Contributor counting mechanism
  • +
  • for discovering %instance% inspections
  • +
    + +
    diff --git a/topics/components.xml b/topics/components.xml deleted file mode 100644 index 17574991..00000000 --- a/topics/components.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - -

    This section introduces the concepts that %product% is based upon, such as:

    - - -
  • Static analysis
  • -
  • Code inspections
  • -
  • Linters
  • -
  • Project tokens for identification and verification purposes
  • -
  • Contributor counting mechanism
  • -
  • for discovering %product% inspections
  • - - -
    diff --git a/topics/configure-jdk.md b/topics/configure-jdk.md index c2024bb0..49cb98ae 100644 --- a/topics/configure-jdk.md +++ b/topics/configure-jdk.md @@ -2,7 +2,7 @@ ## Default versions -This table shows the JDK versions that are by default used by %product%: +This table shows the JDK versions that are by default used by %instance%: |---------|-----------| |[Linter](linters.md) | JDK version | @@ -16,36 +16,36 @@ Using the default version of the JDK does not require any special configuration. -Apart from the versions available [by default](#Default+versions), %product% can automatically download and use these versions of JBR SDK +Apart from the versions available [by default](#Default+versions), %instance% can automatically download and use these versions of JBR SDK for all JVM linters: 8, 11, 13, 15, 16, 17, 18, 19. -Otherwise, you can download the required JDK version, and [mount it](#Mount+JDK) to %product%. +Otherwise, you can download the required JDK version, and [mount it](#Mount+JDK) to %instance%. ## Configure Qodana - + If you specify here any JDK from the [list of available versions](#Available+versions), it will be automatically -downloaded by %product%. If you would like to use the JDK beyond this list, you will have to download it and then -[mount it](#Mount+JDK) to %product%. +downloaded by %instance%. If you would like to use the JDK beyond this list, you will have to download it and then +[mount it](#Mount+JDK) to %instance%. ## Gradle Gradle runs scripts based on the [Compatibility Matrix](https://docs.gradle.org/current/userguide/compatibility.html) meaning that the latest supported and downloadable version of the JDK will be set up as the Gradle JDK. Using the Compatibility Matrix in combination with the list of [available JDK versions](#Available+versions), -you can find the JDK that will be used by %product%. For example, in case of Gradle 6.6, %product% will +you can find the JDK that will be used by %instance%. For example, in case of Gradle 6.6, %instance% will download and employ JDK 13. ## Maven -In Maven, you can configure the [source and target](https://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html) versions of the Java compiler. %product% compares these values and selects the latest version. This version of the JDK is -then searched in the [list of available versions](#Available+versions). If found, %product% will download and use it. -Otherwise, %product% will download the subsequent version from this list. +In Maven, you can configure the [source and target](https://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html) versions of the Java compiler. %instance% compares these values and selects the latest version. This version of the JDK is +then searched in the [list of available versions](#Available+versions). If found, %instance% will download and use it. +Otherwise, %instance% will download the subsequent version from this list. ## Mount JDK -You can mount JDK from your local filesystem to the `/root/.jdks` folder of the %product% Docker image: +You can mount JDK from your local filesystem to the `/root/.jdks` folder of the %instance% Docker image: ```shell $ docker run -v /path/to/jdk:/root/.jdks/jdk \ diff --git a/topics/configure-qodana.topic b/topics/configure-qodana.topic new file mode 100644 index 00000000..bbbc0469 --- /dev/null +++ b/topics/configure-qodana.topic @@ -0,0 +1,19 @@ + + + + + +

    This section explains how you can configure %instance% for your needs.

    + +

    You have the following methods for configuring %instance%:

    + + +
  • contained in the root directory of your project
  • +
  • Default and custom profiles to tailor %instance% to your needs
  • +
  • Shell commands suitable for running %instance% using Docker or Qodana CLI
  • +
  • is explained for several popular CI/CD systems
  • + +
    diff --git a/topics/configure-qodana.xml b/topics/configure-qodana.xml deleted file mode 100644 index 625f8c47..00000000 --- a/topics/configure-qodana.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - -

    This section explains how you can configure %product% for your needs.

    - -

    You have the following methods for configuring %product%:

    - - -
  • contained in the root directory of your project
  • -
  • Default and custom profiles to tailor %product% to your needs
  • -
  • Shell commands suitable for running %product% using Docker or Qodana CLI
  • -
  • is explained for several popular CI/CD systems
  • - -
    diff --git a/topics/contributors.md b/topics/contributors.md index de49005f..54ad8874 100644 --- a/topics/contributors.md +++ b/topics/contributors.md @@ -1,8 +1,8 @@ [//]: # (title: Contributor counting) -%product% license costs are comprised of the number of active contributors to your project. An active contributor is a +%instance% license costs are comprised of the number of active contributors to your project. An active contributor is a person/bot who has committed to any number of Qodana Cloud projects within the past 90 days under a single -%product% license. For example, on the 30th of June, %product% will calculate and charge for the unique contributors +%instance% license. For example, on the 30th of June, %instance% will calculate and charge for the unique contributors detected within 30 days of June, 31 days of May, and 29 days of March. Active contributors are counted using SSH keys. The mechanism of key generation and contributor counting @@ -26,7 +26,7 @@ Each key pair can be: ## Contributor counting -After you save the generated key in your VCS, %product% will use the following command to clone the project metadata +After you save the generated key in your VCS, %instance% will use the following command to clone the project metadata of your repository: ```shell @@ -34,7 +34,7 @@ git clone -n --filter=blob:none --shallow-since='90 days ago' ``` {prompt="$"} -After cloning, %product% will extract the contributors from all commits made for the last 90 days: +After cloning, %instance% will extract the contributors from all commits made for the last 90 days: ```shell git log --since '90 days ago' --pretty=format:%ae||%an||%H||%ai diff --git a/topics/custom-profiles.md b/topics/custom-profiles.md index a3ec0cb4..1a9a98bb 100644 --- a/topics/custom-profiles.md +++ b/topics/custom-profiles.md @@ -8,14 +8,14 @@ -Starting from version 2023.2, you can create and configure %product% profiles using YAML. %product% also provides +Starting from version 2023.2, you can create and configure %instance% profiles using YAML. %instance% also provides several improvements related to profile configuration, such as: * Support for file paths and [scopes](%idea-scopes%) * Support for inspection parameters * Profile relationship, so profiles can be extended and included -This sample shows how you can fine-tune %product% for your needs. +This sample shows how you can fine-tune %instance% for your needs. ```yaml name: "My custom profile" # Profile name @@ -69,16 +69,16 @@ can accept the following values: | `Default` | The [default profile](#custom-profiles-default-profile-tip) taken from the JetBrains IDE | | `Project Default` | The profile is basically similar to `Default`, but contains user changes stored in the `.idea/inspectionProfiles/Project_Default.xml` file | | `Custom profile name` | Any name of an XML or YAML profile contained in the `.idea/inspectionProfiles` directory | -| `qodana.starter` | The [default](inspection-profiles.md#Default+profiles) %product% profile, a subset of the `qodana.recommended` profile | -| `qodana.recommended` | The [default](inspection-profiles.md#Default+profiles) %product% profile implementing the default profiles of JetBrains IDEs | +| `qodana.starter` | The [default](inspection-profiles.md#Default+profiles) %instance% profile, a subset of the `qodana.recommended` profile | +| `qodana.recommended` | The [default](inspection-profiles.md#Default+profiles) %instance% profile implementing the default profiles of JetBrains IDEs | | `empty` | Severities and parameters of inspections are taken from `Project Default`, but none of the inspections are included. Using `empty`, you can you can build your profile [from scratch](#Create+a+profile+from+scratch) | -If this parameter is missing, %product% will employ the `Project Default` profile, so all settings applied in your custom +If this parameter is missing, %instance% will employ the `Project Default` profile, so all settings applied in your custom profile will override such settings contained in `Project Default`. {id="custom-profiles-default-profile-tip"} -You can overview the default IDE profile by navigating to Settings | Editor | Inspections. +You can overview the default IDE profile by navigating to Settings | Editor | Inspections. ## name @@ -164,13 +164,13 @@ Here, `groups` lists several values: | `category:Java/Probable bugs` | Name of the inspection category in the `category:categoryname` notation, matches the name from the **Editor | Settings | Inspections** section of the JetBrains IDE | | `IncludedInspections` | Name of the existing user-defined group, or a group from an included profile | | `!ExcludedInspections` | Negate the existing `ExcludedInspections` inspection group, either user-defined or included from another profile | -| `severity:WEAK WARNING` | Include or exclude inspections by a certain [severity](#profile-severity-levels) level. Because the severity value is taken from the `Default` [profile](#baseProfile), %product% is not aware of the changes made in your profile | +| `severity:WEAK WARNING` | Include or exclude inspections by a certain [severity](#profile-severity-levels) level. Because the severity value is taken from the `Default` [profile](#baseProfile), %instance% is not aware of the changes made in your profile | {id="profile-severity-levels"} -By default, %product% uses severity levels inherited from the JetBrains IDEs shown in this table: +By default, %instance% uses severity levels inherited from the JetBrains IDEs shown in this table: - + ## inspections {id="inspections-group"} @@ -263,7 +263,7 @@ inspections: enabled: false ``` -In this case, the effective profile configuration read by %product% will look like this: +In this case, the effective profile configuration read by %instance% will look like this: ```yaml inspections: diff --git a/topics/custom-xml-profiles.md b/topics/custom-xml-profiles.md index 9cc4af91..27f26712 100644 --- a/topics/custom-xml-profiles.md +++ b/topics/custom-xml-profiles.md @@ -5,7 +5,7 @@ on the [Configure profiles](https://www.jetbrains.com/help/idea/customizing-prof profile, you can [export](https://www.jetbrains.com/help/idea/customizing-profiles.html#export-and-import-a-profile) it to file. -To run %product% with the custom profile, you can follow the recommendations from the +To run %instance% with the custom profile, you can follow the recommendations from the [Set up a profile](inspection-profiles.md#Set+up+a+profile) section. In this case, the profile name does not necessarily match the name of the containing file. The actual name is stored as the `%\profileName%` value in the profile file. diff --git a/topics/deploy-qodana.topic b/topics/deploy-qodana.topic new file mode 100644 index 00000000..8b96f22c --- /dev/null +++ b/topics/deploy-qodana.topic @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/topics/deploy-qodana.xml b/topics/deploy-qodana.xml deleted file mode 100644 index 4643eadd..00000000 --- a/topics/deploy-qodana.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - diff --git a/topics/docker-image-configuration.xml b/topics/docker-image-configuration.topic similarity index 87% rename from topics/docker-image-configuration.xml rename to topics/docker-image-configuration.topic index e8729ec8..d4841c6e 100644 --- a/topics/docker-image-configuration.xml +++ b/topics/docker-image-configuration.topic @@ -1,24 +1,24 @@ - - + + - +

    This section explains how you can configure the Docker images of - %product% and the Qodana CLI tool. You can use both tools - locally and in CI/CD pipelines. Several options are available + %instance% and the Qodana CLI tool. You can use both tools + locally and in CI/CD pipelines. Several options are available in Qodana CLI only.

    In several cases, you can configure them using the qodana.yaml file, which is also mentioned in this section.

    -

    Starting from version 2022.3 of %product%, the +

    Starting from version 2022.3 of %instance%, the Ultimate and Ultimate Plus linters require the QODANA_TOKEN variable to refer to the project token. If you run the - Community linters of %product%, using QODANA_TOKEN is - necessary only if you wish to view %product% reports in Qodana Cloud.

    + Community linters of %instance%, using QODANA_TOKEN is + necessary only if you wish to view %instance% reports in Qodana Cloud.

    @@ -42,7 +42,7 @@
    - +
    Image name
    Windows%LOCALAPPDATA%\%LOCALAPPDATA%\
    @@ -71,7 +71,7 @@ /data/results - Directory to store the analysis results. It should be empty before running %product% + Directory to store the analysis results. It should be empty before running %instance% /opt/idea @@ -117,25 +117,25 @@ -

    By default, %product% employs the qodana.starter profile, but you can +

    By default, %instance% employs the qodana.starter profile, but you can bind and use your own profile instead:

    - + docker run \ -v $(pwd):/data/project/ \ -v $(pwd)/<profile-file>:/data/profile.xml \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> - + - + qodana scan \ -v $(pwd)/<profile-file>:/data/profile.xml \ -e QODANA_TOKEN="<cloud-project-token>" - + @@ -151,20 +151,20 @@ - + docker run \ -v $(pwd):/data/project/ \ -v $(pwd)/gradle.properties:/data/cache/gradle/gradle.properties \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> - + - + qodana scan \ -v $(pwd)/gradle.properties:/data/cache/gradle/gradle.properties \ -e QODANA_TOKEN="<cloud-project-token>" - + @@ -179,12 +179,12 @@ For example, this Shell script will download the Twig plugin:

    - + IDE_CODE=PS PLUGIN_ID="com.jetbrains.twig" BUILD_ID="231.7515" curl -L -o "$PLUGIN_ID".zip "https://plugins.jetbrains.com/pluginManager?action=download&id=$PLUGIN_ID&build=$IDE_CODE-$BUILD_ID" && unzip "$PLUGIN_ID".zip - +

    This script contains several variables explained in the table below.

    @@ -217,30 +217,30 @@ BUILD_ID - Build ID of %product% available in %product% logs + Build ID of %instance% available in %instance% logs Starting up Qodana for PHP 2023.2 EAP (build QDPHP-231.7515) -

    You can run %product% with the plugin file mounted to the +

    You can run %instance% with the plugin file mounted to the plugin directory:

    - + docker run \ -v $(pwd):/data/project/ \ -v <path-to-plugin>/<plugin-name>:/opt/idea/plugins/<plugin-name> \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> - + - + qodana scan \ -v <path-to-plugin>/<plugin-name>:/opt/idea/plugins/<plugin-name> \ -e QODANA_TOKEN="<cloud-project-token>" - + @@ -256,13 +256,13 @@

    You can mount the $(pwd)/.qodana/results/ directory to the /data/results directory of the Docker image:

    - + docker run \ -v $(pwd):/data/project/ \ -v $(pwd)/.qodana/results/:/data/results \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> - +

    Once the Qodana run is complete, you can view log files in the $(pwd)/.qodana/results/ directory.

    @@ -290,12 +290,12 @@ Example - Requires the equal sign (=) between the option name and its argument + Requires the equal sign (=) between the option name and its argument --property=idea.log.config.file=info.xml - Requires the space character ( ) between the option name and its argument - --baseline /path/to/sarif/file + Requires the space character ( ) between the option name and its argument + --baseline /path/to/sarif/file Requires no argument @@ -307,7 +307,7 @@ - + docker run \ -p 8080:8080 \ -v $(pwd):/data/project/ \ @@ -316,16 +316,16 @@ --property=idea.log.config.file=info.xml \ --baseline <baseline-path> \ --show-report - + - + qodana scan \ -e QODANA_TOKEN="<cloud-project-token>" \ --property=idea.log.config.file=info.xml \ --baseline <baseline-path> \ --show-report - + @@ -333,14 +333,14 @@ - + docker run jetbrains/qodana-<linter> -h - + - + qodana scan -h - + @@ -355,19 +355,19 @@ - + - + @@ -388,7 +388,7 @@ @@ -405,7 +405,7 @@ option, and saves the generated report to the local filesystem using the --save-report option:

    - + docker run \ -v $(pwd):/data/project/ \ -v <html-report-directory>:/data/results/newreportdir/ \ @@ -413,7 +413,7 @@ jetbrains/qodana-<linter> \ --report-dir /data/results/newreportdir/ \ --save-report - +

    The generated report is saved to the local filesystem as per the -v <html-report-directory>:/data/results/newreportdir/ line in this command.

    @@ -426,10 +426,10 @@

    After the first run, Qodana CLI stores cache in the ./<userCacheDir>/JetBrains/<linter>/cache directory.

    -

    You can improve %product% performance by persisting cache between runs. For example, package and +

    You can improve %instance% performance by persisting cache between runs. For example, package and dependency management tools such as Maven, Gradle, npm, Yarn, and NuGet keep a local cache of downloaded dependencies.

    -

    By default, %product% save caches to the /data/cache directory inside a container. You can override +

    By default, %instance% save caches to the /data/cache directory inside a container. You can override this location using the --cache-dir option. This data is per-repository, so you can pass cache from branch-a to build checking branch-b. In this case, only new dependencies would be downloaded if they were added.

    @@ -437,33 +437,33 @@

    This command maps the local directory with the /data/cache directory of the Docker image, which saves cache to your local filesystem:

    - + docker run \ -v $(pwd):/data/project/ \ -v <local-cache-directory>:/data/cache/ \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> - +

    Using the --cache-dir option, you can override the cache directory:

    - + docker run \ -v $(pwd):/data/project/ \ -v <local-cache-directory>:/data/newcachedir/ \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> \ --cache-dir /data/newcachedir - + - + qodana scan \ -e QODANA_TOKEN="<cloud-project-token>" \ --cache-dir /opt/newcachedir - + @@ -480,9 +480,9 @@ -

    By default, %product% inspects your code using the qodana.starter profile.

    +

    By default, %instance% inspects your code using the qodana.starter profile.

    -

    You can configure and override %product% profiles either in the qodana.yaml +

    You can configure and override %instance% profiles either in the qodana.yaml file, or using the CLI options from this table.

    Option Default setting
    -i, --project-dir

    Root directory of the inspected project.

    -

    Files and directories contained in the outside directory are not used while running %product%

    +

    Files and directories contained in the outside directory are not used while running %instance%

    /data/project
    -o, --results-dirDirectory to save %product% inspection results toDirectory to save %instance% inspection results to /data/results

    Directory inside --project-dir. If missing, the whole project is inspected

    Files and directories contained in the outside directory like .git and - build.gradle are used by %product% while inspecting code

    + build.gradle are used by %instance% while inspecting code

    None
    @@ -498,8 +498,8 @@ - @@ -518,63 +518,63 @@ - +
    -n, --profile-name

    The profile name taken either from the list of predefined %product% profiles, or a custom profile name - stored in XML-formatted profile files as <option name="myName" value="%profileName%"/>.

    +

    The profile name taken either from the list of predefined %instance% profiles, or a custom profile name + stored in XML-formatted profile files as <option name="myName" value="%profileName%"/>.

    You can also configure this option using the qodana.yaml file

    Run promo inspections as a part of the qodana.starter profile

    This option is not available in the linter.
    Enabled only if %product% is configured for the qodana.starter profile, and the --run-promo true option is invokedEnabled only if %instance% is configured for the qodana.starter profile, and the --run-promo true option is invoked
    -

    The --profile-name option lets you run %product% using either +

    The --profile-name option lets you run %instance% using either the default profiles or the profile name from the custom profile.

    You can also configure this option using the qodana.yaml file. -

    This command lets you override the default profile und run %product% using the +

    This command lets you override the default profile und run %instance% using the qodana.recommended profile:

    - + docker run \ -v $(pwd):/data/project/ \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> \ --profile-name qodana.recommended - + - + qodana scan \ -e QODANA_TOKEN="<cloud-project-token>" \ --profile-name qodana.recommended - + -

    If you need to run %product% with a custom profile, you can use its actual +

    If you need to run %instance% with a custom profile, you can use its actual profile name.

    This command lets you bind a custom profile:

    - + docker run \ -v $(pwd):/data/project/ \ -v <path-to-profile-file>/<file-name>:/data/project/.idea/inspectionProfiles/<file-name> \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> \ --profile-name <profile-name-from-file> - + - + qodana scan \ -v <path-to-profile-file>/<file-name>:/data/project/.idea/inspectionProfiles/<file-name> \ -e QODANA_TOKEN="<cloud-project-token>" \ --profile-name <profile-name-from-file> - + @@ -587,26 +587,26 @@ You can also configure this option using the qodana.yaml file.

    This command lets you bind the file to the profile directory, - and the --profile-path option tells %product% which profile file to read:

    + and the --profile-path option tells %instance% which profile file to read:

    - + docker run \ -v $(pwd):/data/project/ \ -v <path-to-profile-file>/<file-name>:/data/project/myprofiles/<file-name> \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> \ --profile-path /data/project/myprofiles/<file-name> - + - + qodana scan \ -v <path-to-profile-file>/<file-name>:/data/project/myprofiles/<file-name> \ -e QODANA_TOKEN="<cloud-project-token>" \ --profile-path /data/project/myprofiles/<file-name> - + @@ -617,10 +617,10 @@ -

    In the baseline run mode, each new %product% run is compared to some initial run. This can help in +

    In the baseline run mode, each new %instance% run is compared to some initial run. This can help in situations when you have no possibility to fix old problems and rather want to prevent the appearance of new ones.

    -

    To use the baseline feature, first run %product%, and in the report UI select the problems that will be considered as baseline. +

    To use the baseline feature, first run %instance%, and in the report UI select the problems that will be considered as baseline. Finally, save the SARIF-formatted file containing the baseline problems.

    This is the list of baseline-related options:

    @@ -632,7 +632,7 @@ -b, --baseline - Run %product% in the baseline mode. Provide the path to an existing SARIF report to be used in the baseline state calculation + Run %instance% in the baseline mode. Provide the path to an existing SARIF report to be used in the baseline state calculation --baseline-include-absent @@ -644,27 +644,27 @@ - + docker run \ -v $(pwd):/data/project/ \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> \ --baseline <path-to-the-SARIF-file> \ --baseline-include-absent - + - + qodana scan \ -e QODANA_TOKEN="<cloud-project-token>" \ --baseline <path-to-the-SARIF-file> \ --baseline-include-absent - +

    Here, the <path-to-the-SARIF-file> is the path to a qodana.sarif.json file relative - to the project root and taken from a previous %product% run. If --baseline-include-absent + to the project root and taken from a previous %instance% run. If --baseline-include-absent is invoked, the inspection results will include absent problems or the problems detected only in the baseline run but not in the current run.

    @@ -680,23 +680,23 @@

    You can run the code coverage by mapping the directory containing code coverage files to - the /data/coverage directory of a %product% linter image:

    + the /data/coverage directory of a %instance% linter image:

    - + docker run \ -v /my/dir/with/coverage:/data/coverage \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> - + - + qodana scan \ -v /my/dir/with/coverage:/data/coverage \ -e QODANA_TOKEN="<cloud-project-token>" - +
    @@ -731,14 +731,14 @@

    The --save-report option in the Docker command lets you save the generated HTML report to your local filesystem:

    - + docker run \ -v $(pwd):/data/project/ \ -v <directory-to-save-report-to>:/data/results/report \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> \ --save-report - +
    @@ -749,22 +749,22 @@ - + docker run \ -p 4040:8080 \ -v $(pwd):/data/project/ \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> \ --show-report - + - + qodana scan \ -e QODANA_TOKEN="<cloud-project-token>" \ --port 4040 \ --show-report - +

    Alternatively, in the project root you can run the qodana show command.

    @@ -776,7 +776,7 @@ -

    %product% lets you configure a quality gate or the number of problems that +

    %instance% lets you configure a quality gate or the number of problems that will act as a threshold. Once the threshold is exceeded, the inspection run is terminated.

    You can specify the threshold as explained in the @@ -793,28 +793,28 @@ -

    Here is the command that tells %product% to fail the build in case the number of problems exceeds 10:

    +

    Here is the command that tells %instance% to fail the build in case the number of problems exceeds 10:

    - + docker run \ -v $(pwd):/data/project/ \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> \ --fail-threshold 10 - + - + qodana scan \ -e QODANA_TOKEN="<cloud-project-token>" \ --fail-threshold 10 - + -

    If you run %product% with the baseline mode enabled, a +

    If you run %instance% with the baseline mode enabled, a threshold is calculated as the sum of new and absent problems. The unchanged results are ignored.

    @@ -824,20 +824,20 @@

    To apply quick-fix strategies to your codebase, you can invoke the --fixes-strategy option.

    - + docker run \ -v <source-directory>/:/data/project/ \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> \ --fixes-strategy <cleanup/apply> - + - + qodana scan \ -e QODANA_TOKEN="<cloud-project-token>" \ <--apply-fixes/--cleanup> - + @@ -845,7 +845,7 @@ -

    Using the --property= option, you can override various %product% parameters:

    +

    Using the --property= option, you can override various %instance% parameters:

  • Logging messages to STDOUT
  • @@ -861,7 +861,7 @@ --property=

    Set a JVM property using this notation:

    - --property=property.name=value1,...,valueN + --property=property.name=value1,...,valueN

    This option can be repeated multiple times for setting multiple JVM properties.

    @@ -878,20 +878,20 @@ - + docker run \ -v $(pwd):/data/project/ \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> \ --property=idea.log.config.file=info.xml - + - + qodana scan \ -e QODANA_TOKEN="<cloud-project-token>" \ --property=idea.log.config.file=info.xml - + @@ -905,20 +905,20 @@ - + docker run \ -v $(pwd):/data/project/ \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> \ --property=idea.headless.enable.statistics=false - + - + qodana scan \ -e QODANA_TOKEN="<cloud-project-token>" \ --property=idea.headless.enable.statistics=false - + @@ -933,22 +933,22 @@ - + docker run \ -v $(pwd):/data/project/ \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> \ --property=idea.required.plugins.id=JavaScript,org.intellij.grails \ --property=idea.suppressed.plugins.id=com.intellij.spring.security - + - + qodana scan \ -e QODANA_TOKEN="<cloud-project-token>" \ --property=idea.required.plugins.id=JavaScript,org.intellij.grails \ --property=idea.suppressed.plugins.id=com.intellij.spring.security - + @@ -974,24 +974,24 @@ -

    %product% lets you check only locally-modified files using this command:

    +

    %instance% lets you check only locally-modified files using this command:

    - + docker run \ -v $(pwd):/data/project/ \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> \ --changes - + - + qodana scan \ -e QODANA_TOKEN="<cloud-project-token>" \ --changes - + @@ -1015,57 +1015,57 @@ You can also configure this option using the qodana.yaml file. -

    Currently, %product% supports several run scenarios.

    +

    Currently, %instance% supports several run scenarios.

    Application of the default run scenario is equivalent to running this command:

    - + docker run \ -v $(pwd):/data/project/ \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> \ --script default - + - + qodana scan \ -e QODANA_TOKEN="<cloud-project-token>" \ --script default - +

    To inspect local uncommitted changes, you can use local-changes value:

    - + docker run \ -v $(pwd):/data/project/ \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> \ --script local-changes - + -

    To run the PHP version migration scenario, you can run this command:

    +

    To run the PHP version migration scenario, you can run this command:

    - + docker run \ -v $(pwd):/data/project/ \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> \ --script php-migration:<old-php-version>−to−<upgraded-php-version> - + - + qodana scan \ -e QODANA_TOKEN="<cloud-project-token>" \ --script php-migration:<old-php-version>−to−<upgraded-php-version> - + @@ -1076,7 +1076,7 @@

    To forward reports to Qodana Cloud, you can set the list of Docker environments as explained in the - section.

    + section.

    @@ -1087,8 +1087,8 @@
  • Change the Heap size
  • Override the idea.properties file
  • -
  • Run %product% as non-root
  • -
  • Forward %product% reports to Qodana Cloud
  • +
  • Run %instance% as non-root
  • +
  • Forward %instance% reports to Qodana Cloud
  • @@ -1098,20 +1098,20 @@ - + docker run \ -v $(pwd):/data/project/ \ -e _JAVA_OPTIONS=-Xmx6g \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> - + - + qodana scan \ -e _JAVA_OPTIONS=-Xmx6g \ -e QODANA_TOKEN="<cloud-project-token>" - + @@ -1131,20 +1131,20 @@ - + docker run \ -v $(pwd):/data/project/ \ -e IDEA_PROPERTIES=/data/project/idea.properties \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> - + - + qodana scan \ -e IDEA_PROPERTIES=/data/project/idea.properties \ -e QODANA_TOKEN="<cloud-project-token>" - + @@ -1153,40 +1153,40 @@ - TeamCity and
    Qodana CLI already run %product% + TeamCity and Qodana CLI already run %instance% under a current non-root user. -

    By default, a container runs under the root user so that %product% can read project information +

    By default, a container runs under the root user so that %instance% can read project information and write inspection results. Therefore, all files in the results/ directory are owned by the root user after the run.

    To overcome this, you can run the container as a regular user:

    - + docker run \ -u $(id -u):$(id -g) \ -v $(pwd):/data/project/ \ -v <results-directory>:/data/results/ \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> - +

    In this case, the results/ directory on host should already be created and owned by you. - Otherwise, Docker will create it as the root user, and %product% will not be able to write + Otherwise, Docker will create it as the root user, and %instance% will not be able to write to it.

    -

    You can forward %product% reports to Qodana Cloud by specifying the QODANA_TOKEN variable - that will contain the Qodana Cloud project token.

    +

    You can forward %instance% reports to Qodana Cloud by specifying the QODANA_TOKEN variable + that will contain the Qodana Cloud project token.

    Using Docker also requires a bunch of variables described in the - Forward reports section.

    - + Forward reports section.

    + docker run \ -v $(pwd):/data/project/ \ -e QODANA_TOKEN="<qodana-cloud-token>" \ @@ -1195,13 +1195,13 @@ -e QODANA_REVISION="<commit-hash>" \ -e QODANA_JOB_URL="<job-url>" \ jetbrains/qodana-<linter> -
    +
    - + qodana scan \ -e QODANA_TOKEN="<qodana-cloud-token>" - +
    @@ -1752,7 +1752,7 @@
    -

    %product% checks the configuration parameters for resolving the inspection profile in this order:

    +

    %instance% checks the configuration parameters for resolving the inspection profile in this order:

  • Profile with the name %\name% from the command-line option --profile-name %\name%
  • diff --git a/topics/docker-images.md b/topics/docker-images.md index 5314fc6a..47f87e37 100644 --- a/topics/docker-images.md +++ b/topics/docker-images.md @@ -3,13 +3,13 @@ Basically, names of Docker images are similar to the names of linters. The following Docker images are provided for [Qodana linters](linters.md): -- [](qodana-jvm-docker-readme.xml) -- [](qodana-jvm-community-docker-readme.xml) -- [](qodana-jvm-android-docker-readme.xml) -- [](qodana-php-docker-readme.xml) -- [](qodana-python-docker-readme.xml) -- [](qodana-python-community-docker-readme.xml) -- [](qodana-js-docker-readme.xml) -- [](qodana-go-docker-readme.xml) -- [](qodana-dotnet-docker-readme.xml) -- [](qodana-cdnet-docker-readme.xml) +- [](qodana-jvm-docker-readme.topic) +- [](qodana-jvm-community-docker-readme.topic) +- [](qodana-jvm-android-docker-readme.topic) +- [](qodana-php-docker-readme.topic) +- [](qodana-python-docker-readme.topic) +- [](qodana-python-community-docker-readme.topic) +- [](qodana-js-docker-readme.topic) +- [](qodana-go-docker-readme.topic) +- [](qodana-dotnet-docker-readme.topic) +- [](qodana-cdnet-docker-readme.topic) diff --git a/topics/extending-qodana-plugins.xml b/topics/extending-qodana-plugins.topic similarity index 83% rename from topics/extending-qodana-plugins.xml rename to topics/extending-qodana-plugins.topic index 7c789af5..f8535fc1 100644 --- a/topics/extending-qodana-plugins.xml +++ b/topics/extending-qodana-plugins.topic @@ -1,10 +1,10 @@ - - + + - + @@ -16,7 +16,7 @@ -

    You can extend %product% using either existing plugins from repositories, or by developing +

    You can extend %instance% using either existing plugins from repositories, or by developing your own plugins.

    @@ -32,18 +32,18 @@ plugin option of the qodana.yaml file:

    - + plugins:   - id: <plugin.id> - +

    Here, <plugin-id> denotes the Plugin ID from JetBrains Marketplace. For example, for Grazie Professional the Plugin ID value will be com.intellij.grazie.pro. To find the ID of a specific plugin, on the plugin page of JetBrains Marketplace click the - Overview tab, and then navigate to the - Additional Information section.

    + Overview tab, and then navigate to the + Additional Information section.

    Alternatively, you need to prepare the following files:

    @@ -56,7 +56,7 @@

    Here is how you can obtain these files:

    - +

    Install the plugin using any of the installation method available. For any installation method chosen, you need to know the path to the plugin file after it has been installed. If you @@ -65,34 +65,34 @@ Plugins directory section for reference. If you download the PhpInspectionsEA.jar plugin file from JetBrains Marketplace, save it to a directory accessible - by %product%.

    + by %instance%.

    The ea_extended.xml plugin configuration file is located in the options subdirectory of the IDE config directory. You can save this file to - any directory accessible by %product%. + any directory accessible by %instance%.

    Navigate to the Inspections dialog of your IDE, expand - the PHP | Php Inspections (EA Extended) entry, check the inspections you + the PHP | Php Inspections (EA Extended) entry, check the inspections you would like to employ, and export the inspection profile in the project root folder under the qodana-inspection-profile.xml filename.

    - +

    In the project root directory, create the qodana.yaml file and specify the path to the profile location in it:

    - + profile: path: ./qodana-inspection-profile.xml - +
    - -

    Use this snippet for running %product% locally:

    - + +

    Use this snippet for running %instance% locally:

    + docker run \ -p 8080:8080 \ -v <project-directory>:/data/project/ \ @@ -101,7 +101,7 @@ -v <path-to-plugin-file>/PhpInspectionsEA.jar:/opt/idea/plugins/PhpInspectionsEA.jar \ -v <path-to-plugin-config>/ea_extended.xml:/root/.config/idea/options/ea_extended.xml \ jetbrains/qodana-php --show-report -
    +
    diff --git a/topics/extending-qodana-structural-search.xml b/topics/extending-qodana-structural-search.topic similarity index 73% rename from topics/extending-qodana-structural-search.xml rename to topics/extending-qodana-structural-search.topic index 8cc5887e..a20a737f 100644 --- a/topics/extending-qodana-structural-search.xml +++ b/topics/extending-qodana-structural-search.topic @@ -1,10 +1,10 @@ - - + + - + @@ -13,12 +13,12 @@ powerful and flexible mechanism built into JetBrains IDEs. It employs search templates to let you inspect the codebase taking into account its semantics. You can create your own search templates and use them as - %product% inspections.

    + %instance% inspections.

    As an example, consider this search template:

    - $Instance$.$MethodCall$($Parameter$) + $Instance$.$MethodCall$($Parameter$)

    It lets you detect the System.out.println() Java statement. To make it detect the statements with hardcoded text like System.out.println("Hardcoded text!"), the @@ -30,12 +30,12 @@ $Parameter$text=^\".*\"$Any text enclosed in quote characters. -

    This procedure explains how to use this search template for inspecting your codebase using %product%.

    +

    This procedure explains how to use this search template for inspecting your codebase using %instance%.

    Using the - Structural Search dialog of + Structural Search dialog of IntelliJ IDEA, create the template:

    Search template
    @@ -43,39 +43,39 @@

    Convert the template to inspection as described on the Work with structural search and replace page of the IntelliJ IDEA documentation portal. For example, it can be saved as - Hardcoded-print.

    + Hardcoded-print.

    -

    Use Settings | Editor | Inspections to enable the inspection in the - Structural search group of inspections. For more details, see +

    Use Settings | Editor | Inspections to enable the inspection in the + Structural search group of inspections. For more details, see the Configure profiles page.

    Enabling inspection
    -

    In the Inspections section of the Settings dialog, export the +

    In the Inspections section of the Settings dialog, export the updated profile.

    In the project root directory, create the qodana.yaml file and specify the path to the profile location in it:

    - + profile: path: path/to/the/profile/file - +
    -

    Inspect your code using %product%:

    - +

    Inspect your code using %instance%:

    + docker run --rm -p 8080:8080 \ -v <project-directory>:/data/project/ \ -v <report-directory>:/data/results/ \ jetbrains/qodana-jvm --show-report -
    +

    You can observe the problems detected by the structural search inspection under the - Structural search category in the %product% report.

    + Structural search category in the %instance% report.

    Observing the Structural Search inspection results
    diff --git a/topics/extending-qodana.topic b/topics/extending-qodana.topic new file mode 100644 index 00000000..b3defa36 --- /dev/null +++ b/topics/extending-qodana.topic @@ -0,0 +1,19 @@ + + + + + +

    Basically, %instance% provides several linters supporting a variety of + technologies, and inspection profiles let you additionally customize each linter to + fit your needs using the default inspection base. Still, it may be useful to analyze your codebase using + third-party inspection tools that are not covered by standard %instance% packages, and you can do it in several + ways:

    + +
  • Using plugins
  • +
  • Using structural search patterns
  • +
    + +
    diff --git a/topics/extending-qodana.xml b/topics/extending-qodana.xml deleted file mode 100644 index b3145b90..00000000 --- a/topics/extending-qodana.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - -

    Basically, %product% provides several linters supporting a variety of - technologies, and inspection profiles let you additionally customize each linter to - fit your needs using the default inspection base. Still, it may be useful to analyze your codebase using - third-party inspection tools that are not covered by standard %product% packages, and you can do it in several - ways:

    - -
  • Using plugins
  • -
  • Using structural search patterns
  • -
    - -
    diff --git a/topics/faq.xml b/topics/faq.topic similarity index 75% rename from topics/faq.xml rename to topics/faq.topic index a82f32e3..6f1a824a 100644 --- a/topics/faq.xml +++ b/topics/faq.topic @@ -1,43 +1,43 @@ - - + + - +

    Here is a collection of answers to questions that will help you better understand basic Qodana concepts.

    - -

    Depending on your needs, you can run %product% using:

    + +

    Depending on your needs, you can run %instance% using:

  • CI pipelines
  • JetBrains IDEs, the - %product% CLI tool, or available + %instance% CLI tool, or available Docker images
  • Native mode available for the linter
  • - -

    Any %product% linter is a Linux Docker image, so any CI/CD platform that supports Docker should be able to run + +

    Any %instance% linter is a Linux Docker image, so any CI/CD platform that supports Docker should be able to run it. We’re working on extending our documentation to provide the best examples of how to - integrate %product% with different CI/CD platforms. If you are experiencing any difficulties, please contact our + integrate %instance% with different CI/CD platforms. If you are experiencing any difficulties, please contact our support at qodana-support@jetbrains.com.

    - -

    The on-premises version of %product% is currently under development, and we plan to release it in 2024. To - register your interest in this solution, you can contact the %product% team.

    -

    You can also run %product% under the Community license, which doesn’t require you to create a %product% + +

    The on-premises version of %instance% is currently under development, and we plan to release it in 2024. To + register your interest in this solution, you can contact the %instance% team.

    +

    You can also run %instance% under the Community license, which doesn’t require you to create a %instance% Cloud account. However, this option provides limited functionalities.

    - -

    The list of technologies already supported by %product% is available on the page.

    + +

    The list of technologies already supported by %instance% is available on the page.

    Qodana will eventually cover all technologies supported by JetBrains IDEs. You can create an issue on our tracker or vote for an existing one to let us know what technology we should focus on, for example:

    @@ -47,27 +47,27 @@
    - +

    In a JetBrains Account (JBA), you can create several Companies.

    -

    Each created JBA Company can possess several %product% licenses.

    -

    In Qodana Cloud, you need to create at least one organization that +

    Each created JBA Company can possess several %instance% licenses.

    +

    In Qodana Cloud, you need to create at least one organization that will correspond to a specific license within a specific JBA Company.

    In Qodana Cloud, you can also create a JBA Company during the onboarding stage. In this case, the JBA Company and the Qodana Cloud organization will share the same name.

    -

    %product% does not use JetBrains Account teams.

    +

    %instance% does not use JetBrains Account teams.

    - -

    %product% can be run in various ways, as described on the page. We’ve tried to - make it as easy as possible to configure %product%, so all of these methods require the minimum number of + +

    %instance% can be run in various ways, as described on the page. We’ve tried to + make it as easy as possible to configure %instance%, so all of these methods require the minimum number of preparation steps.

    - +

    A linter is a Qodana component representing a specific technology. For example, the linter lets you inspect the codebase containing the Java, Kotlin, and Groovy code, while the linter lets you check on the JavaScript and TypeScript code. On the @@ -76,23 +76,23 @@

    - +

    Yes, you can use multiple linters in a single project, as described in the section.

    - +

    You can configure your inspection profile as described on the page.

    If the existing inspections do not fit your needs, you can develop your own - structural search inspections and add them to the - inspection profile or use plugins that will extend the inspection - capabilities of %product%. Alternatively, you can develop + structural search inspections and add them to the + inspection profile or use plugins that will extend the inspection + capabilities of %instance%. Alternatively, you can develop your own plugin and use its inspections with Qodana.

    - +

    The SSH key lets Qodana connect to the repository of the inspected project and calculate the number of contributors, which is a requirement for all types of licenses.

    @@ -102,21 +102,21 @@ - -

    A %product% inspection profile is a set of pre-configured inspections, including their state, configuration - options, and the path to which they are applied. %product% inspection profiles are the same as IntelliJ IDEA + +

    A %instance% inspection profile is a set of pre-configured inspections, including their state, configuration + options, and the path to which they are applied. %instance% inspection profiles are the same as IntelliJ IDEA inspection profiles and can be reused.

    - +

    You can find the list of the default Qodana inspection profiles on the page, where you can also find out how to set up the default profiles.

    - +

    We recommend using the qodana.recommended profile because it already provides the most usable inspections invoked by the default JetBrains IDEs profiles, so @@ -126,7 +126,7 @@

    - +

    Currently, it is not possible to display the results of external analysis tools in Qodana UI, though we are working on it.

    @@ -178,29 +178,29 @@ - - + +

    Yes, but the minimum billing option is for 3 (three) contributors.

    - +

    The contributor counting mechanism is described in the section of this documentation.

    - +

    Yes, you can use this command to check the number of contributors:

    - + git log --format='%aN' | sort -u | wc -l - -

    In the %product% CLI application, you can use the + +

    In the %instance% CLI application, you can use the contributors command for counting active contributors, for example:

    - + qodana contributors -d 90 - +
    - +
  • You can navigate to the @@ -214,7 +214,7 @@

  • During the onboarding stage on the Qodana Cloud website, we’ll generate a public key for you to add - to your repository so that %product% can connect to it, as well as a + to your repository so that %instance% can connect to it, as well as a project token for uploading Qodana reports to your first project.

  • @@ -225,7 +225,7 @@
    - +

    Yes, you can choose either the Ultimate or Ultimate Plus trial license and start using Qodana for free with a 60-day trial period. During this period, you can switch between these licenses one time. After 60 days, you’ll need to buy either the Ultimate or Ultimate Plus license to continue using Qodana in your projects. @@ -237,48 +237,48 @@

    - +

    Both Qodana linters and Qodana Cloud are essential parts of the product named Qodana. You can inspect your codebase using Qodana linters, and you can use Qodana Cloud for managing your projects and licenses, as well as collecting Qodana reports in a single place. For more details, see the - page of the Qodana Cloud documentation. + page of the Qodana Cloud documentation.

    - +

    All licenses require that you create an account at Qodana Cloud and complete the onboarding stage (see this question for further details). Besides that, Qodana Cloud lets you view Qodana reports in a single place and provides access to all of the - features offered by %product% - linters. Finally, for the purposes of opening %product% reports from within your + features offered by %instance% + linters. Finally, for the purposes of opening %instance% reports from within your IDE, you need a Qodana Cloud account.

    - To exclude Qodana Cloud, you can download and run the Community linters of %product%, like + To exclude Qodana Cloud, you can download and run the Community linters of %instance%, like , , and , locally without a license.

    - +

    All of the required steps are described in the section of the Qodana Cloud documentation.

    - +

    A trial license is a time-limited version of either the Ultimate or the Ultimate Plus license. Each trial license duration is limited to 60 days, and you can change it from Ultimate to Ultimate Plus and vice versa just once. After the trial period ends, this type of license is no longer valid and can no longer be used. - To continue using %product%, you’ll have to purchase a full version of your license. + To continue using %instance%, you’ll have to purchase a full version of your license.

    - +

    Yes, you’ll be notified when your trial period expires.

    After its expiry, you’ll need to buy either the Ultimate or Ultimate Plus license. Expired trial licenses @@ -286,14 +286,14 @@

    - +

    No, you don’t have to provide any payment details until you decide to buy a license for either the Ultimate or Ultimate Plus version of Qodana, which you can do after the trial period ends.

    - +

    Yes, you can switch between trial versions of the Ultimate and Ultimate Plus licenses using your JetBrains @@ -314,12 +314,12 @@

    - +

    The total license cost is based on the number of active contributors. An active contributor is a person/bot who has committed to any number of Qodana Cloud projects at any point in the last 90 days, within the same organization, and under a single license. During the onboarding stage - and while creating a new project, + and while creating a new project, Qodana Cloud requests your repository URL to calculate contributors. The minimal number of contributors used for licensing is 3 (three).

    @@ -331,22 +331,22 @@ the second month, the license costs would be recalculated again based on the actual number of active contributors.

    -

    For more details, see the Fees and Payments section of the - %product% Terms of Service.

    +

    For more details, see the Fees and Payments section of the + %instance% Terms of Service.

    For more details, see the Fees and Payments section of the - %product% Terms of Service. + %instance% Terms of Service.

    - +

    Here is the billing description taken from the - %product% Terms of Service: + %instance% Terms of Service:

    - Monthly Subscriptions – At the beginning of each Subscription Period, You will specify the expected number + Monthly Subscriptions – At the beginning of each Subscription Period, You will specify the expected number of Active Contributors (three or more). At the end of the Subscription Period, You will be charged Subscription fees according to Your Subscription Plan based on the number of Active Contributors that You determined. Qodana checks the actual number of Active Contributors at the end of every Subscription Period. @@ -355,19 +355,19 @@ next Subscription Period cannot be lower than the actual number from the preceding Subscription Period.

    - Annual Subscriptions – Fees for annual Subscriptions are charged as a combination of upfront payment for a + Annual Subscriptions – Fees for annual Subscriptions are charged as a combination of upfront payment for a number of Active Contributors selected by You and additional charges for Active Contributors exceeding the prepaid number during the Subscription Period (overuse):

    -

    - -

  • Prepayment – At the beginning of Your annual Subscription, You will specify the expected monthly number of Active + + +
  • Prepayment – At the beginning of Your annual Subscription, You will specify the expected monthly number of Active Contributors (3 or more). You will be charged upfront for the Subscription fee, which will be calculated based on the number of Active Contributors that You specified multiplied by the monthly fee per Active Contributor based on Your Subscription Plan per each month of Your Subscription.
  • - Overuse – Qodana will check the actual number of Active Contributors at the end of every calendar month. If the + Overuse – Qodana will check the actual number of Active Contributors at the end of every calendar month. If the actual number of Active Contributors exceeds the monthly number of Active Contributors that You specified, You will be charged a Subscription fee for each Active Contributor exceeding the monthly number of prepaid Active Contributors. The invoice for the overuse will be issued at the end of every calendar quarter and at the end of Your Subscription period @@ -375,18 +375,17 @@ the number of prepaid Active Contributors, We will not refund or otherwise credit the difference.
  • -

    -

    - + +

  • - Prepayment – At the beginning of Your annual Subscription, You will specify the + Prepayment – At the beginning of Your annual Subscription, You will specify the expected monthly number of Active Contributors (three or more). You will be charged upfront for the Subscription fee, which will be calculated based on the number of Active Contributors that You specified multiplied by the monthly fee per Active Contributor based on Your Subscription Plan per each month of Your Subscription.
  • - Overuse – Qodana will check the actual number of Active Contributors at the + Overuse – Qodana will check the actual number of Active Contributors at the end of every calendar month. If the actual number of Active Contributors exceeds the monthly number of Active Contributors that You specified, You will be charged a Subscription fee for each Active Contributor exceeding the monthly number of prepaid Active Contributors. The invoice for the overuse @@ -396,19 +395,17 @@ credit the difference.
  • -

    + - - - +

    Qodana Cloud stores all information about your licenses. This explains why you must create a Qodana Cloud account before running Qodana. Aside from this functionality, Qodana Cloud provides other - features. + features.

    - +

    We recommend running Qodana linters under appropriate licenses, based on your tasks. @@ -428,44 +425,44 @@

    - +

    You can have up to 5 (five) Community licenses under your JetBrains account.

    - +

    Compared to the Ultimate license, the Ultimate Plus license provides the following additional features:

    -
  • +
  • - +

    No, you can use a Qodana Community license in your work on any open-source or proprietary projects.

    - +

    All Qodana subscriptions support integration with the CI/CD solutions described in the section.

    - +

    Yes, you can run the Community Qodana linters under the Community license. See the page for more details.

    - +

    First and foremost, Qodana Cloud collects information about active contributors of your repository, as well as the project token. This information is then used for calculating license @@ -476,22 +473,22 @@ Qodana Cloud, which lets you view inspection results using the Qodana Cloud UI.

    - +
    - +

    Use the qodana.recommended inspection profile.

    If the qodana.recommended profile does not help, try to run another linter.

    If the problem persists, please create an issue in our tracker or contact us at qodana-support@jetbrains.com and attach logs from the /data/results directory that you can get access to by mounting your directory to the path.

    - +

    Yes, you can use - caching, + caching, and this is available by default in the Qodana Scan GitHub action. If this does not help, create an issue in our tracker or contact us at qodana-support@jetbrains.com and attach logs from the /data/results directory. To access logs, mount your directory. If you are @@ -499,17 +496,17 @@

    - +

    Try to set more memory in Docker Desktop preferences, as some projects and build tools inside them, like Gradle, could require more memory than the default 2 GB.

    - +

    - Before starting %product%, please run the ./gradlew command in the root folder. This will let - %product% use this downloaded version of Gradle. + Before starting %instance%, please run the ./gradlew command in the root folder. This will let + %instance% use this downloaded version of Gradle.

    If your project was created on Windows, make sure to run git update-index --chmod=+x gradlew to @@ -520,10 +517,3 @@ - - - - - - - diff --git a/topics/features.xml b/topics/features.topic similarity index 87% rename from topics/features.xml rename to topics/features.topic index 8597240c..4c5115f1 100644 --- a/topics/features.xml +++ b/topics/features.topic @@ -1,12 +1,12 @@ - - + + - + -

    Using %product%, you can significantly enhance your code inspection workflow. To better achieve your +

    Using %instance%, you can significantly enhance your code inspection workflow. To better achieve your goals, you may want to start using several features that are available out of the box:

    @@ -25,7 +25,7 @@ - + - + - + - + diff --git a/topics/getting-started.topic b/topics/getting-started.topic new file mode 100644 index 00000000..44abd88a --- /dev/null +++ b/topics/getting-started.topic @@ -0,0 +1,45 @@ + + + + + + + Discover Qodana + + These topics will help you get started with Qodana. + + + + These are two sections you should definitely start with + + + + + + Deploy, configure, and launch Qodana + + + + + + + + + + Qodana features + + + + + + + + + + + + + diff --git a/topics/getting-started.xml b/topics/getting-started.xml deleted file mode 100644 index 0df5e80e..00000000 --- a/topics/getting-started.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - Discover Qodana - - These topics will help you get started with Qodana. - - - - These are two sections you should definitely start with - - - - - - Deploy, configure, and launch Qodana - - - - - - - - - - Qodana features - - - - - - - - - - - - - diff --git a/topics/github.md b/topics/github.md index 0a37f7d1..a07dd897 100644 --- a/topics/github.md +++ b/topics/github.md @@ -5,11 +5,11 @@ The [Qodana Scan GitHub action](https://github.com/marketplace/actions/qodana-scan) allows you to run Qodana on a GitHub repository. - + ### Basic configuration - + fetch-depth: 0 is required for checkout in case Qodana works in pull request mode (reports issues that appeared only in that pull request). @@ -17,7 +17,7 @@ allows you to run Qodana on a GitHub repository. We recommend that you have a separate workflow file for Qodana because [different jobs run in parallel](https://help.github.com/en/actions/getting-started-with-github-actions/core-concepts-for-github-actions#job) -![Qodana Cloud](https://user-images.githubusercontent.com/13538286/214899046-572649db-fe62-49b2-a368-b5d07737c1c1.gif) +![Qodana Cloud](qodana-cloud.gif) ### Apply quick-fixes @@ -95,16 +95,16 @@ Instead of `main`, you can specify your branch here. 9. Search for the `Qodana` status check, then check it. 10. Click **Create**. - + ### Quality gate and baseline -You can combine the [quality gate](quality-gate.xml) and [baseline](baseline.xml) features to manage your +You can combine the [quality gate](quality-gate.topic) and [baseline](baseline.topic) features to manage your technical debt, report only new problems, and block pull requests that contain too many problems. Follow these steps to establish a baseline for your project: -1. Run Qodana [locally](Quick-start.xml) over your project: +1. Run Qodana [locally](Quick-start.topic) over your project: ```shell cd project diff --git a/topics/gitlab.md b/topics/gitlab.md index 68eddca7..4cc5942d 100644 --- a/topics/gitlab.md +++ b/topics/gitlab.md @@ -5,13 +5,13 @@ [GitLab CI/CD](https://docs.gitlab.com/ee/ci/) is a tool for software development that uses various CI/CD methodologies. This -section explains how you can run %product% [Docker images](docker-images.md) within GitLab CI/CD +section explains how you can run %instance% [Docker images](docker-images.md) within GitLab CI/CD [pipelines](https://docs.gitlab.com/ee/ci/pipelines/) and covers the following cases: * Inspecting specific branches and merge requests -* Forwarding inspection reports to [Qodana Cloud](cloud-about.xml) -* Exposing %product% reports in the GitLab CI/CD user interface -* Using the [quality gate](quality-gate.xml) and [baseline](baseline.xml) features +* Forwarding inspection reports to [Qodana Cloud](cloud-about.topic) +* Exposing %instance% reports in the GitLab CI/CD user interface +* Using the [quality gate](quality-gate.topic) and [baseline](baseline.topic) features ## Prepare your project @@ -42,27 +42,27 @@ qodana: - qodana --cache-dir=$CI_PROJECT_DIR/.qodana/cache ``` -In this configuration, the [`image:name`](https://docs.gitlab.com/ee/ci/yaml/#image) keyword pulls the %product% +In this configuration, the [`image:name`](https://docs.gitlab.com/ee/ci/yaml/#image) keyword pulls the %instance% [Docker image](docker-images.md) of your choice. -The [`cache`](https://docs.gitlab.com/ee/ci/caching/) keyword configures GitLab caches to store the %product% cache, +The [`cache`](https://docs.gitlab.com/ee/ci/caching/) keyword configures GitLab caches to store the %instance% cache, so subsequent runs will be faster. -The [`script`](https://docs.gitlab.com/ee/ci/yaml/#script) keyword runs the `qodana` command and enumerates the %product% -configuration options described in the [](docker-image-configuration.xml) section. +The [`script`](https://docs.gitlab.com/ee/ci/yaml/#script) keyword runs the `qodana` command and enumerates the %instance% +configuration options described in the [](docker-image-configuration.topic) section. The `variables` keyword defines the `QODANA_TOKEN` [variable](https://docs.gitlab.com/ee/ci/variables/#define-a-cicd-variable-in-the-ui) -referring to the [project token](project-token.md) generated in Qodana Cloud. This token is required by the paid %product% +referring to the [project token](project-token.md) generated in Qodana Cloud. This token is required by the paid %instance% [linters](pricing.md#pricing-linters-licenses), and is optional for using with the Community linters. You can see these sections to learn how to generate the project token: * The [](cloud-onboarding.md) section explains how to get the project token generated while first working with Qodana Cloud -* The [](cloud-projects.xml#cloud-manage-projects) section explains how to create a project in the existing Qodana Cloud organization +* The [](cloud-projects.topic#cloud-manage-projects) section explains how to create a project in the existing Qodana Cloud organization ## Inspect specific branches -Using the [`only`](https://docs.gitlab.com/ee/ci/yaml/index.html#only--except) keyword, you can tell %product% which +Using the [`only`](https://docs.gitlab.com/ee/ci/yaml/index.html#only--except) keyword, you can tell %instance% which branches to inspect. To inspect only the `main` branch and incoming merge requests, you can use this configuration: ```yaml @@ -118,15 +118,17 @@ qodana: Assuming that you have configured your pipeline in a similar manner, this is what it may look like: 1. Qodana report affiliated with a pipeline in a merge request + Qodana report affiliated with a pipeline in a merge request 2. Available actions for a given exposed Qodana artifact + Available actions for a given exposed Qodana artifact ## Quality gate and baseline You can use the `--fail-threshold ` and `--baseline ` lines in the `script` block to -invoke the [quality gate](quality-gate.xml) and [baseline](baseline.xml) features. +invoke the [quality gate](quality-gate.topic) and [baseline](baseline.topic) features. ```yaml qodana: diff --git a/topics/html-report.md b/topics/html-report.md index 2feac02c..f05c1ace 100644 --- a/topics/html-report.md +++ b/topics/html-report.md @@ -1,50 +1,50 @@ [//]: # (title: Open an HTML report) -You can open HTML-formatted %product% reports using JetBrains IDEs and shell commands. +You can open HTML-formatted %instance% reports using JetBrains IDEs and shell commands. -

    Starting from version 2023.2 of %product%, you can open HTML reports using IntelliJ IDEA, PhpStorm, WebStorm, Rider, +

    Starting from version 2023.2 of %instance%, you can open HTML reports using IntelliJ IDEA, PhpStorm, WebStorm, Rider, GoLand, PyCharm, and Rider as explained in the section.

    In this case, your IDE needs to be installed via JetBrains Toolbox App.

    -

    When you run %product% with the --save-report option, it stores an HTML version of the report in +

    When you run %instance% with the --save-report option, it stores an HTML version of the report in /data/results/report. This directory is typically mounted via Docker to let you view the HTML report later, -independently of running %product%. Due to JavaScript security restrictions, you cannot browse the HTML report by +independently of running %instance%. Due to JavaScript security restrictions, you cannot browse the HTML report by double-clicking the index.html file. Instead, the HTML report needs to be served via a web server, and you can run the Dockerized version of nginx, or invoke the Python or PHP built-in web servers as shown below.

    -After running %product%, navigate to the report folder and make sure that the +After running %instance%, navigate to the report folder and make sure that the index.html file is present there.

    Serve the report using the web server of your choice:

    - + docker run -it --rm -p 8000:80 \ -v $(pwd):/usr/share/nginx/html nginx - +

    In your browser, navigate to http://localhost:8000 to see the generated report.

    - + python2 -m SimpleHTTPServer - +

    In your browser, navigate to http://localhost:8000 to see the generated report.

    - + python3 -m http.server - +

    In your browser, navigate to http://localhost:8000 to see the generated report.

    - + php -S localhost:8000 - +

    In your browser, navigate to http://localhost:8000 to see the generated report.

    diff --git a/topics/inspect-your-code.topic b/topics/inspect-your-code.topic new file mode 100644 index 00000000..c20ac520 --- /dev/null +++ b/topics/inspect-your-code.topic @@ -0,0 +1,30 @@ + + + + + +

    The most interesting and intriguing part of the interaction with %instance% is analysis of your code. To better + prepare for that, you may want to revisit the section, or learn how to + prepare your project before running %instance%. + Otherwise, we suggest you to take a tour to our guides that provide examples of how you + can tune %instance% for solving specific tasks.

    + +

    Inspection of your code will depend on: +

    + +
  • How you are planning to deploy %instance%
  • +
  • What linter you need to run
  • +
    +

    %instance% inspection results are available in two forms:

    + + +
  • JSON files
  • +
  • HTML reports
  • +
    + +

    Both formats are described in details in the section.

    + +
    diff --git a/topics/inspect-your-code.xml b/topics/inspect-your-code.xml deleted file mode 100644 index 37a58c78..00000000 --- a/topics/inspect-your-code.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - -

    The most interesting and intriguing part of the interaction with %product% is analysis of your code. To better - prepare for that, you may want to revisit the section, or learn how to - prepare your project before running %product%. - Otherwise, we suggest you to take a tour to our guides that provide examples of how you - can tune %product% for solving specific tasks.

    - -

    Inspection of your code will depend on: - -

  • How you are planning to deploy %product%
  • -
  • What linter you need to run
  • - -

    - -

    %product% inspection results are available in two forms:

    - - -
  • JSON files
  • -
  • HTML reports
  • -
    - -

    Both formats are described in details in the section.

    - - diff --git a/topics/inspection-profiles.md b/topics/inspection-profiles.md index 052928b2..d4f993da 100644 --- a/topics/inspection-profiles.md +++ b/topics/inspection-profiles.md @@ -6,7 +6,7 @@ Inspection profiles let you configure the inspections, the scope of files that these inspections analyze, -and inspection severity settings. %product% uses inspection profiles to know how and what to inspect in a codebase. +and inspection severity settings. %instance% uses inspection profiles to know how and what to inspect in a codebase. You can employ profiles either using CLI or configuring the `qodana.yaml` file as shown in the [](#Set+up+a+profile) section. @@ -28,7 +28,7 @@ If you want a fresh start, you have two options: 1. Use Qodana in the default mode to execute the [three-phase analysis](#three-phase-analysis). You do not need to create the [`qodana.yaml`](qodana-yaml.md) file in this case, but you can add it later to amend the set of inspections. -2. Run %product% using the `qodana.recommended` profile. In this case, you need to create the `qodana.yaml` file with a +2. Run %instance% using the `qodana.recommended` profile. In this case, you need to create the `qodana.yaml` file with a reference to the [`qodana.recommended`](#Default+profiles) profile. This profile contains the inspections for critical or severe issues in the codebase. This profile does not contain any style checks, and non-critical folders, such as `tests`, are ignored. @@ -49,7 +49,7 @@ certain type of results. ## Set up a profile -You can set up a profile using either the `qodana.yaml` file or the [Shell commands](docker-image-configuration.xml). +You can set up a profile using either the `qodana.yaml` file or the [Shell commands](docker-image-configuration.topic). ### Profile name @@ -60,53 +60,53 @@ profile: name: ``` -The `--profile-name` CLI option lets you run %product% using either the +The `--profile-name` CLI option lets you run %instance% using either the [default profiles](inspection-profiles.md#Default+profiles) or the profile name from the [custom profile](inspection-profiles.md#Custom+profiles). -This command lets you override the default profile und run %product% using the +This command lets you override the default profile und run %instance% using the [`qodana.recommended`](inspection-profiles.md#Default+profiles) profile: - + docker run \ -v $(pwd):/data/project/ \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> \ --profile-name qodana.recommended - + - + qodana scan \ -e QODANA_TOKEN="<cloud-project-token>" \ -profile-name qodana.recommended - + -If you need to run %product% with a custom profile, you can use its actual profile name. This command lets you bind a +If you need to run %instance% with a custom profile, you can use its actual profile name. This command lets you bind a custom profile: - + docker run \ -v $(pwd):/data/project/ \ -v <path-to-profile-file>/<file-name>:/data/project/.idea/inspectionProfiles/<file-name> \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> \ --profile-name <profile-name-from-file> - + - + qodana scan \ -v <path-to-profile-file>/<file-name>:/data/project/.idea/inspectionProfiles/<file-name> \ -e QODANA_TOKEN="<cloud-project-token>" \ --profile-name <profile-name-from-file> - + @@ -123,27 +123,27 @@ You can use this with [custom profiles](#Custom+profiles). The `--profile-path` CLI option lets you override the path to the file containing the profile. -This command lets you bind the file to the profile directory, and the `--profile-path` option tells %product% which +This command lets you bind the file to the profile directory, and the `--profile-path` option tells %instance% which profile file to read: - + docker run \ -v $(pwd):/data/project/ \ -v <path-to-profile-file>/<file-name>:/data/project/myprofiles/<file-name> \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> \ --profile-path /data/project/myprofiles/<file-name> - + - + qodana scan \ -v <path-to-profile-file>/<file-name>:/data/project/myprofiles/<file-name> \ -e QODANA_TOKEN="<cloud-project-token>" \ --profile-path /data/project/myprofiles/<file-name> - + @@ -151,5 +151,5 @@ profile file to read: You can configure inspection profiles using two formats: -* [YAML format](custom-profiles.md) is available starting from version 2023.2 of %product% +* [YAML format](custom-profiles.md) is available starting from version 2023.2 of %instance% * [XML format](custom-xml-profiles.md) can be used as an alternative to YAML \ No newline at end of file diff --git a/topics/jenkins.md b/topics/jenkins.md index 5931def5..94995222 100644 --- a/topics/jenkins.md +++ b/topics/jenkins.md @@ -11,7 +11,7 @@ [Jenkins](https://www.jenkins.io/doc/) is a self-contained, open-source server that automates software-related tasks -including building, testing, and deploying software. This section explains how you can configure %product% +including building, testing, and deploying software. This section explains how you can configure %instance% [Docker images](docker-images.md) in Jenkins [Multibranch Pipelines](%Multipipe%) ## Prepare your project @@ -61,23 +61,23 @@ pipeline { In this configuration, the `environment` block defines the `QODANA_TOKEN` variable to invoke the [project token](project-token.md) generated in Qodana Cloud and contained in -the `qodana-token` [global credentials](%JenkinsCred%). The project token is required by the paid %product% +the `qodana-token` [global credentials](%JenkinsCred%). The project token is required by the paid %instance% [linters](pricing.md#pricing-linters-licenses), and is optional for using with the Community linters. You can see these sections to learn how to generate the project token in Qodana Cloud: * The [](cloud-onboarding.md) section explains how to get the project token generated while first working with Qodana Cloud -* The [](cloud-projects.xml#cloud-manage-projects) section explains how to create a project in the existing Qodana Cloud organization +* The [](cloud-projects.topic#cloud-manage-projects) section explains how to create a project in the existing Qodana Cloud organization -This configuration uses the `docker` agent to invoke %product% [Docker images](docker-images.md). Using the +This configuration uses the `docker` agent to invoke %instance% [Docker images](docker-images.md). Using the `WORKSPACE` variable, the `args` block mounts the local checkout directory to the project directory of a Docker image, and `image` specifies the Docker image invoked. -The `stage` block calls %product%. Here, you can also specify the [options](docker-image-configuration.xml) -you would like to configure %product% with like the [quality gate and baseline](#Quality+gate+and+baseline) features. +The `stage` block calls %instance%. Here, you can also specify the [options](docker-image-configuration.topic) +you would like to configure %instance% with like the [quality gate and baseline](#Quality+gate+and+baseline) features. ## Inspect specific branches -Using the `when` block, you can tell %product% which branches of your project to inspect. For example, this configuration +Using the `when` block, you can tell %instance% which branches of your project to inspect. For example, this configuration lets you inspect only the `feature` branch. ```groovy @@ -112,7 +112,7 @@ of the Jenkins documentation. ## Quality gate and baseline -This configuration invokes the [quality gate](quality-gate.xml) and [baseline](baseline.xml) features using the +This configuration invokes the [quality gate](quality-gate.topic) and [baseline](baseline.topic) features using the `--fail-threshold ` and `--baseline ` lines specified in the `steps` block. ```groovy diff --git a/topics/lib_qd.xml b/topics/lib_qd.topic similarity index 75% rename from topics/lib_qd.xml rename to topics/lib_qd.topic index eae182d0..803e5b72 100644 --- a/topics/lib_qd.xml +++ b/topics/lib_qd.topic @@ -1,19 +1,19 @@ - + + - - + + + Running analysis locally is a resource-intensive operation. If you experience issues, consider increasing the Docker - Desktop runtime memory limit, which by default is set to 2 GB. See the Docker Desktop documentation for Windows + Desktop runtime memory limit, which by default is set to 2 GB. See the Docker Desktop documentation for Windows and Mac. - + - + It brings all the smarts from %ide%, which help you:
  • detect anomalous code and probable bugs
  • @@ -21,11 +21,11 @@
  • highlight spelling problems
  • improve overall code structure
  • introduce coding best practices
  • -
  • Upload inspection results to Qodana Cloud
  • +
  • Upload inspection results to Qodana Cloud
  • -
    + - +

    The Docker image for the %linter% linter is provided to support different usage scenarios: @@ -41,20 +41,18 @@ and know what to expect from the static analysis outside the editor, you can skip the following section and continue from Using an existing profile.

    -

    If you are just starting in the field, we recommend proceeding with the default setup +

    If you are just starting in the field, we recommend proceeding with the default setup we provide. You will see the - results of the most common checks performed on your code base. Later, you can adjust them + results of the most common checks performed on your code base. Later, you can adjust them to suit your needs better.

    You can run the %linter% linter using two methods. Qodana CLI is the easiest method. If necessary, check the installation page to install - Qodana CLI. Alternatively, you can use the Docker commands from the Docker image tab.

    -
    + Qodana CLI. Alternatively, you can use the Docker commands from the Docker image tab.

    + - + @@ -62,18 +60,18 @@

    Pull the image from Docker Hub (only necessary to update to the latest version):

    - docker pull jetbrains/%linter-shell% - + docker pull jetbrains/%linter-shell% +

    Run the following command:

    - + docker run \ -v <source-directory>/:/data/project/ \ -v <output-directory>/:/data/results/ \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/%linter-shell% - +

    where source-directory and output-directory are full local paths to, respectively, the project source code directory and the analysis results directory. The @@ -91,16 +89,15 @@ Docker console.

    If you don't need the user interface and prefer to study raw data, use the following command:

    - + docker run \ -v <source-directory>/:/data/project/ \ -v <output-directory>/:/data/results/ \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/%linter-shell% - +

    The output-directory will contain all the - necessary results. You can further tune the command as described in the technical guide. + necessary results. You can further tune the command as described in the technical guide.

    If you run the analysis several times in a row, make sure you've cleaned the results directory before using it in docker run again. @@ -109,48 +106,48 @@

    In the project root directory, run this command to inspect your code and view the inspection report locally:

    - + qodana scan \ -e QODANA_TOKEN="<cloud-project-token>" \ -l %docker-image% \ --show-report - +

    If you don't need the user interface and prefer to study raw data, use the following command:

    - + qodana scan \ -e QODANA_TOKEN="<cloud-project-token>" \ -l %docker-image% \ --results-dir <output-directory> - +

    The output-directory specifies the directory where the SARIF-formatted report will be saved. The QODANA_TOKEN variable refers to the project token required by the Ultimate and Ultimate Plus linters.

    - + - +

    Use the following command as a task in a generic Shell executor:

    - + docker run \ -v <source-directory>/:/data/project/ \ -v <output-directory>/:/data/results/ \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/%linter-shell% - +

    where source-directory and output-directory are full paths to, respectively, the project source code directory and the analysis results directory. The QODANA_TOKEN variable refers to the project token required by the Ultimate and Ultimate Plus linters.

    -

    Consider using the feature to make the build fail when a certain number - of problems is reached and the feature to compare each new %linter% +

    Consider using the feature to make the build fail when a certain number + of problems is reached and the feature to compare each new %linter% run to some initial run selected as a baseline. - Running as non-root is also supported. + Running as non-root is also supported.

    @@ -160,17 +157,17 @@

    Run this command in the project root directory:

    - + qodana scan \ -e QODANA_TOKEN="<cloud-project-token>" \ -l %docker-image% \ --results-dir <output-directory> - +

    This will save inspection results to the directory specified by output-directory.

    -

    You can also apply the feature to make the build fail when a certain number +

    You can also apply the feature to make the build fail when a certain number of problems is reached by using the --fail-threshold option.

    -

    The feature compares each new %linter% run to some initial run using +

    The feature compares each new %linter% run to some initial run using the --baseline and --baseline-include-absent options.

    @@ -182,18 +179,16 @@
    -
    + - +

    - This section is intended for users familiar with configuring code analysis via %ide% inspection profiles. + This section is intended for users familiar with configuring code analysis via %ide% inspection profiles.

    -

    You can pass the reference to the existing profile in multiple ways. Here are some +

    You can pass the reference to the existing profile in multiple ways. Here are some examples:

    @@ -201,7 +196,7 @@

    Mapping the profile to /data/profile.xml inside the container:

    - + docker run \ -p 8080:8080 \ -v <source-directory>/:/data/project/ \ @@ -210,13 +205,13 @@ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/%linter-shell% \ --show-report - +
  • Using the name of the profile in your project .idea/inspectionProfiles/ folder.

    - + docker run \ -p 8080:8080 \ -v <source-directory>/:/data/project/ \ @@ -225,57 +220,56 @@ jetbrains/%linter-shell% \ --show-report \ --profile-name <custom-profile-name> - +

    - +

  • -

    You can pass the reference to the existing profile in multiple ways. Here are some +

    You can pass the reference to the existing profile in multiple ways. Here are some examples, run both commands in the project root directory:

  • Mapping the profile inside the container:

    - + qodana scan \ -e QODANA_TOKEN="<cloud-project-token>" \ -l %docker-image% \ --results-dir <output-directory> \ --profile-path <path-to-profile> \ --show-report - +
  • Using the name of the profile in your project .idea/inspectionProfiles/ folder:

    - + qodana scan \ -e QODANA_TOKEN="<cloud-project-token>" \ -l %docker-image% \ --results-dir <output-directory> \ --profile-name <custom-profile-name> \ --show-report - +

    - +

  • - + - +

    Paid plugins are not yet supported. Each vendor must clarify licensing terms for CI usage and collaborate with us to make it work. @@ -283,48 +277,46 @@

    Any free IntelliJ platform plugins or your custom plugin can be added by mounting it to the container plugins' directory using the following command:

    - + docker run \ -v /your/custom/path/%\pluginName%:/opt/idea/plugins/%\pluginName% \ jetbrains/%linter-shell% - +

    - Refer to the technical guide for more details. + Refer to the technical guide for more details.

    -
    + - +

    - %product% automatically recognizes the qodana.yaml file for the analysis configuration, + %instance% automatically recognizes the qodana.yaml file for the analysis configuration, so that you don't need to pass any additional parameters. In the qodana.yaml file, you can save - ide: QDNET to run %product% in the native mode. + ide: QDNET to run %instance% in the native mode.

    - %product% automatically recognizes the qodana.yaml file for the analysis configuration, + %instance% automatically recognizes the qodana.yaml file for the analysis configuration, so that you don't need to pass any additional parameters.

    - The references to the inspection profiles will be resolved in a particular order. To + The references to the inspection profiles will be resolved in a particular order. To learn about the format, see .

    -
    + - + According to the JetBrains EAP user agreement, we can use third-party services to analyze the usage of our features to further improve the user experience. All data will be collected anonymously. You can disable the reporting of usage statistics by adjusting the options of the - Docker command you use. Refer to the technical guide for + Docker command you use. Refer to the technical guide for details. - + - + Note that the name of the profile does not necessarily match the name of the containing file stored in .idea/inspectionProfiles. The actual name is stored as the <option name="myName" value="%\profileName%" /> value in the profile xml file and is visible in the %ide% UI. For details on - working with inspection profiles in %ide%, see the %ide% documentation. - + working with inspection profiles in %ide%, see the %ide% documentation. + @@ -334,13 +326,13 @@ - +

    To be able to run the analysis, make sure the project can be successfully built and run in the desired environment, that is, a JRE is properly configured, project dependencies are installed, build scripts or startup tasks are executed, and so on.

    Qodana provides two options for local analysis of your code. Qodana CLI is the easiest option to start. - Alternatively, you can use the Docker command from the Docker image tab.

    + Alternatively, you can use the Docker command from the Docker image tab.

    Assuming that you have already @@ -350,64 +342,64 @@ Install Qodana CLI on your machine using available options.

    In the project root directory, run this command:

    - qodana init + qodana init

    This will create the qodana.yaml file containing all necessary configuration options.

    In the project root directory, run this command to inspect your code:

    - + qodana scan \ -e QODANA_TOKEN="<cloud-project-token>" \ --show-report - +

    Here, the QODANA_TOKEN variable refers to the project token.

    - + qodana scan \ -e QODANA_TOKEN="<cloud-project-token>" \ -l %docker-image% \ --show-report - +

    Here, the QODANA_TOKEN variable refers to the project token.

    Start with any of the provided linters. For all linters the procedure is basically the same.

    To start, pull the image from Docker Hub (only necessary to get the latest version):

    - + docker pull %docker-image% - +

    Start local analysis with source-directory pointing to the root of your project and QODANA_TOKEN referring to the project token:

    - + docker run --rm -it \ -v <source-directory>/:/data/project/ \ -e QODANA_TOKEN="<cloud-project-token>" \ -p 8080:8080 \ jetbrains/qodana-<linter> \ --show-report - +

    If you use PHP Composer, Qodana will install your project dependencies automatically right before the code analysis starts.

    In case you need to change the language level, add the following to <source-directory>/.idea/php.xml:

    - + <?xml version="1.0" encoding="UTF-8"?> <project version="4"> <component name="PhpProjectSharedConfiguration" php_language_level="<desired level>" /> </project> - +

    Run the analysis locally:

    - + docker run --rm -it \ -v <source-directory>/:/data/project/ \ -e QODANA_TOKEN="<cloud-project-token>" \ -p 8080:8080 \ %docker-image% \ --show-report - +

    with source-directory pointing to the root of your project, and QODANA_TOKEN referring to the project token.

    Open http://localhost:8080 in your browser to examine inspection results. @@ -416,14 +408,14 @@ console.

    -
    + - + -

    To view license audit results, in the inspection report click the License audit tab.

    +

    To view license audit results, in the inspection report click the License audit tab.

    -

    The License audit tab provides results of inspection by the - license audit feature.

    +

    The License audit tab provides results of inspection by the + license audit feature.

    The dependency tree @@ -431,71 +423,71 @@
  • If applicable, you can expand a specific dependency to see its dependency tree.
  • -
  • Using Only alerted, you can switch between all project dependencies and dependencies +
  • Using Only alerted, you can switch between all project dependencies and dependencies which licenses are incompatible with the project license.
  • -
  • In the Licenses section, you can find the list of project, module and dependency licenses. - Using Open license rules, you can view the rules of license compatibility.
  • +
  • In the Licenses section, you can find the list of project, module and dependency licenses. + Using Open license rules, you can view the rules of license compatibility.
  • You can download the list of licenses in various formats.
  • -
    + - -

    %product% provides several deployment options to better fit your needs:

    + +

    %instance% provides several deployment options to better fit your needs:

  • Native mode available in the Qodana for .NET linter
  • Docker images let you inspect - local projects and build %product% into your CI/CD pipelines.
  • -
  • JetBrains IDEs let you run %product%, connect to Qodana Cloud, open and study inspection reports.
  • + local projects and build %instance% into your CI/CD pipelines. +
  • JetBrains IDEs let you run %instance%, connect to Qodana Cloud, open and study inspection reports.
  • Qodana extension for Visual Studio Code lets you retrieve reports from Qodana Cloud and study inspection reports.
  • Integration tools include applications for seamless integration with CI/CD systems - like GitHub and TeamCity, and guides for configuring %product% Docker images for CI/CD.
  • -
  • provides the Gradle interface for running %product% in IntelliJ IDEA.
  • -
  • Cloud service is a cloud-based version of %product%.
  • + like GitHub and TeamCity, and guides for configuring %instance% Docker images for CI/CD. +
  • provides the Gradle interface for running %instance% in IntelliJ IDEA.
  • +
  • Cloud service is a cloud-based version of %instance%.
  • -
    + - + -

    By default, %product% tries to locate and employ a single solution file, or, if no solution file is present, +

    By default, %instance% tries to locate and employ a single solution file, or, if no solution file is present, it tries to find a project file. If your project contains multiple solution files, you need to specify the exact file name using the --solution option and a relative path to a solution file. For example, to - make %product% always analyze the MySolution.sln solution file, you can use:

    + make %instance% always analyze the MySolution.sln solution file, you can use:

    - + --property=qodana.net.solution=MySolution.sln - + - + --solution=MySolution.sln - +

    Alternatively, you can specify the solution file name in the qodana.yaml file using the solution option and a relative path to a solution file:

    - + dotnet: solution: MySolution.sln - +

    If your project contains no solution files and multiple project files, you need to use the --project option and a relative path to a project file. For example, for the MyProject.csproj project file you can use:

    - + --property=qodana.net.project=MyProject.csproj - + - + --project=MyProject.csproj - +

    Alternatively, you can specify the project file name in the qodana.yaml file using the project option:

    - + dotnet: project: MyProject.csproj - + @@ -509,61 +501,61 @@ configuration option. For example, use this to switch to the Release configuration:

    - + --property=qodana.net.configuration=Release - +

    Alternatively, you can specify the configuration in qodana.yaml:

    - + dotnet: configuration: Release - +

    By default, the solution platform is set to Any CPU.You can override this using the --property option:

    - + --property=qodana.net.platform=x86 - +

    Alternatively, you can specify the platform in qodana.yaml:

    - + dotnet: platform: x86 - +
    -
    + - + -

    In the qodana.yaml file, you - can specify the JDK version using the projectJDK option, for example:

    +

    In the qodana.yaml file, you + can specify the JDK version using the projectJDK option, for example:

    -

    Use the projectJDK option to specify +

    Use the projectJDK option to specify the JDK version, for example:

    - + projectJDK: 11 - +

    or:

    - + projectJDK: 1.8 - +

    You can also specify JDK using the name:

    - + projectJDK: corretto-19 - -
    + + - + -

    The %linter% linter provides the following %product% features:

    +

    The %linter% linter provides the following %instance% features:

    Group the existing code problems into several categories to efficiently monitor your code evolution @@ -52,7 +52,7 @@
    Verify your project license for compatibility with the licenses of its dependencies Ultimate Plus @@ -65,7 +65,7 @@
    Monitor problems specific to a specific PHP version that may arise when you decide to migrate between versions

    Ultimate

    @@ -76,7 +76,7 @@
    Ensure that your code contains the minimum number of problems or is completely free of them. If combined with the baseline, this feature will make your code quality monitoring even more flexible
    @@ -571,7 +563,7 @@ - + @@ -579,15 +571,15 @@ - + - + - + @@ -610,7 +602,7 @@ - + @@ -618,11 +610,11 @@ - + - + @@ -641,7 +633,7 @@ - + @@ -649,11 +641,11 @@ - + - + @@ -672,7 +664,7 @@ - + @@ -680,11 +672,11 @@ - + - + @@ -703,7 +695,7 @@ - + @@ -711,11 +703,11 @@ - + - +
    Available under licenses
    Ultimate and Ultimate Plus
    Ultimate and Ultimate Plus
    Ultimate Plus
    Ultimate and Ultimate Plus
    Ultimate and Ultimate Plus
    Available under licenses
    Ultimate and Ultimate Plus
    Ultimate and Ultimate Plus
    Ultimate Plus
    Ultimate and Ultimate Plus
    Available under licenses
    Ultimate and Ultimate Plus
    Ultimate and Ultimate Plus
    Ultimate Plus
    Ultimate and Ultimate Plus
    Available under licenses
    Ultimate and Ultimate Plus
    Ultimate and Ultimate Plus
    Ultimate Plus
    Ultimate and Ultimate Plus
    Available under licenses
    Ultimate and Ultimate Plus
    Ultimate and Ultimate Plus
    Ultimate and Ultimate Plus
    Ultimate Plus
    @@ -726,11 +718,11 @@ Available under the license - + Community - + Community @@ -741,29 +733,29 @@ Available under the license - + Community - + Community - + - + - On the Settings tab of the GitHub UI, create the QODANA_TOKEN + On the Settings tab of the GitHub UI, create the QODANA_TOKEN encrypted secret - and save the project token as its value. + and save the project token as its value. - On the Actions tab of the GitHub UI, set up a new workflow and create the + On the Actions tab of the GitHub UI, set up a new workflow and create the .github/workflows/code_quality.yml file. To inspect the main branch, release branches, and the pull requests coming to your repository, save this workflow configuration to the .github/workflows/code_quality.yml file: - + name: Qodana on: workflow_dispatch: @@ -789,12 +781,12 @@ uses: JetBrains/qodana-action@v2023.3 env: QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }} - + - + - + @@ -834,13 +826,13 @@
    Info
    -
    + - -

    Here is the basic configuration snippet for the bitbucket-pipelines.yml file that lets you run %product% + +

    Here is the basic configuration snippet for the bitbucket-pipelines.yml file that lets you run %instance% in Bitbucket Cloud pipelines:

    - + image: atlassian/default-image:4 pipelines: @@ -860,26 +852,26 @@ definitions: caches: qodana: .qodana/cache - +

    Here, the branches block specifies which branches to inspect.

    -

    The image block specifies the %product% linter that will be invoked in the pipeline.

    +

    The image block specifies the %instance% linter that will be invoked in the pipeline.

    The script block contains the - export QODANA_TOKEN=$QODANA_TOKEN line that specifies the project token required by Qodana Cloud and saved as the $QODANA_TOKEN variable. - The - qodana ... line in this block tells Bitbucket which directories to use while running - the pipeline, and it can also contain %product% options.

    -
    + The - qodana ... line in this block tells Bitbucket which directories to use while running + the pipeline, and it can also contain %instance% options.

    + - + -
  • Run %product% in your CI pipeline
  • +
  • Run %instance% in your CI pipeline
  • Configure the %linter% Docker image
  • -
  • Run %product% using GitHub Actions
  • -
  • See how migration between PHP versions will affect the code quality
  • +
  • Run %instance% using GitHub Actions
  • +
  • See how migration between PHP versions will affect the code quality
  • -
    +
    diff --git a/topics/license-audit.xml b/topics/license-audit.topic similarity index 86% rename from topics/license-audit.xml rename to topics/license-audit.topic index 7ce9de8f..7904ec19 100644 --- a/topics/license-audit.xml +++ b/topics/license-audit.topic @@ -1,16 +1,16 @@ - - + + - +

    Making sure that your project license is compatible with the licenses of its dependencies is never an easy task, but this is required for legal purposes. To automate this process and avoid mistakes, you can use %feature% - currently supported by several %product% linters:

    + currently supported by several %instance% linters:

    @@ -39,7 +39,7 @@ - +
    @@ -114,10 +114,10 @@

    For all linters except , you also need to have project dependencies installed using the bootstrap option of - the qodana.yaml file.

    + the qodana.yaml file.

    -

    After %product% has finished analyzing your project, the results become available in the +

    After %instance% has finished analyzing your project, the results become available in the report.

    @@ -131,28 +131,28 @@ CheckDependencyLicenses inspection.

    -

    Below are the qodana.yaml configuration samples that tell %product% to install project +

    Below are the qodana.yaml configuration samples that tell %instance% to install project dependencies and enable %feature%:

    - + include: - name: CheckDependencyLicenses - + - + bootstrap: |+ # Install dependencies php composer.phar update include: - name: CheckDependencyLicenses - + - + bootstrap: |+ # Use npm to install dependencies npm install @@ -165,27 +165,27 @@ include: - name: CheckDependencyLicenses - + - + bootstrap: |+ # Install dependencies pip install -r requirements.txt include: - name: CheckDependencyLicenses - + - + bootstrap: |+ # Install dependencies go mod tidy include: - name: CheckDependencyLicenses - + @@ -193,11 +193,11 @@

    You can use the dependencyIgnores option to ignore a license of a specific dependency in your project:

    - + dependencyIgnores: - name: "aapt2-proto" - name: "dexlib2" - +
    @@ -207,7 +207,7 @@ prohibited keys accept the lists of allowed and prohibited dependency licenses respectively. As a result, the AGPL-3.0-only becomes compatible with the AFL-2.0 project license, while the Apache-1.0 dependency license becomes incompatible.

    - + licenseRules: - keys: - "AFL-2.0" @@ -215,16 +215,16 @@ - "AGPL-3.0-only" prohibited: - "Apache-1.0" - +

    All keys from this sample can accept several values:

    - + licenseRules: - keys: - "PROPRIETARY-LICENSE" allowed: ["CC0-1.0", "CPL-1.0", "CC-BY-4.0", "EPL-1.0", "CDDL-1.0"] - +
    @@ -233,12 +233,12 @@

    You can override a dependency license identifier. This can be useful when a dependency is dual-licensed, and you want to omit some license, or when the license name cannot be detected from the dependency sources correctly.

    -

    Using this sample, you can tell %product% to detect only the CDDL-1.1 and +

    Using this sample, you can tell %instance% to detect only the CDDL-1.1 and GPL-2.0-with-classpath-exception licenses for jaxb-runtime version 2.3.1.

    In this sample, url is optional.

    - + dependencyOverrides: - name: "jaxb-runtime" version: "2.3.1" @@ -248,27 +248,27 @@ url: "https://github.com/javaee/jaxb-v2/blob/master/LICENSE" - key: "GPL-2.0-with-classpath-exception" url: "https://github.com/javaee/jaxb-v2/blob/master/LICENSE" - +

    If you want to include the dependency that should be mentioned in the report but is impossible to detect from the project sources, you can use the customDependencies key to specify it:

    - + customDependencies: - name: ".babelrc JSON Schema (.babelrc-schema.json)" version: "JSON schema for Babel 6+ configuration files" licenses: - key: "Apache-2.0" url: "https://github.com/SchemaStore/schemastore/blob/master/LICENSE" - +
    - +
    diff --git a/topics/linters.md b/topics/linters.md index e4dbb7b8..d686b007 100644 --- a/topics/linters.md +++ b/topics/linters.md @@ -10,8 +10,8 @@ can cause problems. Basically, each Qodana linter is associated with a specific * Highlight spelling problems * Improve overall code structure * Introduce coding best practices -* Check third-party license compatibility. This feature is available in [several linters](license-audit.xml) -* Upload inspection results to [Qodana Cloud](cloud-about.xml) +* Check third-party license compatibility. This feature is available in [several linters](license-audit.topic) +* Upload inspection results to [Qodana Cloud](cloud-about.topic) Currently, several linters provide inspections for several programming languages. diff --git a/topics/monorepo-project.md b/topics/monorepo-project.md index f76707ee..302c44b7 100644 --- a/topics/monorepo-project.md +++ b/topics/monorepo-project.md @@ -14,7 +14,7 @@ the `backend/` folder contains a Java project, the `frontend/` folder contains a JavaScript project, and the `.git/` folder contains VCS-related information. -This section explains how to prepare the projects from this example monorepo so that %product% can inspect them using +This section explains how to prepare the projects from this example monorepo so that %instance% can inspect them using either the [Docker images](docker-images.md) or the [Qodana Scan GitHub Action](github.md). ## Prepare your project @@ -39,14 +39,14 @@ The alternative is to place each `qodana.yaml` in its own project directory, which reverses the above advantages and disadvantages. --> -%product% provides several [linters](linters.md), and each linter can inspect a specific set of programming languages. -Because there is no linter that can inspect Java and JavaScript at the same time, %product% needs to be run twice over +%instance% provides several [linters](linters.md), and each linter can inspect a specific set of programming languages. +Because there is no linter that can inspect Java and JavaScript at the same time, %instance% needs to be run twice over the repository, once for each project. -To configure %product% for inspecting two projects, you need to create two separate [`qodana.yaml`](qodana-yaml.md) -files. %product% also expects `qodana.yaml` to be contained in the root folder. This means that before -running %product% on the project from the `backend/` folder, that project's `qodana.yaml` file needs to be copied to -the root folder. If you run %product% using [Docker](#Docker), you can copy files using the +To configure %instance% for inspecting two projects, you need to create two separate [`qodana.yaml`](qodana-yaml.md) +files. %instance% also expects `qodana.yaml` to be contained in the root folder. This means that before +running %instance% on the project from the `backend/` folder, that project's `qodana.yaml` file needs to be copied to +the root folder. If you run %instance% using [Docker](#Docker), you can copy files using the [`bootstrap`](before-running-qodana.md) configuration option in `qodana.yaml`, for example: -The `qodana-backend.sarif.json` and `qodana-frontend.sarif.json` files can contain [baseline](baseline.xml) +The `qodana-backend.sarif.json` and `qodana-frontend.sarif.json` files can contain [baseline](baseline.topic) data for the `backend` and `frontend` projects. Here are the contents of the `root/` folder: @@ -97,47 +97,47 @@ GitHub Actions. ### Docker You can inspect your monorepo in the `root/` folder using either [Docker](docker-images.md) or -[%product% CLI](https://github.com/JetBrains/qodana-cli). +[%instance% CLI](https://github.com/JetBrains/qodana-cli). -You can use %product% CLI only with Azure and CircleCI. +You can use %instance% CLI only with Azure and CircleCI. - + docker run --rm \ -v "$PWD":/data/project/ \ jetbrains/qodana-jvm:latest-eap \ --source-directory backend \ --baseline qodana-backend.sarif.json - - + + docker run --rm \ -v "$PWD":/data/project/ \ jetbrains/qodana-js:latest-eap \ --source-directory frontend \ --baseline qodana-frontend.sarif.json - + - + qodana scan \ --linter jetbrains/qodana-jvm:latest-eap \ --source-directory backend \ --baseline qodana-backend.sarif.json - - + + qodana scan \ --linter jetbrains/qodana-js:latest-eap \ --source-directory frontend \ --baseline qodana-frontend.sarif.json - + ### GitHub Actions -You can use the [Qodana Scan](github.md) GitHub action for running %product% on GitHub. Here is the GitHub action +You can use the [Qodana Scan](github.md) GitHub action for running %instance% on GitHub. Here is the GitHub action configuration for inspecting the monorepo: ```yaml diff --git a/topics/native-mode.md b/topics/native-mode.md index 44214fee..c83f8dc2 100644 --- a/topics/native-mode.md +++ b/topics/native-mode.md @@ -1,11 +1,11 @@ [//]: # (title: Native mode) -By default, %product% runs its linters using Docker based on Linux images. -In specific cases, you have to deal with private packages or run %product% on the operating systems that +By default, %instance% runs its linters using Docker based on Linux images. +In specific cases, you have to deal with private packages or run %instance% on the operating systems that provide incomplete support for Docker. -To overcome this, starting from version 2023.3 %product% supports the native mode for the [](qodana-dotnet.md) mode by default. -In this case, %product% reuses its execution environment, which lets you execute %product% in exactly the same +To overcome this, starting from version 2023.3 %instance% supports the native mode for the [](qodana-dotnet.md) mode by default. +In this case, %instance% reuses its execution environment, which lets you execute %instance% in exactly the same environment as you use for building the projects, use the correct operating system, have access to all repository credentials, and resolve dependencies. @@ -16,49 +16,49 @@ credentials, and resolve dependencies. Make sure that you have a proper version of the .NET SDK and all required dependencies installed on your machine. -Build the project before inspecting it using %product%. You can do it by using the [`bootstrap`](before-running-qodana.md) +Build the project before inspecting it using %instance%. You can do it by using the [`bootstrap`](before-running-qodana.md) option of the [`qodana.yaml`](qodana-yaml.md) file. -The project building and artifact packaging stages should occur before %product% or simultaneously with it. Because -running %product% may affect the project state and its files, we recommend that you avoid reusing the same directory +The project building and artifact packaging stages should occur before %instance% or simultaneously with it. Because +running %instance% may affect the project state and its files, we recommend that you avoid reusing the same directory in your build pipelines any further. -You can also provide %product% with a pre-built project, or specify the build steps in your CI/CD pipeline. In this +You can also provide %instance% with a pre-built project, or specify the build steps in your CI/CD pipeline. In this case, in your repository create the empty `qodana.yaml` file to eliminate warnings related to project building. -In your operating system, save the `QODANA_TOKEN` environment variable containing the %product% Cloud +In your operating system, save the `QODANA_TOKEN` environment variable containing the %instance% Cloud [project token](project-token.md). -[Install Qodana CLI](Quick-start.xml#quickstart-run-using-cli) on the machine where you plan to run %product%. +[Install Qodana CLI](Quick-start.topic#quickstart-run-using-cli) on the machine where you plan to run %instance%. -Starting from the version 2023.3 of %product%, the sanity inspection will report in case the `qodana.yaml` file +Starting from the version 2023.3 of %instance%, the sanity inspection will report in case the `qodana.yaml` file containing the `bootstrap` option is missing in your project directory. The [`bootstrap`](before-running-qodana.md) option should contain instructions for building the project. If you do not wish to build the project, you can disable -this inspection using the `--disable-sanity` option, add this inspection to a [baseline](baseline.xml), or create the `qodana.yaml` +this inspection using the `--disable-sanity` option, add this inspection to a [baseline](baseline.topic), or create the `qodana.yaml` file that will contain the `ide: QDNET` configuration. We recommend running the native mode on the same machine where you build a project because this can guarantee -that %product% has access to private NuGet feeds. +that %instance% has access to private NuGet feeds. ## How it works Assuming that you have already installed [Qodana CLI](https://github.com/JetBrains/qodana-cli) and followed the instructions -from the [previous section](#Before+you+start), you have two options for running %product% in the native mode: +from the [previous section](#Before+you+start), you have two options for running %instance% in the native mode: - + qodana scan \    --ide QDNET - -

    This command will download the required JetBrains IDE binary file and start %product%.

    + +

    This command will download the required JetBrains IDE binary file and start %instance%.

    If you have already specified ide: QDNET in the qodana.yaml file, you do not have to use it in this command, so this command is already sufficient:

    - qodana scan + qodana scan
    -

    In the qodana.yaml file, save the ide: QDNET configuration. Run %product% using this +

    In the qodana.yaml file, save the ide: QDNET configuration. Run %instance% using this command:

    - qodana scan + qodana scan
    diff --git a/topics/new-in-2023-2.md b/topics/new-in-2023-2.md index fd48c558..ad677dcc 100644 --- a/topics/new-in-2023-2.md +++ b/topics/new-in-2023-2.md @@ -1,21 +1,21 @@ [//]: # (title: New in version 2023.2) -Version 2023.2 of %product% contains new features, such as: +Version 2023.2 of %instance% contains new features, such as: * [Code coverage](code-coverage.md) to analyze code coverage in your project -* [Quick-fix](quick-fix.md) to automatically fix the problems detected by %product% +* [Quick-fix](quick-fix.md) to automatically fix the problems detected by %instance% * [Vulnerability checker](vulnerability-checker.md) to monitor your project for presence of vulnerabilities of third-party software -Besides that, now %product% provides the new [](qodana-python-community.md) linter. +Besides that, now %instance% provides the new [](qodana-python-community.md) linter. -If you wish to try this version of %product% before the release date, you can use the `eap` linters. For example, +If you wish to try this version of %instance% before the release date, you can use the `eap` linters. For example, you can use the `jetbrains/qodana-jvm:2023.2` image for the [](qodana-jvm.md) linter, or `jetbrains/qodana-dotnet:2023.2` in case of the [](qodana-dotnet.md) linter. ## Inspection update -Several new inspections are now available across all %product% linters as per 2023.2: +Several new inspections are now available across all %instance% linters as per 2023.2: | Id | Description | Severity | Default mode | |----------------------------------------------------|--------------------------------|-----------|--------------| diff --git a/topics/new-in-2023-3.md b/topics/new-in-2023-3.md index 316f2974..f54c8365 100644 --- a/topics/new-in-2023-3.md +++ b/topics/new-in-2023-3.md @@ -1,11 +1,11 @@ [//]: # (title: New in version 2023.3) -Version 2023.3 of %product% contains new things, such as: +Version 2023.3 of %instance% contains new things, such as: -* The [](qodana-dotnet-community.md) linter is available starting from this version of %product% +* The [](qodana-dotnet-community.md) linter is available starting from this version of %instance% * [Code coverage](code-coverage.md) is now available for the [](qodana-dotnet.md), [](qodana-python.md), and [](qodana-go.md) linters * The native mode is now available for the [](qodana-dotnet.md) linter -* The [](qodana-dotnet.md) linter now supports the [license audit](license-audit.xml) feature +* The [](qodana-dotnet.md) linter now supports the [license audit](license-audit.topic) feature * The [vulnerability checker](vulnerability-checker.md) feature now contains additional inspections ## Inspection update diff --git a/topics/php-language-upgrade.xml b/topics/php-language-upgrade.topic similarity index 63% rename from topics/php-language-upgrade.xml rename to topics/php-language-upgrade.topic index 3b48450c..69cdb6c6 100644 --- a/topics/php-language-upgrade.xml +++ b/topics/php-language-upgrade.topic @@ -1,13 +1,13 @@ - - + + - +

    If you need to see how migration from one PHP version to another will affect your code quality, you can - use the php-migration %product% scenario. If you run this scenario, you will be able + use the php-migration %instance% scenario. If you run this scenario, you will be able to see the codebase problems that will arise after you upgrade to a newer PHP version.

    This feature is supported by the linter and available under the Ultimate and Ultimate Plus @@ -15,73 +15,73 @@ PHP language migration -

    You can configure this scenario either in the qodana.yaml file or invoke it +

    You can configure this scenario either in the qodana.yaml file or invoke it using the CLI.

    - The CLI options override the settings of the qodana.yaml file. - + The CLI options override the settings of the qodana.yaml file. + script: name: php-migration parameters: fromLevel: <old-php-version> toLevel: <upgraded-php-version> - -

    This snippet specifies the php-migration scenario using the - name parameter. The fromLevel and - toLevel parameters denote the old and upgraded PHP versions respectively.

    + +

    This snippet specifies the php-migration scenario using the + name parameter. The fromLevel and + toLevel parameters denote the old and upgraded PHP versions respectively.

    -

    This is the example of the qodana.yaml configuration:

    +

    This is the example of the qodana.yaml configuration:

    - + script: name: php-migration parameters: fromLevel: 7.1 toLevel: 8.0 - +

    Here, you have two options for running this feature:

    - + qodana scan \ --script php-migration:<old-php-version>-to-<upgraded-php-version> - + - + docker run \ -v <source-directory>/:/data/project/ \ jetbrains/qodana-<linter> \ --script php-migration:<old-php-version>-to-<upgraded-php-version> - + -

    This snippet specifies the php-migration scenario for the - --script option followed by the colon : - character, and PHP versions separated by the -to- character combination. +

    This snippet specifies the php-migration scenario for the + --script option followed by the colon : + character, and PHP versions separated by the -to- character combination.

    This is the example of the CLI command:

    - + qodana scan \ --script php-migration:7.1-to-8.0 - + - + docker run \ -v <source-directory>/:/data/project/ \ jetbrains/qodana-<linter> \ --script php-migration:7.1-to-8.0 - +
    @@ -91,7 +91,7 @@

    To show how the language migration feature works, the following PHP code snippet will be inspected:

    - + function f($a) { switch ($a) { @@ -103,11 +103,11 @@ return 3; } } - + -

    If you run %product% with version 7.1 of the PHP runtime, the report will contain the following problems:

    +

    If you run %instance% with version 7.1 of the PHP runtime, the report will contain the following problems:

    - + Analysis results: 2 problems detected @@ -116,11 +116,11 @@ Missing return type declaration Info 1 Unused declaration Info 1 - + -

    Running %product% with version 8.0 of the PHP runtime will produce the following output:

    +

    Running %instance% with version 8.0 of the PHP runtime will produce the following output:

    - + Analysis results: 3 problems detected @@ -130,18 +130,18 @@ Unused declaration Info 1 'switch' can be replaced with 'match' expression Info 1 - + -

    Running %product% with the migration feature enabled will produce the following report:

    +

    Running %instance% with the migration feature enabled will produce the following report:

    - + Analysis results: 1 problems detected Grouping problems by severity: Info: 1 Name Severity Count problems 'switch' can be replaced with 'match' expression Info 1 - +

    As you can see, the migration report contains only the problem contained in the version 8.0 report and missing from the version 7.1 report.

    diff --git a/topics/pricing.md b/topics/pricing.md index 0b5bcac2..03a1d01f 100644 --- a/topics/pricing.md +++ b/topics/pricing.md @@ -6,9 +6,9 @@ Depending on your needs, you can choose a suitable license described in this tab |---------------|-------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | Community | Free | Best suited to solving isolated problems | | Ultimate | See [Subscription Options and Pricing](https://www.jetbrains.com/qodana/buy/) for details | Designed for solving various business tasks. A trial version is available. | -| Ultimate Plus | See [Subscription Options and Pricing](https://www.jetbrains.com/qodana/buy/) for details | Comes with all the same functionality as the Ultimate license, but also includes additional [features](features.xml) and unlimited historical data storage. A trial version is available. | +| Ultimate Plus | See [Subscription Options and Pricing](https://www.jetbrains.com/qodana/buy/) for details | Comes with all the same functionality as the Ultimate license, but also includes additional [features](features.topic) and unlimited historical data storage. A trial version is available. | -Here are the links to essential %product% documents: +Here are the links to essential %instance% documents: * [Subscription Options and Pricing](https://www.jetbrains.com/qodana/buy/) * [Terms of Service](https://www.jetbrains.com/legal/docs/agreements/qodana/license/) related to the linters licensed under the Ultimate and Ultimate Plus licenses @@ -20,7 +20,7 @@ Here are the links to essential %product% documents: This section enumerates the technologies and features that are available for each license. All technologies and features mentioned in the Ultimate and Ultimate Plus columns are available for both the trial and -full versions of the respective %product% license type. +full versions of the respective %instance% license type. ### Programming languages @@ -121,14 +121,14 @@ Here, C and C++ inspections are applicable for projects containing `.sln` files. |-------------------------------------------------------|-----------|-----------|---------------| | [Monorepo support](monorepo-project.md) | ✔ | ✔ | ✔ | | [CI/CD integrations](ci.md) | ✔ | ✔ | ✔ | -| [Custom plugin support](extending-qodana-plugins.xml) | ✔ | ✔ | ✔ | -| [](baseline.xml) | ✔ | ✔ | ✔ | -| [](quality-gate.xml) | ✔ | ✔ | ✔ | +| [Custom plugin support](extending-qodana-plugins.topic) | ✔ | ✔ | ✔ | +| [](baseline.topic) | ✔ | ✔ | ✔ | +| [](quality-gate.topic) | ✔ | ✔ | ✔ | | Docker and Kubernetes support | ❌ | ✔ | ✔ | | [](code-coverage.md) | ❌ | ✔ | ✔ | | [](quick-fix.md) | ❌ | ✔ | ✔ | -| [](php-language-upgrade.xml) | ❌ | ✔ | ✔ | -| [](license-audit.xml) | ❌ | ❌ | ✔ | +| [](php-language-upgrade.topic) | ❌ | ✔ | ✔ | +| [](license-audit.topic) | ❌ | ❌ | ✔ | | [](taint-analysis.md) | ❌ | ❌ | ✔ | | [](vulnerability-checker.md) | ❌ | ❌ | ✔ | @@ -164,13 +164,13 @@ This is the list of linters that require either the Ultimate or the Ultimate Plu ## Qodana licensing: an overview The Community license is free to use, though its functionality is limited only to the Community versions of Qodana -linters. Furthermore, it lacks numerous helpful [features](features.xml) that are available in the paid versions and +linters. Furthermore, it lacks numerous helpful [features](features.topic) that are available in the paid versions and only offers a limited period for [data storage](#pricing-data-storage) in Qodana Cloud. The trial versions of the Ultimate or Ultimate Plus licenses are limited by a 60-day trial period. After the trial license expires, you'll have to purchase either the Ultimate or the Ultimate Plus license to continue using Qodana. -You can study the [%product% Terms of Service](https://www.jetbrains.com/legal/docs/agreements/qodana/license/) on the JetBrains website. +You can study the [%instance% Terms of Service](https://www.jetbrains.com/legal/docs/agreements/qodana/license/) on the JetBrains website. ## Frequently asked questions @@ -190,7 +190,7 @@ page for payment details. After the payment, you will be redirected to the [onbo Qodana Cloud. 2. During the onboarding stage on the Qodana Cloud website, you’ll generate a public key that will be -identified by %product%, as well as a project token for uploading %product% reports to your first project. +identified by %instance%, as well as a project token for uploading %instance% reports to your first project. Although the Community license does not require a Qodana Cloud account, it will be more convenient to use Qodana Cloud in this case too. @@ -215,22 +215,22 @@ licenses will expire, which means users will have to switch to a trial license. A trial license is a time-limited version of either the Ultimate or the Ultimate Plus license. Each trial license duration is limited to 60 days, after which this type of license is no longer valid and cannot be used further. To -continue using %product%, you’ll have to buy a full version of your license. +continue using %instance%, you’ll have to buy a full version of your license. -### What are %product% linters and Qodana Cloud designed for? +### What are %instance% linters and Qodana Cloud designed for? -Both %product% linters and Qodana Cloud are essential parts of the product named %product%. You can inspect your codebase -using %product% linters, and you can use Qodana Cloud for managing your projects and licenses, as well as collecting -%product% reports in a single place. For more details, see the [](cloud-use-cases.xml) page of the Qodana Cloud +Both %instance% linters and Qodana Cloud are essential parts of the product named %instance%. You can inspect your codebase +using %instance% linters, and you can use Qodana Cloud for managing your projects and licenses, as well as collecting +%instance% reports in a single place. For more details, see the [](cloud-use-cases.topic) page of the Qodana Cloud documentation. -### Can I use %product% linters without creating a Qodana Cloud account? +### Can I use %instance% linters without creating a Qodana Cloud account? If you plan to use the Ultimate or Ultimate Plus licenses, you have to create an account at Qodana Cloud and accomplish the [onboarding](cloud-onboarding.md) stage. For more details, see [the first question](#faq-start-using-qodana) in this section. -You can run %product% linters available under the Community license without using Qodana Cloud, but there are no obstacles +You can run %instance% linters available under the Community license without using Qodana Cloud, but there are no obstacles to using Qodana Cloud in this case. ### Do I need to provide payment details for a trial license? @@ -257,7 +257,7 @@ the unlimited number of times. In this case, however, all purchased subscription The total license cost is based on the number of active contributors. An active contributor is a person who commits to any number of Qodana Cloud projects during the latest 90 days, within the same organization, and under a single -license. During the [onboarding](cloud-onboarding.md) stage and while creating a new [project](cloud-projects.xml), Qodana +license. During the [onboarding](cloud-onboarding.md) stage and while creating a new [project](cloud-projects.topic), Qodana Cloud requests your repository URL to calculate contributors. The minimal number of contributors used for licensing is 3 (three). The number of actual contributors is calculated based on the subscription plan. For example, using the monthly @@ -267,16 +267,16 @@ be recalculated for 20 (twenty) contributors. At the end of the second month, th again based on the actual number of active contributors found within that month. For more details, see the **Fees and Payments** section of the -[%product% Terms of Service](https://www.jetbrains.com/legal/docs/agreements/qodana/license/). +[%instance% Terms of Service](https://www.jetbrains.com/legal/docs/agreements/qodana/license/). ### What is the minimum number of contributors I can buy the license for? -You can buy a %product% license for 3 (three) or more contributors. +You can buy a %instance% license for 3 (three) or more contributors. ### What do I need to know about subscription billing? Here is the billing description taken from the -[%product% Terms of Service](https://www.jetbrains.com/legal/docs/agreements/qodana/license/): +[%instance% Terms of Service](https://www.jetbrains.com/legal/docs/agreements/qodana/license/): **Monthly Subscriptions** – At the beginning of each Subscription Period, You will specify the expected number of Active Contributors (3 or more). At the end of the Subscription Period, You will be charged Subscription fees according @@ -305,7 +305,7 @@ the number of prepaid Active Contributors, We will not refund or otherwise credi Qodana Cloud stores all information about your Ultimate and Ultimate Plus licenses. This explains why you need to create a Qodana Cloud account before running Qodana. Apart from this functionality, Qodana Cloud provides several other -[helpful features](cloud-use-cases.xml). +[helpful features](cloud-use-cases.topic). ### Which minimum steps do I need to perform in Qodana Cloud? @@ -319,14 +319,12 @@ No, you can use the Community version of Qodana in any open-source or proprietar Compared to the Ultimate license, the Ultimate Plus license provides the following additional features: - -
  • -
  • -
  • - +* [](license-audit.topic) +* [](taint-analysis.md) +* [](vulnerability-checker.md) ### Which licenses are integrated into CI/CD pipelines? -All %product% licenses support integration with the CI/CD solutions described in the [](ci.md) section. +All %instance% licenses support integration with the CI/CD solutions described in the [](ci.md) section. diff --git a/topics/project-token.md b/topics/project-token.md index a92e99ce..89520252 100644 --- a/topics/project-token.md +++ b/topics/project-token.md @@ -1,48 +1,48 @@ [//]: # (title: Project tokens) Generally available [paid linters](pricing.md#pricing-linters-licenses) require that you use the -`QODANA_TOKEN` variable to provide a [project token](cloud-projects.xml#cloud-manage-projects) while running %product%, +`QODANA_TOKEN` variable to provide a [project token](cloud-projects.topic#cloud-manage-projects) while running %instance%, for example: - + qodana scan \ -e QODANA_TOKEN="<qodana-cloud-token>" - + - + docker run \ -v $(pwd):/data/project/ \ -e QODANA_TOKEN="<qodana-cloud-token>" \ jetbrains/qodana-<linter> - + -The `QODANA_TOKEN` variable contains information that %product% linters use for identification and verification. -Based on this, %product% establishes a connection with Qodana Cloud. +The `QODANA_TOKEN` variable contains information that %instance% linters use for identification and verification. +Based on this, %instance% establishes a connection with Qodana Cloud. -Below is the description of interaction between %product% and Qodana Cloud once the connection is established. +Below is the description of interaction between %instance% and Qodana Cloud once the connection is established. ## License verification -The paid %product% linters request and verify license information from a Qodana Cloud [organization](cloud-organizations.xml). +The paid %instance% linters request and verify license information from a Qodana Cloud [organization](cloud-organizations.topic). If the verification step fails, the linter returns an error meaning that you cannot run it using the current license. -For example, you cannot run %product% using an expired license. Nor can you run the +For example, you cannot run %instance% using an expired license. Nor can you run the [Qodana for JVM](qodana-jvm.md) linter using the [Community license](pricing.md#pricing-linters-licenses). To avoid this, you should obtain compatible and up-to-date licenses for each linter that you use. ## Report collection -Additionally, your local %product% report is bound with the project in [Qodana Cloud](cloud-projects.xml). After binding, -you can view actual %product% [reports](cloud-overview-reports.xml) in an aggregated and handy format, as well as +Additionally, your local %instance% report is bound with the project in [Qodana Cloud](cloud-projects.topic). After binding, +you can view actual %instance% [reports](cloud-overview-reports.topic) in an aggregated and handy format, as well as keep a historical overview of older Qodana reports. Once the project token is generated, you can regenerate or delete it as shown in the -[](cloud-projects.xml#cloud-manage-projects) section of the Qodana Cloud documentation. +[](cloud-projects.topic#cloud-manage-projects) section of the Qodana Cloud documentation. ## Linters that require project tokens @@ -62,4 +62,4 @@ This is the list of linters where project token usage is optional: * [](qodana-jvm-android.md) * [](qodana-python-community.md) -Without a project token, you will not be able to upload and study inspection results in [Qodana Cloud](cloud-about.xml). \ No newline at end of file +Without a project token, you will not be able to upload and study inspection results in [Qodana Cloud](cloud-about.topic). \ No newline at end of file diff --git a/topics/qodana-azure-pipelines.md b/topics/qodana-azure-pipelines.md index c31125d6..5efef013 100644 --- a/topics/qodana-azure-pipelines.md +++ b/topics/qodana-azure-pipelines.md @@ -43,10 +43,10 @@ And since most of the Qodana Docker images are Linux-based, the docker daemon mu To send the results to Qodana Cloud, all you need to do is to specify the `QODANA_TOKEN` environment variable in the build configuration. - + 1. In the Azure Pipelines UI, create the `QODANA_TOKEN` [secret variable](https://learn.microsoft.com/en-us/azure/devops/pipelines/process/set-secret-variables?view=azure-devops&tabs=yaml%2Cbash#secret-variable-in-the-ui) and - save the [project token](cloud-projects.xml#cloud-manage-projects) as its value. + save the [project token](cloud-projects.topic#cloud-manage-projects) as its value. 2. In the Azure pipeline file, add `QODANA_TOKEN` variable to the `env` section of the `QodanaScan` task: @@ -56,11 +56,11 @@ To send the results to Qodana Cloud, all you need to do is to specify the `QODAN QODANA_TOKEN: $(QODANA_TOKEN) ``` - + After the token is set for analysis, all Qodana Scan job results will be uploaded to your Qodana Cloud project. -![Qodana Cloud](https://user-images.githubusercontent.com/13538286/214899046-572649db-fe62-49b2-a368-b5d07737c1c1.gif) +![Qodana Cloud](qodana-cloud.gif) ### SARIF SAST Scans Tab diff --git a/topics/qodana-cdnet-docker-readme.xml b/topics/qodana-cdnet-docker-readme.topic similarity index 81% rename from topics/qodana-cdnet-docker-readme.xml rename to topics/qodana-cdnet-docker-readme.topic index 964f1e93..4b29fd8d 100644 --- a/topics/qodana-cdnet-docker-readme.xml +++ b/topics/qodana-cdnet-docker-readme.topic @@ -1,10 +1,10 @@ - - + + - + @@ -16,11 +16,9 @@ -

    - official JetBrains project +

    official JetBrains project

    - -

    +

    The Docker image for the %linter% linter is provided to support different usage scenarios:

    @@ -34,7 +32,7 @@

    You can run the %linter% linter using two methods. Qodana CLI is the easiest method. If necessary, check the installation page to install - Qodana CLI. Alternatively, you can use the Docker commands from the Docker image tab.

    + Qodana CLI. Alternatively, you can use the Docker commands from the Docker image tab.

    This linter requires the Qodana Cloud project token. @@ -67,10 +65,10 @@ Files, file masks, and regions with generated code, where the code analysis is partly disabled (this can only be configured using .DotSettings files)
  • - A place where the code analysis engine should store caches. You can specify it on the Environment | General page of ReSharper options + A place where the code analysis engine should store caches. You can specify it on the Environment | General page of ReSharper options
  • - Target languages (ReSharper | Options | Environment | Products — Features) + Target languages (ReSharper | Options | Environment | Products — Features)
  • @@ -82,21 +80,21 @@

    By default, InspectCode also runs Roslyn analyzers on the target solution. If you want to disable Roslyn analyzers, you can do it in the solution's .DotSettings file, for example:

    - - <wpf:ResourceDictionary xml:space="preserve" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:s="clr-namespace:System;assembly=mscorlib" - xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" - xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> + + <wpf:ResourceDictionary xml:space="preserve" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:s="clr-namespace:System;assembly=mscorlib" + xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" + xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> <!-- Enable/disable Roslyn analyzers and Source Generators --> - <s:Boolean x:Key="/Default/CodeInspection/Roslyn/RoslynEnabled/@EntryValue">False</s:Boolean> + <s:Boolean x:Key="/Default/CodeInspection/Roslyn/RoslynEnabled/@EntryValue">False</s:Boolean> <!-- Include/exclude Roslyn analyzers in Solution-Wide Analysis --> - <s:Boolean x:Key="/Default/CodeInspection/Roslyn/UseRoslynInSwea/@EntryValue">False</s:Boolean> + <s:Boolean x:Key="/Default/CodeInspection/Roslyn/UseRoslynInSwea/@EntryValue">False</s:Boolean> </wpf:ResourceDictionary> - + @@ -114,27 +112,27 @@

    Inspection settings in .editorconfig files are configured similarly to other properties — by adding the corresponding lines:

    - + [inspection_property]=[error | warning | suggestion | hint | none] - +

    For example, you can change the severity level of the Possible 'System.NullReferenceException' inspection to Error with the following line:

    - + resharper_possible_null_reference_exception_highlighting=error - +

    or you can disable the Redundant argument with default value inspection with the following line:

    - + resharper_redundant_argument_default_value_highlighting=none - + Inspection settings from .editorconfig files have higher priority than the settings - configured on the Code Inspection | Inspection Severity page of InspectCode options. + configured on the Code Inspection | Inspection Severity page of InspectCode options.

    You can find EditorConfig property for each inspection on pages in the Code inspection index @@ -148,7 +146,7 @@

    - +

    @@ -159,18 +157,18 @@

    Pull the image from Docker Hub (only necessary to update to the latest version):

    - docker pull jetbrains/%linter-shell% - + docker pull jetbrains/%linter-shell% +

    Run the following command to start inspecting your source code:

    - + docker run \    -v <source-directory>/:/data/project/ \    -v <output-directory>/:/data/results/ \    -e QODANA_TOKEN="<cloud-project-token>" \    jetbrains/%linter-shell% - +

    where source-directory and output-directory are full local paths to, respectively, the project source code directory and the analysis results directory. The @@ -183,13 +181,13 @@

    If you don't need the user interface and prefer to study raw data, use the following command:

    - + docker run \    -v <source-directory>/:/data/project/ \    -v <output-directory>/:/data/results/ \    -e QODANA_TOKEN="<cloud-project-token>" \    jetbrains/%linter-shell% - +

    The output-directory will contain the inspection report.

    If you run the analysis several times in a row, make sure you've cleaned the results directory before @@ -199,19 +197,19 @@

    In the project root directory, run this command to inspect your code and view the inspection report locally:

    - + qodana scan \    -e QODANA_TOKEN="<cloud-project-token>" \    -l %docker-image% \    --show-report - +

    If you don't need the user interface and prefer to study raw data, use the following command:

    - + qodana scan \    -e QODANA_TOKEN="<cloud-project-token>" \    -l %docker-image% \    --results-dir <output-directory> - +

    The output-directory specifies the directory where the SARIF-formatted report will be saved. The QODANA_TOKEN variable refers to the project token required by the @@ -226,21 +224,21 @@

    Use the following command as a task in a generic Shell executor:

    - + docker run \    -v <source-directory>/:/data/project/ \    -v <output-directory>/:/data/results/ \    -e QODANA_TOKEN="<cloud-project-token>" \    jetbrains/%linter-shell% - +

    where source-directory and output-directory are full paths to, respectively, the project source code directory and the analysis results directory. The QODANA_TOKEN variable refers to the project token required by the Ultimate and Ultimate Plus linters.

    -

    Consider using the feature to make the build fail when a certain number - of problems is reached and the feature to compare each new linter +

    Consider using the feature to make the build fail when a certain number + of problems is reached and the feature to compare each new linter run to some initial run selected as a baseline.

    @@ -251,17 +249,17 @@

    Run this command in the project root directory:

    - + qodana scan \    -e QODANA_TOKEN="<cloud-project-token>" \    -l %docker-image% \    --results-dir <output-directory> - +

    This will save inspection results to the directory specified by output-directory.

    -

    You can also apply the feature to make the build fail when a certain number +

    You can also apply the feature to make the build fail when a certain number of problems is reached by using the --fail-threshold option.

    -

    The feature compares each new %linter% run to some initial run using +

    The feature compares each new %linter% run to some initial run using the --baseline and --baseline-include-absent options.

    @@ -280,13 +278,13 @@ This feature is in experimental mode, which means that its operation can be unstable.

    This feature requires that you specify the %linter% name either in the qodana.yaml file, - or using the args configuration option of GitHub, for example: args: --linter,%linter-shell%

    - -

    In GitHub, %product% is implemented as the Qodana Scan GitHub Action.To configure the + or using the args configuration option of GitHub, for example:

    + args: --linter,%linter-shell% +

    In GitHub, %instance% is implemented as the Qodana Scan GitHub Action.To configure the Qodana Scan GitHub Action, save the .github/workflows/code_quality.yml file containing the workflow configuration:

    - + name: Qodana on: workflow_dispatch: @@ -305,22 +303,22 @@ fetch-depth: 0 - name: 'Qodana Scan' uses: JetBrains/qodana-action@v2023.3 - + -

    To authorize in Qodana Cloud and forward reports to it, follow these steps:

    +

    To authorize in Qodana Cloud and forward reports to it, follow these steps:

    In the GitHub UI, create the QODANA_TOKEN encrypted secret and - save the project token as its value.

    + save the project token as its value.

    In a GitHub workflow, add this snippet to invoke the Qodana Scan action:

    - + - name: 'Qodana Scan' uses: JetBrains/qodana-action@v2022.3.3 env: QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }} - +
    @@ -328,11 +326,11 @@ - + - + @@ -346,30 +344,30 @@ option. For example, use this to switch to the Release configuration:

    - + --configuration=Release - +

    Alternatively, you can specify the configuration in qodana.yaml:

    - + dotnet: configuration: Release - +

    By default, the solution platform is set to Any CPU.You can override this using the --platform option:

    - + --platform=x86 - +

    Alternatively, you can specify the platform in qodana.yaml:

    - + dotnet: platform: x86 - +
    diff --git a/topics/qodana-dotnet-community.md b/topics/qodana-dotnet-community.md index 1b5ced99..02a89bee 100644 --- a/topics/qodana-dotnet-community.md +++ b/topics/qodana-dotnet-community.md @@ -4,7 +4,7 @@ - + %linter% is currently in the Early Access, which means it may be not reliable, work not as intended, and contain errors. Any use of the EAP product is at your own risk. Your feedback is very welcome in our @@ -20,7 +20,7 @@ It brings all the smarts from ReSharper, which helps you: * Highlight spelling problems * Improve overall code structure * Introduce coding best practices -* Upload inspection results to [Qodana Cloud](cloud-about.xml) +* Upload inspection results to [Qodana Cloud](cloud-about.topic) This linter requires the Qodana Cloud project token. @@ -29,7 +29,7 @@ It also supports C/C++ inspections for projects containing `.sln` solution files ## Supported features - + ## Analyze a project locally @@ -37,10 +37,10 @@ It also supports C/C++ inspections for projects containing `.sln` solution files If you plan to run %linter% on a local machine, make sure that Docker on this machine is up and running. -By default, %product% tries to locate and employ a single solution file, or, if no solution file is present, +By default, %instance% tries to locate and employ a single solution file, or, if no solution file is present, it tries to find a project file. If your project contains multiple solution files, you need to specify the exact filename using the `--solution` option and a relative path to a solution file. For example, to -make %product% always analyze the `MySolution.sln` solution file, you can use: +make %instance% always analyze the `MySolution.sln` solution file, you can use: %linter% requires the relative path to a solution or a project file from the repository root. @@ -127,7 +127,7 @@ docker run \ {prompt="$"} In this case, in the [`bootstrap`](before-running-qodana.md) section of the [`qodana.yaml`](qodana-yaml.md) file you can specify how to build -your project, or run the build in a pipeline before passing it to %product%. +your project, or run the build in a pipeline before passing it to %instance%. ### Run the linter @@ -141,9 +141,9 @@ docker run \ ``` {prompt="$"} -Here, the `QODANA_TOKEN` variable specifies the [project token](project-token.md). After %product% finishes inspecting +Here, the `QODANA_TOKEN` variable specifies the [project token](project-token.md). After %instance% finishes inspecting your code, you can open [Qodana Cloud](https://qodana.cloud) to see the inspection report. ## Next steps - \ No newline at end of file + \ No newline at end of file diff --git a/topics/qodana-dotnet-docker-readme.xml b/topics/qodana-dotnet-docker-readme.topic similarity index 72% rename from topics/qodana-dotnet-docker-readme.xml rename to topics/qodana-dotnet-docker-readme.topic index 9d928163..cc7ef052 100644 --- a/topics/qodana-dotnet-docker-readme.xml +++ b/topics/qodana-dotnet-docker-readme.topic @@ -1,10 +1,10 @@ - - + + - + @@ -16,18 +16,16 @@ -

    - official JetBrains project +

    official JetBrains project

    - - +

    - +

    @@ -35,37 +33,37 @@ the recommended method for the %linter% linter if you are targeting .NET Framework or have private NuGet feeds:

    - + qodana scan \    --ide QDNET - +

    Here, the --ide option downloads and uses the JetBrains IDE binary file.

    Alternatively, in the qodana.yaml file you can save the ide: QDNET configuration, - and then run %product% using this command:

    - + and then run %instance% using this command:

    + qodana scan -
    +

    This is how you can run the Dockerized version of the %linter% linter:

    - +
    - + This feature is in experimental mode, which means that its operation can be unstable. -

    In GitHub, %product% is implemented as the Qodana Scan GitHub Action.To configure the +

    In GitHub, %instance% is implemented as the Qodana Scan GitHub Action.To configure the Qodana Scan GitHub Action, save the .github/workflows/code_quality.yml file containing the workflow configuration:

    - + name: Qodana on: workflow_dispatch: @@ -84,7 +82,7 @@ fetch-depth: 0 - name: 'Qodana Scan' uses: JetBrains/qodana-action@v2022.3.3 - +

    Using this workflow, Qodana will run on the main branch, release branches, and on the pull requests coming to your repository.

    @@ -101,24 +99,24 @@ - + pr-mode: false - + -

    To authorize in Qodana Cloud and forward reports to it, follow these steps:

    +

    To authorize in Qodana Cloud and forward reports to it, follow these steps:

    In the GitHub UI, create the QODANA_TOKEN encrypted secret and - save the project token as its value.

    + save the project token as its value.

    In a GitHub workflow, add this snippet to invoke the Qodana Scan action:

    - + - name: 'Qodana Scan' uses: JetBrains/qodana-action@v2022.3.3 env: QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }} - +
    @@ -129,8 +127,7 @@

    - This section is intended for users familiar with configuring code analysis via %ide% inspection profiles. + This section is intended for users familiar with configuring code analysis via %ide% inspection profiles.

    @@ -139,7 +136,7 @@ You can pass the reference to the existing profile by mapping the profile to /data/profile.xml inside the container:

    - + docker run \    -p 8080:8080 \    -v <source-directory>/:/data/project/ \ @@ -147,19 +144,19 @@    -v <inspection-profile.xml>:/data/profile.xml \    %docker-image% \    --show-report - +

    You can pass the reference to the existing profile by mapping the profile inside the container:

    - + qodana scan \    -l %docker-image% \    --results-dir <output-directory> \    --profile-path <path-to-profile> \    --show-report - +
    @@ -167,32 +164,32 @@ - + - +

    %linter% does not support authentication for private NuGet repositories using, for example, - Windows Authentication. To overcome this limitation, you can place all required packages within the %product% + Windows Authentication. To overcome this limitation, you can place all required packages within the %instance% cache as shown below:

    In the local filesystem, create the folder that will contain cache. For example, it can be C:/Temp/QodanaCache. - Run %product% + Run %instance% using the --cache-dir C:/Temp/QodanaCache option. Copy all NuGet packages contained by default in the - %userprofile%\.nuget\packages + %userprofile%\.nuget\packages folder to C:/Temp/QodanaCache/nuget. If you have a custom package folder, copy packages - from that folder instead of %userprofile%\.nuget\packages. - Run %product% using the --cache-dir C:/Temp/QodanaCache once more. + from that folder instead of %userprofile%\.nuget\packages. + Run %instance% using the --cache-dir C:/Temp/QodanaCache once more. @@ -202,7 +199,7 @@

    - +

    diff --git a/topics/qodana-dotnet.md b/topics/qodana-dotnet.md index 82afb641..bde6b451 100644 --- a/topics/qodana-dotnet.md +++ b/topics/qodana-dotnet.md @@ -7,7 +7,7 @@ - + %linter% is based on [%ide%](https://www.jetbrains.com/rider/) and provides static analysis for .NET projects. It brings all the smarts from Rider, which help you: @@ -17,13 +17,13 @@ It brings all the smarts from Rider, which help you: * Highlight spelling problems * Improve overall code structure * Introduce coding best practices -* Upload inspection results to [Qodana Cloud](cloud-about.xml) +* Upload inspection results to [Qodana Cloud](cloud-about.topic) %linter% provides inspections for the C, C++, C#, VB.NET, JavaScript, and TypeScript programming languages. C and C++ inspections of %linter% are limited by projects containing `.sln` solution files or `.csproj` project files. Starting from version 2023.3, the functionality of .NET Framework-based project analysis is available in the -[native mode](native-mode.md) of %product%. +[native mode](native-mode.md) of %instance%. This linter requires the Qodana Cloud project token. @@ -31,7 +31,7 @@ Starting from version 2023.3, the functionality of .NET Framework-based project %linter% provides inspections for the following technologies. - +
    Programming languages @@ -103,7 +103,7 @@ Here, C and C++ inspections are applicable for projects containing `.sln` files. ## Supported features - + ## Analyze a project locally @@ -122,30 +122,30 @@ In case a project requires a different version of the SDK, you can set it up bef For example, this command will install the required version of the SDK that is specified in the `global.json` file and located in the root of your project: - + bootstrap: curl -fsSL https://dot.net/v1/dotnet-install.sh | bash -s -- --jsonfile /data/project/global.json -i /usr/share/dotnet - + ### Build the project -Build the project before inspecting it using %product%. You can do it by using the [`bootstrap`](before-running-qodana.md) +Build the project before inspecting it using %instance%. You can do it by using the [`bootstrap`](before-running-qodana.md) option of the [`qodana.yaml`](qodana-yaml.md) file contained in your project directory. -### Configure %product% +### Configure %instance% -Starting from version 2023.3 of %product%, the native mode is the recommended method for running the %linter% linter. +Starting from version 2023.3 of %instance%, the native mode is the recommended method for running the %linter% linter. We recommend running the native mode on the same machine where you build a project because this can guarantee -that %product% has access to private NuGet feeds. +that %instance% has access to private NuGet feeds. #### Specify a solution -

    +

    #### Roslyn analyzers .NET projects have Roslyn analyzers as separate inspections, and you can configure them using the -EditorConfig files. To disable them, you can [configure the %product% profile](custom-profiles.md) using +EditorConfig files. To disable them, you can [configure the %instance% profile](custom-profiles.md) using the `qodana.yaml` file, for example: ```yaml @@ -168,7 +168,7 @@ Another configuration example is available [on GitHub](https://github.com/hybloi ### Run Qodana

    You can run Qodana CLI in the native mode, which is the recommended method -for the %linter% linter. Alternatively, you can use the Docker command from the Docker image tab.

    +for the %linter% linter. Alternatively, you can use the Docker command from the Docker image tab.

    @@ -176,16 +176,16 @@ for the %linter% linter. Alternatively, you can use the Docker command from the installed Qodana CLI on your machine and followed the recommendations from this section, you can run this command in the project root directory:

    - + qodana scan \    --ide QDNET - +

    Here, the --ide option downloads and employs the JetBrains IDE binary file.

    Alternatively, in the qodana.yaml file you can save the ide: QDNET configuration, - and then run %product% using this command:

    - + and then run %instance% using this command:

    + qodana scan -
    +

    To start, pull the image from Docker Hub (only necessary to get the latest version):

    @@ -195,14 +195,14 @@ for the %linter% linter. Alternatively, you can use the Docker command from the

    Start local analysis with source-directory pointing to the root of your project and QODANA_TOKEN referring to the project token:

    - + docker run \    -v <source-directory>/:/data/project/ \    -e QODANA_TOKEN="<cloud-project-token>" \    -p 8080:8080 \    %docker-image% \    --show-report - +

    Open http://localhost:8080 in your browser to examine inspection results. Here, you can also reconfigure the analysis, see the section for details. When done, you can stop the web server by pressing Ctrl-C in the @@ -212,4 +212,4 @@ for the %linter% linter. Alternatively, you can use the Docker command from the ## Next steps - \ No newline at end of file + \ No newline at end of file diff --git a/topics/qodana-go-docker-readme.xml b/topics/qodana-go-docker-readme.topic similarity index 54% rename from topics/qodana-go-docker-readme.xml rename to topics/qodana-go-docker-readme.topic index 3a5bc1ce..ae2eee99 100644 --- a/topics/qodana-go-docker-readme.xml +++ b/topics/qodana-go-docker-readme.topic @@ -1,10 +1,11 @@ - - + + - + + @@ -13,54 +14,52 @@ -

    - official JetBrains project +

    official JetBrains project

    - - +

    - +

    - +
    - +
    - + - + - +

    - +

    - \ No newline at end of file + diff --git a/topics/qodana-go.md b/topics/qodana-go.md index d5c11691..db72617a 100644 --- a/topics/qodana-go.md +++ b/topics/qodana-go.md @@ -8,7 +8,7 @@ - + %linter% is based on [%ide%](%ide-url%) and provides static analysis for Go projects. @@ -18,7 +18,7 @@ %linter% provides inspections for the following technologies. - +
    - + - + - + - + - + +selected, the issues are listed in the order they appear in the file. You can also filter all issues by the baseline - + - + - + - + - - + +
    Programming languages @@ -46,14 +46,14 @@ ## Supported features - + ## Try it now ### Analyze a project locally -

    +

    ## Next steps - \ No newline at end of file + \ No newline at end of file diff --git a/topics/qodana-ide-plugin.md b/topics/qodana-ide-plugin.md index 5caa95f6..6462c30f 100644 --- a/topics/qodana-ide-plugin.md +++ b/topics/qodana-ide-plugin.md @@ -1,99 +1,99 @@ [//]: # (title: JetBrains IDEs) -You can run [%product%](about-qodana.md) in JetBrains IDEs to inspect your codebase. %product% supports several JetBrains IDEs +You can run [%instance%](about-qodana.md) in JetBrains IDEs to inspect your codebase. %instance% supports several JetBrains IDEs installed via [JetBrains Toolbox App](https://www.jetbrains.com/toolbox-app/), such as IntelliJ IDEA, PhpStorm, WebStorm, Rider, GoLand, PyCharm, and Rider. Using the IDE, you can: -* [Run %product% locally](#ide-plugin-run-qodana) +* [Run %instance% locally](#ide-plugin-run-qodana) * [Connect to Qodana Cloud](#ide-plugin-connect-cloud) -* [Configure %product% for running in a CI pipeline](#ide-plugin-cicd) +* [Configure %instance% for running in a CI pipeline](#ide-plugin-cicd) * [Open a report from local storage](#ide-plugin-local-report) -* [Study %product% reports in your IDE](#ide-plugin-study-reports) +* [Study %instance% reports in your IDE](#ide-plugin-study-reports) ## UI overview -In your IDE, navigate to Tools | Qodana. +In your IDE, navigate to Tools | Qodana. The Qodana menu -You can also have access to %product% using the **Problems | Server-Side Analysis** tool window of your IDE. +You can also have access to %instance% using the **Problems | Server-Side Analysis** tool window of your IDE. The Server-Side Analysis tool window -## Run %product% locally +## Run %instance% locally {id="ide-plugin-run-qodana"} -You can run %product% locally and then forward inspection reports to [Qodana Cloud](cloud-about.xml) for storage and analysis purposes. +You can run %instance% locally and then forward inspection reports to [Qodana Cloud](cloud-about.topic) for storage and analysis purposes. -

    In your IDE, navigate to Tools | Qodana | Try Code Analysis with Qodana.

    +

    In your IDE, navigate to Tools | Qodana | Try Code Analysis with Qodana.

    -

    In the Run Qodana dialog, configure the qodana.yaml file.

    -

    Under the text field, configure the options to make %product%:

    +

    In the Run Qodana dialog, configure the qodana.yaml file.

    +

    Under the text field, configure the options to make %instance%:

    -
  • Send inspection results to Qodana Cloud using the project token
  • +
  • Send inspection results to Qodana Cloud using the project token
  • Save qodana.yaml in your project root
  • -
  • Run the baseline feature
  • +
  • Run the baseline feature
  • Configuring Qodana in the Run Qodana dialog -

    Click Run for inspecting your code.

    +

    Click Run for inspecting your code.

    -

    In the Server-Side Analysis tool window, overview inspection results.

    +

    In the Server-Side Analysis tool window, overview inspection results.

    ## Connect to Qodana Cloud {id="ide-plugin-connect-cloud"} -You can log in to Qodana Cloud and connect your project opened in the IDE to a specific Qodana Cloud [project](cloud-projects.xml) to get the -latest %product% report and overview it. +You can log in to Qodana Cloud and connect your project opened in the IDE to a specific Qodana Cloud [project](cloud-projects.topic) to get the +latest %instance% report and overview it. -

    In your IDE, navigate to Tools | Qodana | Log in to Qodana.

    +

    In your IDE, navigate to Tools | Qodana | Log in to Qodana.

    - In the Settings dialog, click Log in. + In the Settings dialog, click Log in.

    Connecting to Qodana Cloud

    This will redirect you to the authentication page.

    -

    Select the Qodana Cloud project to link your local project with.

    +

    Select the Qodana Cloud project to link your local project with.

    Linking the project to Qodana Cloud
    -

    By enabling the Always load most relevant Qodana report option, you can get actual reports automatically retrieved from Qodana Cloud.

    +

    By enabling the Always load most relevant Qodana report option, you can get actual reports automatically retrieved from Qodana Cloud.

    Enabling to load the most relevant reports

    In this case, the IDE will search and fetch from Qodana Cloud the report that has the revision ID corresponding to the current revision ID (HEAD). If this report was not found, the IDE will select the previous report with the revision closest to the current revision ID (HEAD). Otherwise, the IDE retrieves the latest available report from Qodana Cloud.

    -

    In the Server-Side Analysis tool window, overview inspection results.

    +

    In the Server-Side Analysis tool window, overview inspection results.

    -## Configure %product% for CI +## Configure %instance% for CI {id="ide-plugin-cicd"} -Once you logged in to [Qodana Cloud](https://qodana.cloud), you can configure %product% in your CI pipelines. +Once you logged in to [Qodana Cloud](https://qodana.cloud), you can configure %instance% in your CI pipelines. -Depending on the %product% license, you will need to generate and use the -project token. To learn more about project tokens, see +Depending on the %instance% license, you will need to generate and use the +project token. To learn more about project tokens, see the section. -

    In your IDE, navigate to Tools | Qodana | Add Qodana to CI Pipeline

    +

    In your IDE, navigate to Tools | Qodana | Add Qodana to CI Pipeline

    -

    In the Add Qodana to CI Pipeline dialog, follow the recommendations applicable to your CI/CD solution.

    +

    In the Add Qodana to CI Pipeline dialog, follow the recommendations applicable to your CI/CD solution.

    The Add Qodana to CI pipeline dialog
    @@ -101,26 +101,26 @@ the
    section.
    ## Open a local report {id="ide-plugin-local-report"} -You can open and study [SARIF-formatted %product% reports](qodana-sarif-output.md) in your IDE. +You can open and study [SARIF-formatted %instance% reports](qodana-sarif-output.md) in your IDE. - + -

    In your IDE, navigate to Tools | Qodana | Open Local Report.

    +

    In your IDE, navigate to Tools | Qodana | Open Local Report.

    Select the SARIF-formatted report file you would like to open.

    -

    In the Server-Side Analysis tool window, you can overview inspection results.

    +

    In the Server-Side Analysis tool window, you can overview inspection results.

    -
    + ## Qodana report overview {id="ide-plugin-study-reports"} -Using the **Server-Side Analysis** tool window of your IDE, you can view %product% reports and navigate to the code fragments +Using the **Server-Side Analysis** tool window of your IDE, you can view %instance% reports and navigate to the code fragments containing such problems. Navigating to problems in the IDE @@ -138,47 +138,47 @@ This table describes each button from top to bottom:
    Description
    Close ReportClose Report Close the report that was previously opened
    Refresh ReportRefresh Report Download the updated version of the report from Qodana Cloud. This requires that you first link your project with Qodana Cloud
    Log in to Qodana / Logged in to QodanaLog in to Qodana / Logged in to Qodana Log in Qodana Cloud, or log out. This action is a prerequisite for linking your project with Qodana Cloud-based reports
    Link project with Cloud / Linked with CloudLink project with Cloud / Linked with Cloud Link your project with a specific Qodana Cloud-based project, or unlink it. This requires that you first log in to Qodana Cloud
    View OptionsView Options Filter out code issues by their severity and configure their sorting. When no grouping or sorting options are -selected, the issues are listed in the order they appear in the file. You can also filter all issues by the baseline
    Open Editor PreviewOpen Editor Preview Open the preview pane to view the selected issue in its source context. This preview lets you can change the code and apply available quick-fixes
    Expand AllExpand All Expand all nodes to see all issues in the expanded form
    Collapse AllCollapse All Collapse all nodes that were previously expanded
    Show Qodana in BrowserShow Qodana in Browser Open the inspection report using your default browser
    OtherFunctionalities from the Tools | Qodana menuOtherFunctionalities from the Tools | Qodana menu
    diff --git a/topics/qodana-inspection-output.md b/topics/qodana-inspection-output.md index e067f0d3..3784d613 100644 --- a/topics/qodana-inspection-output.md +++ b/topics/qodana-inspection-output.md @@ -35,6 +35,6 @@ In addition to programmatic output, you can generate a human-readable report in - + \ No newline at end of file diff --git a/topics/qodana-js-docker-readme.xml b/topics/qodana-js-docker-readme.topic similarity index 55% rename from topics/qodana-js-docker-readme.xml rename to topics/qodana-js-docker-readme.topic index edd7b3e1..eb37296e 100644 --- a/topics/qodana-js-docker-readme.xml +++ b/topics/qodana-js-docker-readme.topic @@ -1,10 +1,11 @@ - - + + - + + @@ -14,54 +15,52 @@ -

    - official JetBrains project +

    official JetBrains project

    - - +

    - +

    - +
    - +
    - + - + - +

    - +

    -
    \ No newline at end of file +
    diff --git a/topics/qodana-js.md b/topics/qodana-js.md index 7a9535eb..9df0c70c 100644 --- a/topics/qodana-js.md +++ b/topics/qodana-js.md @@ -7,7 +7,7 @@ - + %linter% is based on [%ide%](https://www.jetbrains.com/webstorm/). It provides static analysis for JavaScript or TypeScript projects. @@ -17,7 +17,7 @@ %linter% provides inspections for the following technologies. - +
    Programming languages @@ -62,7 +62,7 @@ ## Supported features - + ## Try it now @@ -92,8 +92,8 @@ include: #### Run analysis -

    +

    ## Next steps - \ No newline at end of file + \ No newline at end of file diff --git a/topics/qodana-jvm-android-docker-readme.xml b/topics/qodana-jvm-android-docker-readme.topic similarity index 55% rename from topics/qodana-jvm-android-docker-readme.xml rename to topics/qodana-jvm-android-docker-readme.topic index e51866f3..242be5af 100644 --- a/topics/qodana-jvm-android-docker-readme.xml +++ b/topics/qodana-jvm-android-docker-readme.topic @@ -1,10 +1,11 @@ - - + + - + + @@ -14,54 +15,52 @@ -

    - official JetBrains project +

    official JetBrains project

    - - +

    - +

    - +
    - +
    - + - + - +

    - +

    -
    \ No newline at end of file +
    diff --git a/topics/qodana-jvm-android.md b/topics/qodana-jvm-android.md index b3617087..6e5c16a9 100644 --- a/topics/qodana-jvm-android.md +++ b/topics/qodana-jvm-android.md @@ -8,9 +8,9 @@ - + -%linter% is based on [%ide%](https://www.jetbrains.com/idea/) with the [Android Support](https://plugins.jetbrains.com/plugin/1792-android-support) plugin and provides static analysis for Android projects. +%linter% is based on [%ide%](https://www.jetbrains.com/idea/) with the [Android Support](https://plugins.jetbrains.com/plugin/1792-android-support) plugin and provides static analysis for Android projects. %linter% provides inspections for Java, Kotlin, and Groovy. @@ -18,7 +18,7 @@ %linter% provides inspections for the following technologies. - +
    Programming languages @@ -67,16 +67,16 @@ ## Supported features - + ## Try it now ### Analyze a project locally -Before running %product%, you can configure the JDK for your project. +Before running %instance%, you can configure the JDK for your project. -

    +

    ## Next steps - \ No newline at end of file + \ No newline at end of file diff --git a/topics/qodana-jvm-community-docker-readme.xml b/topics/qodana-jvm-community-docker-readme.topic similarity index 55% rename from topics/qodana-jvm-community-docker-readme.xml rename to topics/qodana-jvm-community-docker-readme.topic index ca0c56d4..a299a982 100644 --- a/topics/qodana-jvm-community-docker-readme.xml +++ b/topics/qodana-jvm-community-docker-readme.topic @@ -1,10 +1,11 @@ - - + + - + + @@ -14,54 +15,52 @@ -

    - official JetBrains project +

    official JetBrains project

    - - +

    - +

    - +
    - +
    - + - + - +

    - +

    -
    \ No newline at end of file +
    diff --git a/topics/qodana-jvm-community.md b/topics/qodana-jvm-community.md index b99233f2..65457993 100644 --- a/topics/qodana-jvm-community.md +++ b/topics/qodana-jvm-community.md @@ -8,15 +8,15 @@ - + -%linter% is based on [%ide%](https://www.jetbrains.com/idea/). +%linter% is based on [%ide%](https://www.jetbrains.com/idea/). ## Supported technologies %linter% provides inspections for the following technologies. - +
    Programming languages @@ -59,16 +59,16 @@ ## Supported features - + ## Try it now ### Analyze a project locally -Before running %product%, you can configure the JDK for your project. +Before running %instance%, you can configure the JDK for your project. -

    +

    ## Next steps - \ No newline at end of file + \ No newline at end of file diff --git a/topics/qodana-jvm-docker-readme.xml b/topics/qodana-jvm-docker-readme.topic similarity index 56% rename from topics/qodana-jvm-docker-readme.xml rename to topics/qodana-jvm-docker-readme.topic index 8ea985bc..d9bbbe09 100644 --- a/topics/qodana-jvm-docker-readme.xml +++ b/topics/qodana-jvm-docker-readme.topic @@ -1,10 +1,11 @@ - - + + - + + @@ -16,54 +17,52 @@ -

    - official JetBrains project +

    official JetBrains project

    - - +

    - +

    - +
    - +
    - + - + - +

    - +

    -
    \ No newline at end of file +
    diff --git a/topics/qodana-jvm.md b/topics/qodana-jvm.md index 3de5015a..1c5357ad 100644 --- a/topics/qodana-jvm.md +++ b/topics/qodana-jvm.md @@ -8,9 +8,9 @@ - + -%linter% is based on [%ide%](https://www.jetbrains.com/idea/). +%linter% is based on [%ide%](https://www.jetbrains.com/idea/). %linter% provides inspections for Java, Kotlin, and Groovy. @@ -20,7 +20,7 @@ %linter% provides inspections for the following technologies. - +
    Programming languages @@ -90,16 +90,16 @@ ## Supported features - + ## Try it now ### Analyze a project locally -Before running %product%, you can configure the JDK for your project. +Before running %instance%, you can configure the JDK for your project. -

    +

    ## Next steps - \ No newline at end of file + \ No newline at end of file diff --git a/topics/qodana-php-docker-readme.xml b/topics/qodana-php-docker-readme.topic similarity index 55% rename from topics/qodana-php-docker-readme.xml rename to topics/qodana-php-docker-readme.topic index d625a1f1..1b6fde48 100644 --- a/topics/qodana-php-docker-readme.xml +++ b/topics/qodana-php-docker-readme.topic @@ -1,10 +1,11 @@ - - + + - + + @@ -14,54 +15,52 @@ -

    - official JetBrains project +

    official JetBrains project

    - - +

    - +

    - +
    - +
    - + - + - +

    - +

    -
    \ No newline at end of file +
    diff --git a/topics/qodana-php.md b/topics/qodana-php.md index 59c7b6e4..a05b3445 100644 --- a/topics/qodana-php.md +++ b/topics/qodana-php.md @@ -7,9 +7,9 @@ - + -%linter% is based on [%ide%](https://www.jetbrains.com/phpstorm/). +%linter% is based on [%ide%](https://www.jetbrains.com/phpstorm/). This linter requires the Qodana Cloud project token. @@ -17,7 +17,7 @@ %linter% provides inspections for the following technologies. - +
    @@ -69,7 +69,7 @@ see how the path in a SARIF file is set.

    Programming languages @@ -74,14 +74,14 @@ ## Supported features - + ## Try it now ### Analyze a project locally -

    +

    ## Next steps - + diff --git a/topics/qodana-python-community-docker-readme.xml b/topics/qodana-python-community-docker-readme.topic similarity index 55% rename from topics/qodana-python-community-docker-readme.xml rename to topics/qodana-python-community-docker-readme.topic index 4b616eed..4156776b 100644 --- a/topics/qodana-python-community-docker-readme.xml +++ b/topics/qodana-python-community-docker-readme.topic @@ -1,10 +1,11 @@ - - + + - + + @@ -14,54 +15,52 @@ -

    - official JetBrains project +

    official JetBrains project

    - - +

    - +

    - +
    - +
    - + - + - +

    - +

    -
    \ No newline at end of file +
    diff --git a/topics/qodana-python-community.md b/topics/qodana-python-community.md index 69838068..49d97c3a 100644 --- a/topics/qodana-python-community.md +++ b/topics/qodana-python-community.md @@ -8,7 +8,7 @@ - + %linter% is based on [%ide%](https://www.jetbrains.com/pycharm/) and provides static analysis for Python projects. @@ -16,7 +16,7 @@ %linter% provides inspections for the following technologies. - +
    Programming languages @@ -64,7 +64,7 @@ ## Supported features - + ## Try it now @@ -85,8 +85,8 @@ The command will be automatically executed before the analysis. #### Run analysis -

    +

    ## Next steps - \ No newline at end of file + \ No newline at end of file diff --git a/topics/qodana-python-docker-readme.xml b/topics/qodana-python-docker-readme.topic similarity index 55% rename from topics/qodana-python-docker-readme.xml rename to topics/qodana-python-docker-readme.topic index 05133461..49f1c933 100644 --- a/topics/qodana-python-docker-readme.xml +++ b/topics/qodana-python-docker-readme.topic @@ -1,10 +1,11 @@ - - + + - + + @@ -14,54 +15,52 @@ -

    - official JetBrains project +

    official JetBrains project

    - - +

    - +

    - +
    - +
    - + - + - +

    - +

    -
    \ No newline at end of file +
    diff --git a/topics/qodana-python.md b/topics/qodana-python.md index fb10b6b1..b6e998e9 100644 --- a/topics/qodana-python.md +++ b/topics/qodana-python.md @@ -7,7 +7,7 @@ - + %linter% is based on [%ide%](https://www.jetbrains.com/pycharm/) and provides static analysis for Python projects. @@ -17,7 +17,7 @@ %linter% provides inspections for the following technologies. - +
    @@ -42,33 +42,33 @@ You can apply quick-fix strategies using the following available options: -

    Run %product% with the --fixes-strategy option invoked. The QODANA_TOKEN variable +

    Run %instance% with the --fixes-strategy option invoked. The QODANA_TOKEN variable refers to the project token required by the Ultimate and Ultimate Plus linters.

    - + docker run \ -v <source-directory>/:/data/project/ \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> \ --fixes-strategy <cleanup/apply> - + - + qodana scan \ -e QODANA_TOKEN="<cloud-project-token>" \ <--apply-fixes/--cleanup> - +

    You can use the fixesStrategy option in the qodana.yaml file:

    - + fixesStrategy: cleanup/apply - +

    Learn the section for details.

    diff --git a/topics/results.md b/topics/results.md index cc086519..11cf9cc1 100644 --- a/topics/results.md +++ b/topics/results.md @@ -8,6 +8,6 @@ As a result of local analysis, they are contained in [JSON](qodana-sarif-output. the form of [web reports](ui-overview.md). To be able to collect reports and view them in a more convenient form, you can configure forwarding to -[Qodana Cloud](cloud-overview-reports.xml), which is available from local runs and from running in [CI pipelines](ci.md). +[Qodana Cloud](cloud-overview-reports.topic), which is available from local runs and from running in [CI pipelines](ci.md). diff --git a/topics/space-automation.md b/topics/space-automation.md index 1e078833..3fbacd7d 100644 --- a/topics/space-automation.md +++ b/topics/space-automation.md @@ -9,7 +9,7 @@ [Space Automation](https://www.jetbrains.com/help/space/automation-concepts.html) is a CI/CD tool that helps you automate -development workflows in the JetBrains Space environment. This section explains how you can configure and run %product% +development workflows in the JetBrains Space environment. This section explains how you can configure and run %instance% [Docker images](docker-images.md) within Space Automation jobs. ## Prepare your project @@ -20,7 +20,7 @@ file will contain configuration scripts written in [Kotlin](https://kotlinlang.o ## Basic configuration -This is the basic configuration script for running %product% in JetBrains Automation jobs. +This is the basic configuration script for running %instance% in JetBrains Automation jobs. ```kotlin job("Qodana") { @@ -36,21 +36,21 @@ job("Qodana") { ``` The [`container`](https://www.jetbrains.com/help/space/run-a-step-in-a-container.html) block specifies which -[Docker image](docker-images.md) of %product% to run. +[Docker image](docker-images.md) of %instance% to run. The `QODANA_TOKEN` variable refers to the [project token](project-token.md) generated in Qodana Cloud and contained in -the `qodana-token` secret. This token is required by the paid %product% [linters](pricing.md#pricing-linters-licenses), +the `qodana-token` secret. This token is required by the paid %instance% [linters](pricing.md#pricing-linters-licenses), and is optional for using with the Community linters. You can see these sections to learn how to generate the project token: * The [](cloud-onboarding.md) section explains how to get the project token generated while first working with Qodana Cloud -* The [](cloud-projects.xml#cloud-manage-projects) section explains how to create a project in the existing Qodana Cloud organization +* The [](cloud-projects.topic#cloud-manage-projects) section explains how to create a project in the existing Qodana Cloud organization Once the project token is generated, in the **Settings** section of your JetBrains Space environment [create a secret](%Space-secret%) with the `qodana-token` name. Save the project token as the value for this secret. -The `shellScript` block contains the `qodana` command for running %product%, and it can also contain the -[options](docker-image-configuration.xml) that can be used during the run like [quality gate](quality-gate.xml) or -[baseline](baseline.xml). +The `shellScript` block contains the `qodana` command for running %instance%, and it can also contain the +[options](docker-image-configuration.topic) that can be used during the run like [quality gate](quality-gate.topic) or +[baseline](baseline.topic). ## Inspect specific branches @@ -85,7 +85,7 @@ job("Qodana") { ## Quality gate and baseline You can use the `--fail-threshold ` and `--baseline ` lines in the `shellScript` -block to invoke the [quality gate](quality-gate.xml) and [baseline](baseline.xml) features. +block to invoke the [quality gate](quality-gate.topic) and [baseline](baseline.topic) features. ```kotlin job("Qodana") { diff --git a/topics/static-analysis.topic b/topics/static-analysis.topic new file mode 100644 index 00000000..52c91438 --- /dev/null +++ b/topics/static-analysis.topic @@ -0,0 +1,26 @@ + + + + + +

    %instance% implements the static analysis mechanism to automatically analyze your codebase without your participation. + This means that you just run %instance% to inspect your code and expect recommendations on how you could improve + your codebase. No other actions like running additional scripts, downloading external libraries, or any + additional configuring is required.

    + +

    The second fact about static analysis says that your software can be explored by %instance% without building and + deploying your software because code inspection is carried out on the codebase basis. So, no other activities are + required from this side either.

    + +

    Once the static analysis stage is complete, you can explore vulnerabilities and faults in your code and see exact + lines where %instance% detected imperfections. %instance% is equipped with a multitude of + inspections responsible for detecting particular problems.

    + +

    To sum up, static analysis mechanism of %instance% is an efficient way for keeping your software quality under + control. You can observe the list of currently supported technologies, + but keep in mind that this list will be growing over time.

    + + diff --git a/topics/static-analysis.xml b/topics/static-analysis.xml deleted file mode 100644 index 33041613..00000000 --- a/topics/static-analysis.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - -

    %product% implements the static analysis mechanism to automatically analyze your codebase without your participation. - This means that you just run %product% to inspect your code and expect recommendations on how you could improve - your codebase. No other actions like running additional scripts, downloading external libraries, or any - additional configuring is required.

    - -

    The second fact about static analysis says that your software can be explored by %product% without building and - deploying your software because code inspection is carried out on the codebase basis. So, no other activities are - required from this side either.

    - -

    Once the static analysis stage is complete, you can explore vulnerabilities and faults in your code and see exact - lines where %product% detected imperfections. %product% is equipped with a multitude of - inspections responsible for detecting particular problems.

    - -

    To sum up, static analysis mechanism of %product% is an efficient way for keeping your software quality under - control. You can observe the list of currently supported technologies, - but keep in mind that this list will be growing over time.

    - -
    diff --git a/topics/taint-analysis.md b/topics/taint-analysis.md index 03703f9e..91282f37 100644 --- a/topics/taint-analysis.md +++ b/topics/taint-analysis.md @@ -6,7 +6,7 @@ cross-site scripting, path traversal, etc. The core goal of the taint analysis is to determine if unanticipated input can affect program execution in malicious ways. -Taint analysis is supported only by the [Qodana for PHP](qodana-php.md) linter starting from version 2023.1 of %product%. +Taint analysis is supported only by the [Qodana for PHP](qodana-php.md) linter starting from version 2023.1 of %instance%. This feature is available under the Ultimate Plus [license](pricing.md). ## How it works @@ -35,23 +35,23 @@ To prevent such propagation, the following approaches are applied by the Qodana ## Running the taint analysis - +

    In the qodana.yaml file, include the PhpVulnerablePathsInspection inspection into the analysis scope:

    - + include: - name: PhpVulnerablePathsInspection - +

    Alternatively, you can use the inspections section of qodana.yaml:

    - + inspections: - inspection: PhpVulnerablePathsInspection enabled: true - + -
    \ No newline at end of file + \ No newline at end of file diff --git a/topics/teamcity.md b/topics/teamcity.md index 9add1b04..fbbee397 100644 --- a/topics/teamcity.md +++ b/topics/teamcity.md @@ -18,16 +18,20 @@ need to be met: Assuming that you have already created your [project](https://www.jetbrains.com/help/teamcity/configure-and-run-your-first-build.html#Create+your+first+project) and configured your build, follow the steps below. 1. Navigate to your build configuration. + Navigating to the build configuration 2. On the build configuration page, select **Build Steps** from the **Edit configuration** list. + Navigating to the step configuration 3. On the **Build steps** page, click the **Add build step** button. + Creating a new build step 4. From the **Runner type** list, select **Qodana** as a runner. On the **New Build Step** page, you can configure the `Qodana` runner using the basic options. Otherwise, click **Show advanced options** to expand the list of configuration options. + Expanding all configuration options of the Qodana runner 5. Fill in the fields using this description. @@ -40,7 +44,7 @@ using the basic options. Otherwise, click **Show advanced options** to expand th **Report ID** uniquely identifies the report to let you distinguish between multiple reports when several inspection steps are configured within a single build. - The **Forward reports to TeamCity tests** checkbox configures %product% report availability in + The **Forward reports to TeamCity tests** checkbox configures %instance% report availability in the [Test](https://www.jetbrains.com/help/teamcity/build-results-page.html#Tests+Tab) tab of TeamCity UI. Using this option, you can view codebase problems along with other problems detected. @@ -56,24 +60,24 @@ using the basic options. Otherwise, click **Show advanced options** to expand th You can disable certain inspections later using the [`qodana.yaml`](qodana-yaml.md#exclude-paths) file or [Profile settings](ui-overview.md#Adjust+your+inspection+profile) in your HTML report. - **Additional arguments for 'docker run'** configures the arguments accepted by a Docker image, see the [](docker-image-configuration.xml#docker-config-reference-docker-environment) section for details. + **Additional arguments for 'docker run'** configures the arguments accepted by a Docker image, see the [](docker-image-configuration.topic#docker-config-reference-docker-environment) section for details. - **Additional Qodana arguments** lets you extend the default Qodana functionality, see the [Docker image configuration](docker-image-configuration.xml) page for details. + **Additional Qodana arguments** lets you extend the default Qodana functionality, see the [Docker image configuration](docker-image-configuration.topic) page for details. 7. Click **Save**. Now you can run Qodana in the build. ### Configure the project token -The [project token](project-token.md) is required by the paid %product% [linters](pricing.md#pricing-linters-licenses), +The [project token](project-token.md) is required by the paid %instance% [linters](pricing.md#pricing-linters-licenses), and is optional for using with the Community linters. You can see these sections to learn how to generate the project token: * The [](cloud-onboarding.md) section explains how to get the project token generated while first working with Qodana Cloud -* The [](cloud-projects.xml#cloud-manage-projects) section explains how to create a project in the existing Qodana Cloud organization +* The [](cloud-projects.topic#cloud-manage-projects) section explains how to create a project in the existing Qodana Cloud organization To apply the generated project token, follow these steps: -1. In the TeamCity UI, open the build step that will run %product%. -2. In the **Cloud Token** field, insert the [Qodana Cloud token](cloud-projects.xml#cloud-manage-projects) value. +1. In the TeamCity UI, open the build step that will run %instance%. +2. In the **Cloud Token** field, insert the [Qodana Cloud token](cloud-projects.topic#cloud-manage-projects) value. Configuring fields in TeamCity @@ -84,16 +88,20 @@ Custom profile configuration for Qodana linters is stored in `qodana.yaml`. When this file to the working directory manually. Alternatively, you can write a script that will do it for you. 1. Navigate to your build configuration. + Navigating to the build configuration 2. On the build configuration page, select **Build Steps** from the **Edit configuration** list. + Navigating to the step configuration 3. On the **Build steps** page, click the **Add build step** button. + Creating a new build step 4. From the **Runner type** list, select **Command Line**. On the **New Build Step** page, you can configure the `Command Line` runner using the basic options. Otherwise, click **Show advanced options** to expand the list of configuration options. + Expanding all configuration options of the Command Line runner 5. Fill in the fields using the [Command Line](https://www.jetbrains.com/help/teamcity/command-line.html#General+Settings) @@ -124,10 +132,12 @@ this file to the working directory manually. Alternatively, you can write a scri Now that you have configured and run the build, you can observe inspection results in the TeamCity UI. 1. Navigate to the project build page. In the **Overview** tab, click the build entry. + Navigating to the build entry 2. On the build page, navigate to the **Qodana** tab to find the inspection report. To learn more about Qodana reports, see the section of this documentation. + Navigating to the Qodana tab diff --git a/topics/troubleshooting.xml b/topics/troubleshooting.topic similarity index 81% rename from topics/troubleshooting.xml rename to topics/troubleshooting.topic index 70de2c99..2eaf4b68 100644 --- a/topics/troubleshooting.xml +++ b/topics/troubleshooting.topic @@ -1,10 +1,10 @@ - - + + - +

    This section contains information that can help you troubleshoot common problems.

    @@ -49,7 +49,7 @@
    Programming languages @@ -65,7 +65,7 @@ ## Supported features - + ## Try it now @@ -86,8 +86,8 @@ The command will be automatically executed before the analysis. #### Run analysis -

    +

    ## Next steps - \ No newline at end of file + \ No newline at end of file diff --git a/topics/qodana-sarif-output.md b/topics/qodana-sarif-output.md index 7f260b89..f370b36d 100644 --- a/topics/qodana-sarif-output.md +++ b/topics/qodana-sarif-output.md @@ -1,13 +1,13 @@ [//]: # (title: SARIF output) -%product% reports are formatted according to the +%instance% reports are formatted according to the [SARIF specification](https://docs.oasis-open.org/sarif/sarif/v2.1.0/os/sarif-v2.1.0-os.html) and are contained in a JSON file. -The %product% implementation of SARIF follows the general format rules, but also specifies several custom properties +The %instance% implementation of SARIF follows the general format rules, but also specifies several custom properties contained in [property bags](https://docs.oasis-open.org/sarif/sarif/v2.1.0/os/sarif-v2.1.0-os.html#_Toc34317448). ## Report structure -Here is the structure of reports produced by %product%: +Here is the structure of reports produced by %instance%: ```json @@ -30,21 +30,21 @@ Here is the structure of reports produced by %product%: -Each report is represented by a `runs` array containing a single %product% +Each report is represented by a `runs` array containing a single %instance% [`run`](https://docs.oasis-open.org/sarif/sarif/v2.1.0/os/sarif-v2.1.0-os.html#_Toc34317484). This object contains several nested objects, such as: | Object | Description | |---------------------------------------------------------|-----------------------------------------------------------------------| -| [`tool`](#tool) | Information about the %product% linter, plugins and inspections | -| [`invocations`](#invocations) | Result of the %product% invocation | +| [`tool`](#tool) | Information about the %instance% linter, plugins and inspections | +| [`invocations`](#invocations) | Result of the %instance% invocation | | [`versionControlProvenance`](#versionControlProvenance) | The version control system from which the project was checked out | -| [`results`](#results) | Codebase problems detected by %product% | -| [`automationDetails`](#automationDetails) | Identification of the %product% run | +| [`results`](#results) | Codebase problems detected by %instance% | +| [`automationDetails`](#automationDetails) | Identification of the %instance% run | | [`newlineSequences`](#newlineSequences) | The newline sequences that were used for calculating the line numbers | -| [`properties`](#properties) | Custom %product% properties, see below | +| [`properties`](#properties) | Custom %instance% properties, see below | -The custom %product% properties are: +The custom %instance% properties are: | Property | Description | |-----------------|----------------------------------------------------------------------------------------------------------------------| @@ -54,7 +54,7 @@ The custom %product% properties are: ### tool The [`tool`](https://docs.oasis-open.org/sarif/sarif/v2.1.0/os/sarif-v2.1.0-os.html#_Toc34317529) object describes -the %product% [linter](linters.md), bundled plugins, and the available inspections. +the %instance% [linter](linters.md), bundled plugins, and the available inspections. ```json { @@ -121,9 +121,9 @@ The object consists of the following fields: | Field | Description | |------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `name` | ID of the %product% linter | -| `fullName` | Full name of the %product% linter | -| `version` | Version of the %product% linter | +| `name` | ID of the %instance% linter | +| `fullName` | Full name of the %instance% linter | +| `version` | Version of the %instance% linter | | `rules` | Descriptions of the available inspections, as [`reportingDescriptor`](https://docs.oasis-open.org/sarif/sarif/v2.1.0/os/sarif-v2.1.0-os.html#_Toc34317836) objects | | `taxa` | The categories of the inspections, including the relationships between categories | @@ -189,8 +189,8 @@ This object contains the following fields: | Field | Description | |-----------|----------------------------------------| -| `name` | The ID of the %product% plugin | -| `version` | The version of the %product% plugin | +| `name` | The ID of the %instance% plugin | +| `version` | The version of the %instance% plugin | | `rules` | The inspections provided by the plugin | Each inspection from the plugin is described by a @@ -207,9 +207,9 @@ with the following fields: ### invocations -The `invocations` array contains a single element describing the %product% +The `invocations` array contains a single element describing the %instance% [`invocation`](https://docs.oasis-open.org/sarif/sarif/v2.1.0/os/sarif-v2.1.0-os.html#_Toc34317567), -telling whether %product% ran successfully or not. +telling whether %instance% ran successfully or not. ```json { @@ -241,12 +241,12 @@ The possible values for `exitCode` are: | `0` | Successful execution | | `1` | Any internal error | | `137` | Out of memory, the Docker container for Qodana needs at least 6 GB of RAM | -| `255` | Successful execution and exit resulted from the exceeded [`fail-threshold`](quality-gate.xml) property value | +| `255` | Successful execution and exit resulted from the exceeded [`fail-threshold`](quality-gate.topic) property value | Here is the description of the other fields from the `invocations` object: -The `toolExecutionNotifications` field contains notifications generated during a %product% run, such as a reached -[threshold](quality-gate.xml). +The `toolExecutionNotifications` field contains notifications generated during a %instance% run, such as a reached +[threshold](quality-gate.topic). After the linter process has exited successfully, @@ -306,7 +306,7 @@ The `vcsType` property always has the value `Git`. ### results The `results` array describes the problems detected during inspection. -Each problem detected by %product% is described by a separate +Each problem detected by %instance% is described by a separate [`result`](https://docs.oasis-open.org/sarif/sarif/v2.1.0/os/sarif-v2.1.0-os.html#_Toc34317638) object. ```json @@ -346,7 +346,7 @@ Each `result` object consists of the following fields: | `level` | The SARIF [severity level](#SARIF+severity) | | `message` | A [`message`](https://docs.oasis-open.org/sarif/sarif/v2.1.0/os/sarif-v2.1.0-os.html#_Toc34317459) object with the nested `text` field containing the result/problem description in the format of an IntelliJ IDEA message string | | `locations` | Array of the [`location`](https://docs.oasis-open.org/sarif/sarif/v2.1.0/os/sarif-v2.1.0-os.html#_Toc34317670) objects. Always contains a single element comprised of the [`physicalLocation`](#The+physicalLocation+object) and the [`logicalLocations`](#The+logicalLocations+object) objects | -| `partialFingerprints` | Contains hashes for comparing results between different runs. Used by the [baseline](baseline.xml) feature | +| `partialFingerprints` | Contains hashes for comparing results between different runs. Used by the [baseline](baseline.topic) feature | | `baselineState` |

    Indicates whether a linter was executed in baseline mode and can accept the following values:

  • `new` denotes that the problem was detected only in the current run but not in the baseline run
  • `absent` denotes that the problem was detected only in the baseline run but not in the current run
  • `unchanged` denotes that the problem was detected both in the current run and in the baseline run
  • | | `properties` | The `propertyBag` containing the `ideaSeverity` field with the original IntelliJ IDEA inspection severity as a value | @@ -427,7 +427,7 @@ The `physicalLocation` object contains the following fields: |--------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `artifactLocation` |

    The [`artifactLocation`](https://docs.oasis-open.org/sarif/sarif/v2.1.0/os/sarif-v2.1.0-os.html#_Toc34317427) object containing the following fields:

  • `uri` denotes the path relative to the project root
  • `uriBaseId` always has the `SRCROOT` value
  • | | `region` | Contains information about the problem location and the snippet that should be highlighted. See the [section below](#The+region+object) for details | -| `contextRegion` | Contains information about the text that surrounds the snippet from the `region` field. This field is used for comparing problems in the [baseline](baseline.xml) mode | +| `contextRegion` | Contains information about the text that surrounds the snippet from the `region` field. This field is used for comparing problems in the [baseline](baseline.topic) mode | ##### The region object @@ -456,7 +456,7 @@ contains the following fields: | `charOffset` | The number of UTF-16 code units between the beginning of the file and the beginning of the region | | `charLength` | The length of the region, measured in UTF-16 code units | | `snippet` | The [`artifactContent`](https://docs.oasis-open.org/sarif/sarif/v2.1.0/os/sarif-v2.1.0-os.html#_Toc34317422) object containing the `text` field with the value equal to the text of the specified region | -| `sourceLanguage` | Programming language of the inspected snippet. Used for highlighting in the user interface of %product% | +| `sourceLanguage` | Programming language of the inspected snippet. Used for highlighting in the user interface of %instance% | #### The logicalLocations object @@ -504,12 +504,12 @@ The `automationDetails` object contains the following fields: |--------------|----------------------------------------------------------------------------------------------------------------------| | `id` | User-readable string, unique per report | | `guid` | Unique machine-readable report ID | -| `properties` | Additional information about the run, for %product%, it contains the URL of the CI/CD build that produced the report | +| `properties` | Additional information about the run, for %instance%, it contains the URL of the CI/CD build that produced the report | ### newlineSequences The [`newlineSequences`](https://docs.oasis-open.org/sarif/sarif/v2.1.0/os/sarif-v2.1.0-os.html#_Toc34317510) array -contains unique strings, each of which specifies a character sequence that %product% treated as a line break during a run. +contains unique strings, each of which specifies a character sequence that %instance% treated as a line break during a run. ```json { @@ -523,7 +523,7 @@ contains unique strings, each of which specifies a character sequence that %prod ### properties In addition to the inspections configured in the inspection profile, -%product% runs a few extra inspections for sanity-checking the project configuration. +%instance% runs a few extra inspections for sanity-checking the project configuration. If these extra inspections find any problems, the project configuration is probably wrong. The results of these extra inspections are recorded in the `qodana.sanity.results` property in the same format as the regular [`result`](#results) objects. @@ -592,6 +592,6 @@ regular [`result`](#results) objects. The [SARIF severity values](https://docs.oasis-open.org/sarif/sarif/v2.1.0/os/sarif-v2.1.0-os.html#_Toc34317648) correspond to the severity values of IntelliJ IDEA according to this table: - + The original IntelliJ IDEA inspection severity is stored in the `propertyBag` field of the same object. diff --git a/topics/qodana-yaml.md b/topics/qodana-yaml.md index cc8fbca0..c03335d2 100644 --- a/topics/qodana-yaml.md +++ b/topics/qodana-yaml.md @@ -28,7 +28,7 @@ It is highly recommended not to store tokens, passwords, or any other secret inf ## Run custom commands -Using the `bootstrap` option of `qodana.yaml`, %product% can perform actions before running inspections. +Using the `bootstrap` option of `qodana.yaml`, %instance% can perform actions before running inspections. To install a specific package in the Qodana container using the `apt` tool, add this line to `qodana.yaml`: @@ -114,21 +114,7 @@ include: ## Set a quality gate -You can configure severity quality gates and code coverage thresholds as shown below: - -```yaml -failureConditions: - severityThresholds: - any: # Project quality gate - critical: # Critical severity - high: - moderate: - low: - info: - testCoverageThresholds: - fresh: # Fresh code coverage - total: # Total code coverage -``` + ## Override the default run scenario @@ -139,11 +125,11 @@ script: : ``` -You can override the standard %product% behavior, which can be helpful in the case of the -[PHP version migration](php-language-upgrade.xml). To inspect your code from this perspective, you can run the +You can override the standard %instance% behavior, which can be helpful in the case of the +[PHP version migration](php-language-upgrade.topic). To inspect your code from this perspective, you can run the `php-migration` scenario. -By default, %product% employs the `default` scenario, which means the normal %product% run equivalent to this setting: +By default, %instance% employs the `default` scenario, which means the normal %instance% run equivalent to this setting: ```yaml script: @@ -194,7 +180,7 @@ You can configure the JDK version for these linters: * [](qodana-jvm-community.md) * [](qodana-jvm-android.md) - + To learn more about configuring JDK, see the [](configure-jdk.md) section. @@ -209,7 +195,7 @@ php: ## Disable sanity checks -By default, sanity checks are enabled in %product%. You can disable them using this snippet: +By default, sanity checks are enabled in %instance%. You can disable them using this snippet: ```yaml disableSanityInspections: true @@ -218,7 +204,7 @@ disableSanityInspections: true ## Configure license audit {id="configure-license-audit"} -You can run the [license audit](license-audit.xml) feature by enabling the `CheckDependencyLicenses` inspection: +You can run the [license audit](license-audit.topic) feature by enabling the `CheckDependencyLicenses` inspection: ```yaml include: @@ -282,7 +268,7 @@ In the example above, you 'tell' Qodana to detect CDDL-1.1, GPL-2.0-with-classpa ### Custom dependencies -Currently, the license audit with %product% is possible only for JPS, Maven, Gradle, npm, yarn and composer projects. If you want to include the dependency that should be mentioned in the report but is impossible to detect from the project sources, you can use `customDependencies` to specify it: +Currently, the license audit with %instance% is possible only for JPS, Maven, Gradle, npm, yarn and composer projects. If you want to include the dependency that should be mentioned in the report but is impossible to detect from the project sources, you can use `customDependencies` to specify it: ```yaml customDependencies: @@ -304,14 +290,14 @@ fixesStrategy: cleanup/apply ## Configure the taint analysis {id="configure-taint-analysis"} - + ## Configure the vulnerability checker To start using the [](vulnerability-checker.md) feature, enable the `VulnerableLibrariesGlobal` inspection: - + ## Manage plugins @@ -330,6 +316,6 @@ Plugin cache is stored in the `/data/cache/plugins` directory. To install third-party software required for your plugins, you can: * Use the [`bootstrap`](before-running-qodana.md) option -* Develop your custom `Dockerfile` that starts with `FROM jetbrains/qodana...`. You can use %product% `Dockerfile` +* Develop your custom `Dockerfile` that starts with `FROM jetbrains/qodana...`. You can use %instance% `Dockerfile` examples available on [GitHub](https://github.com/jetbrains/qodana-docker). diff --git a/topics/qodana_gradle_plugin.md b/topics/qodana_gradle_plugin.md index 63c392ca..952c0188 100644 --- a/topics/qodana_gradle_plugin.md +++ b/topics/qodana_gradle_plugin.md @@ -3,7 +3,7 @@ [![official project](https://jb.gg/badges/official-flat-square.svg)](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub) The [Gradle Qodana plugin](https://plugins.gradle.org/plugin/org.jetbrains.qodana) provides the Gradle interface for running -code inspections provided by %product%. To start, apply the Gradle plugin `org.jetbrains.qodana` in the Gradle +code inspections provided by %instance%. To start, apply the Gradle plugin `org.jetbrains.qodana` in the Gradle configuration file. @@ -31,9 +31,10 @@ Add the following to the `build.gradle.kts` configuration file: +Gradle Plugin Portal -The latest version is: [![](https://img.shields.io/gradle-plugin-portal/v/org.jetbrains.qodana?color=green&label=Gradle%20Plugin%20Portal&logo=gradle)](https://plugins.gradle.org/plugin/org.jetbrains.qodana) +The latest version is: [![](https://img.shields.io/gradle-plugin-portal/v/org.jetbrains.qodana?color=green&label=%qodana-label%&logo=gradle)](https://plugins.gradle.org/plugin/org.jetbrains.qodana) diff --git a/topics/quality-gate.xml b/topics/quality-gate.topic similarity index 54% rename from topics/quality-gate.xml rename to topics/quality-gate.topic index 05dfc44a..3bbde3f7 100644 --- a/topics/quality-gate.xml +++ b/topics/quality-gate.topic @@ -1,76 +1,71 @@ - - + + - + -

    Quality gates are techniques that let you control your code quality and build software that - meets your quality expectations. If a quality gate condition fails, %product% terminates using exit code 255, - which makes a CI/CD workflow or pipeline fail. For example, if a quality gate for a project is set to 10 problems - and code coverage is set to 40%, a build workflow will fail if %product% detects either an eleventh problem or - code coverage below the 40% threshold.

    +

    Quality gate are quality control techniques that let you + control your code quality and build software that meets your quality expectations. If a quality gate condition + fails, %instance% terminates using exit code 255, which makes a CI/CD workflow or pipeline fail. For example, if + a quality gate for a project is set to 10 problems and code coverage is set to 40%, a build workflow will fail + if %instance% detects either an eleventh problem or code coverage below the 40% threshold.

    -

    The terms quality gate, threshold and fail threshold - are used interchangeably.

    +

    The terms quality gate and fail threshold are used interchangeably, + with the former representing a specific feature and the latter referring to a configuration option.

    -

    You can configure a single quality gate for the total number of project problems, multiple quality gates for - each separate problem severity, and - code coverage thresholds as explained in the table below.

    - - - - - - - - - - - - - - - - - - - - - - -
    Quality gate typeSupport in lintersAvailability under licenses
    All lintersCommunity, Ultimate, and Ultimate Plus
    All linters except Community, Ultimate, and Ultimate Plus licenses depending on a linter
    , , , - , , and Ultimate and Ultimate Plus
    +

    %instance% provides this feature in all linters available under Community, Ultimate, and Ultimate Plus + licenses including their trial versions.

    - -

    %product% follows these rules:

    + +

    You can configure a quality gate for a specific problem severity, for all project problems independently of their + severities, and for code coverage thresholds. %instance% follows these rules:

    -
  • Given a total quality gate of A, when finding A problems, the run will succeed. When finding A+1 problems, the run will fail.
  • -
  • Given a severity quality gate of B, when finding B problems, the run will succeed. When finding B+1 problems, the run will fail.
  • -
  • Given a code coverage quality gate of C, when C% of lines are covered, the run will succeed. If only C-1% are covered, the run will fail.
  • +
  • Given a severity threshold of X, when finding X results, the run will succeed. When finding X+1 results, the run will fail.
  • +
  • Given a test coverage threshold of Y, when Y% of lines are covered, the run will succeed. If only Y-1% are covered, the run will fail.
  • +

    If you configure a quality gate for multiple severities and code coverage thresholds, then exceeding just one + setting limitation will make the build fail.

    - If you configure a quality gate and baseline together, you'll be able to keep the number - of new problems under control, and the overall technical debt will not grow beyond a certain threshold. + If you configure a quality gate and baseline together, you'll be able to keep the number + of new problems under control, and the overall technical debt will not grow beyond a certain threshold. -
    +

    Here's a sample quality gate configuration for the qodana.yaml file using + the failureConditions option:

    + + + failureConditions: +   severityThresholds: +     any: 20 # All project problems without considering severities +     critical: 1 +     high: 2 +     moderate: 3 +     low: 4 +     info: 5 +   testCoverageThresholds: +     fresh: 6 # Fresh code coverage +     total: 7 # Total percentage + + +

    You can also employ the fail-threshold option for + all project problems independently of their severities. However, this approach is less flexible compared to + the failureConditions option.

    - + Application of the fail-threshold option overrides configurations made in the qodana.yaml file. -

    You can configure a single quality gate for the entire project using the fail-threshold option - available in all %product% linters, see examples below.

    +

    Below are several configuration examples that use the fail-threshold option.

    - + qodana scan \   -e QODANA_TOKEN="<cloud-project-token>" \   --fail-threshold <number> - +

    In this command, the --fail-threshold <number> option configures the quality gate. The QODANA_TOKEN variable refers to the project token required by the Ultimate and Ultimate Plus @@ -78,13 +73,13 @@

    - + docker run \   -v <source-directory>/:/data/project/ \   -e QODANA_TOKEN="<cloud-project-token>" \   jetbrains/qodana-<linter> \   --fail-threshold <number> - +

    In this command, <source-directory> is the full local path to the project source code, and the --fail-threshold <number> option configures the quality gate. The QODANA_TOKEN variable refers to the project token, which @@ -94,14 +89,14 @@

    You can configure GitHub to block the merging of pull requests if the - quality gate has failed. To do this, you can create a + quality gate has failed. To do this, you can create a branch protection rule as described below:

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

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

    - + name: Qodana on:   pull_request: @@ -124,7 +119,7 @@         uses: JetBrains/qodana-action@v2023.3         env:           QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }} - +

    Instead of main, you can specify your preferred branch here. The QODANA_TOKEN variable refers to the project token @@ -132,20 +127,20 @@ linters.

    Set the fail threshold (number) for the Qodana Action fail-threshold option. - Under your repository name, click Settings. - On the left menu, click Branches. - In the branch protection rules section, click Add rule. - Add main to Branch name pattern. - Select Require status checks to pass before merging. - Search for the Qodana status check, then check it. - Click Create. + Under your repository name, click Settings. + On the left menu, click Branches. + In the branch protection rules section, click Add rule. + Add main to Branch name pattern. + Select Require status checks to pass before merging. + Search for the Qodana status check, then check it. + Click Create.

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

    - + pipeline {    environment {       QODANA_TOKEN=credentials('qodana-token') @@ -170,7 +165,7 @@       }    } } - +

    The QODANA_TOKEN variable in this snippet refers to the project token contained in the qodana-token credentials, @@ -180,7 +175,7 @@

    If you want to run a quality gate in a GitLab CI/CD pipeline, you can save this configuration to the .gitlab-ci.yml file:

    - + qodana:  image:    name: jetbrains/qodana-<linter> @@ -192,7 +187,7 @@ artifacts:   paths:     - qodana - +

    In this sample, the script section specifies the --fail-threshold <number> option. The QODANA_TOKEN variable in this snippet refers to the @@ -201,58 +196,5 @@

    - -

    For all %product% linters except , you can configure a project quality - gate using the following qodana.yaml configuration:

    - -

    All linters except support the - qodana.yaml configuration of a project quality gate using the - severityThresholds.any option:

    - - - failureConditions: -   severityThresholds: -     any: <number-of-project-problems> -
    - - - -

    All linters except let you configure - separate quality gates for each problem severity, and - exceeding just one setting limitation will make the build fail, including the - project quality gate.

    - -

    Here's a qodana.yaml severity quality gate configuration:

    - - - failureConditions: -   severityThresholds: -     any: <number> # Project quality gate -     critical: <number> # Critical severity -     high: <number> -     moderate: <number> -     low: <number> -     info: <number> - - -
    - - - -

    You can configure the total and fresh code coverage - thresholds for the , , , - , , and linters.

    - -

    Here's a qodana.yaml configuration sample:

    - - - failureConditions: -   testCoverageThresholds: -     fresh: <number> # Fresh code coverage -     total: <number> # Total code coverage - -
    -
    - diff --git a/topics/quick-fix.md b/topics/quick-fix.md index 7a871249..1adb7ee6 100644 --- a/topics/quick-fix.md +++ b/topics/quick-fix.md @@ -2,7 +2,7 @@ **Quick-fix** lets you improve development performance through fixing codebase problems automatically. -This feature is available starting from version 2023.2 of %product% and supported by the following linters and their +This feature is available starting from version 2023.2 of %instance% and supported by the following linters and their trial versions: * [Qodana for JVM](qodana-jvm.md) @@ -31,7 +31,7 @@ You can choose between several quick-fix strategies mentioned in this table.
    APPLY -

    %product% attempts to evaluate and fix all problems detected in the codebase.

    +

    %instance% attempts to evaluate and fix all problems detected in the codebase.

    This approach may lead to serious code modifications that can affect the project logic and behavior. These changes should be reviewed before submitting

    -

    For Maven and Gradle projects, %product% uses the following directories to access third-party libraries:

    +

    For Maven and Gradle projects, %instance% uses the following directories to access third-party libraries:

    @@ -66,7 +66,7 @@
    -

    Mounting these directories saves %product% from downloading all dependencies again while using these linters:

    +

    Mounting these directories saves %instance% from downloading all dependencies again while using these linters:

  • @@ -75,9 +75,9 @@ -

    There are several options for examining %product% behavior using the /data/results directory:

    +

    There are several options for examining %instance% behavior using the /data/results directory:

    -
  • The /data/results/projectStructure/Modules.json file lists all modules detected by %product%. +
  • The /data/results/projectStructure/Modules.json file lists all modules detected by %instance%. It should be identical to the list that you expect to see while opening the project in IDEA. If it is not the case, check pom.xml for Maven or the build.gradle file for Gradle configurations.
  • @@ -96,39 +96,39 @@

    A typical project structure can have a directory structure similar to this:

    - + repo/ .git/ project/ ... - + -

    Here, the repo/.git directory contains information that should be accessible by %product%, and - the repo/project directory contains the project that needs to be inspected by %product%. All +

    Here, the repo/.git directory contains information that should be accessible by %instance%, and + the repo/project directory contains the project that needs to be inspected by %instance%. All these samples mount the repo/project directory using the - --project-dir + --project-dir option, while the QODANA_TOKEN variable refers to the Qodana Cloud project token:

    - + docker run \ -v repo/:/data/project/ \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-<linter> \ --project-dir=/data/project/project/ - + - + qodana scan \ -e QODANA_TOKEN="<cloud-project-token>" \ --project-dir=/data/project/project/ - + - + name: Qodana on: workflow_dispatch: @@ -156,36 +156,36 @@ args: --project-dir,project env: QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }} - + -

    During inspections, %product% may report about missing files, packages, modules, or +

    During inspections, %instance% may report about missing files, packages, modules, or classes. In this case, you need to have your project prepared for code inspection. For example, you can - create a script and configure %product% for running it as shown in the + create a script and configure %instance% for running it as shown in the section.

    To disable inspections for a specific file, in the project root save the qodana.yaml file containing this configuration:

    - + exclude: - name: <inspection-name> paths: - <path/to/the/file/from/project/root> - +

    You can also suppress the inspection only for a class by adding the noinspection comment above the class:

    - + // noinspection <inspection-name> export class WorkflowJobSubject { private static subject: Observable<GithubEvent<WorkflowJobEvent>> | null = null; private static GithubWebhookEventSubject: any; - + diff --git a/topics/ui-overview.md b/topics/ui-overview.md index d1115572..12107b72 100644 --- a/topics/ui-overview.md +++ b/topics/ui-overview.md @@ -1,16 +1,16 @@ [//]: # (title: Inspection report) -%product% lets you study inspection reports in an interactive and user-friendly form either -[locally](html-report.md) or in [Qodana Cloud](cloud-overview-reports.xml). +%instance% lets you study inspection reports in an interactive and user-friendly form either +[locally](html-report.md) or in [Qodana Cloud](cloud-overview-reports.topic). Qodana report UI overview Each report contains the following tabs: * **[Actual problems](#ui-overview-actual-problems)** exposes the problems that Qodana detected during the latest inspection -* **[Baseline](#ui-overview-baseline)** lists the problems that were marked as [baseline](baseline.xml) and were not fixed since then -* **[Configuration](#ui-overview-configuration)** lets you configure %product% for future use -* **[License audit](#ui-overview-project-audit)** reveals the [license audit](license-audit.xml) results and shows the dependency licenses that are incompatible with the project license +* **[Baseline](#ui-overview-baseline)** lists the problems that were marked as [baseline](baseline.topic) and were not fixed since then +* **[Configuration](#ui-overview-configuration)** lets you configure %instance% for future use +* **[License audit](#ui-overview-project-audit)** reveals the [license audit](license-audit.topic) results and shows the dependency licenses that are incompatible with the project license The upper-right corner of the report shows [code coverage](code-coverage.md) inspection results. @@ -55,7 +55,7 @@ problems move to this tab. This tab is similar to the **Actual problems** tab. To enable the baseline feature for future inspections, follow the instructions that appear in the report UI. For more information, explore the -[](baseline.xml) section. +[](baseline.topic) section. ## Configuration {id="ui-overview-configuration"} @@ -76,7 +76,7 @@ See the [Adjust your inspection profile](#Adjust+your+inspection+profile) sectio ## License audit {id="ui-overview-project-audit"} - + ## Adjust your inspection profile @@ -93,7 +93,7 @@ suggest that you follow that goal and fix new problems as soon as they appear. In case the number of problems is above your expectations, we suggest using the Qodana features to examine them. When you have no possibility to fix old problems and want to prevent the appearance of new ones, you can run Qodana in -the [baseline](docker-image-configuration.xml#docker-config-reference-baseline) mode. +the [baseline](docker-image-configuration.topic#docker-config-reference-baseline) mode. ## Adjust the analysis scope diff --git a/topics/vscode.md b/topics/vscode.md index b3591351..4e152540 100644 --- a/topics/vscode.md +++ b/topics/vscode.md @@ -1,12 +1,12 @@ [//]: # (title: Visual Studio Code) Visual Studio Code is a source code editor available for Windows, macOS and Linux. This section shows how to use Visual -Studio Code version 1.81 and later for viewing %product% reports from [Qodana Cloud](cloud-about.xml). +Studio Code version 1.81 and later for viewing %instance% reports from [Qodana Cloud](cloud-about.topic). ## Before you start -Make sure that you have a Qodana Cloud [project](cloud-projects.xml), and this project has at -least one inspection [report](cloud-overview-reports.xml) related to the project opened by Visual Studio Code. +Make sure that you have a Qodana Cloud [project](cloud-projects.topic), and this project has at +least one inspection [report](cloud-overview-reports.topic) related to the project opened by Visual Studio Code. Also, check whether Java 11 or later is installed on your machine by running the `java -version` command. If necessary, install Java on your local machine. @@ -59,7 +59,7 @@ You can configure the extension using the following settings:
    baz
    -

    In a Qodana Cloud report, you can check with the Files section to +

    In a Qodana Cloud report, you can check with the Files section to see how the path in a SARIF file is set.

    Feel free to commit the .vscode/settings.json to your repository to share the Qodana settings with your team!

    You can get the Project ID value by opening the project from the Qodana Cloud report using the -Open file in ... button and choosing Visual Studio Code as the tool for opening.

    +Open file in ... button and choosing Visual Studio Code as the tool for opening.

    Alternatively, the ID is contained in your Qodana Cloud project URL. This URL has the following structure: https://qodana.cloud/projects/PROJECT_ID/reports/REPORT_ID. From this URL, use only PROJECT_ID. For example, from the URL https://qodana.cloud/projects/AGvmx/reports/EDKYd you will need AGvmx.

    @@ -89,13 +89,13 @@ download the report, click the icon. ## Inspection report overview {id="vs-code-overview-reports"} -Once configured, the extension connects to Qodana Cloud and downloads the latest %product% report, so you can see +Once configured, the extension connects to Qodana Cloud and downloads the latest %instance% report, so you can see it in the **PROBLEMS** tab of Visual Studio Code. If you still do not see the report in the **PROBLEMS** tab, configure the [**Path prefix**](#vs-code-configure-extension) setting. -On this tab, you can click problem items and navigate to code fragments where %product% detected them. +On this tab, you can click problem items and navigate to code fragments where %instance% detected them. -The PROBLEMS in VS Code +The PROBLEMS in VS Code ## Troubleshooting {id="vs-code-troubleshooting"} @@ -105,7 +105,7 @@ On this tab, you can click problem items and navigate to code fragments where %p You can use the **Qodana: Reset authentication** command to switch between Qodana Cloud accounts without clearing settings. This can be useful in case you have several organizations under different Qodana Cloud accounts. -### I cannot get %product% reports using current settings +### I cannot get %instance% reports using current settings You can use the **Qodana: Reset all settings** command to reset all settings and credentials and try to configure the extension again, or use other settings. diff --git a/topics/vulnerability-checker.md b/topics/vulnerability-checker.md index c4954305..73cf5c93 100644 --- a/topics/vulnerability-checker.md +++ b/topics/vulnerability-checker.md @@ -14,7 +14,7 @@ It sends only hashed names of packages. We never log or process hashes we don't analyze your proprietary or confidential packages. This feature is available under the Ultimate Plus [license](pricing.md) and its trial version and provides the following -%product% inspections: +%instance% inspections: @@ -54,14 +54,14 @@ This feature is available under the Ultimate Plus [license](pricing.md) and its To inspect your code using the vulnerability checker, in the [`qodana.yaml`](qodana-yaml.md) file, enable inspections from the table above. For example, for the `VulnerableLibrariesGlobal` inspection it will be: - + ```yaml include: - name: VulnerableLibrariesGlobal ``` - + After your project is inspected, you can update the packages containing vulnerabilities to versions where such vulnerabilities are fixed, or switch to alternative packages. \ No newline at end of file diff --git a/writerside.cfg b/writerside.cfg new file mode 100644 index 00000000..cfab604d --- /dev/null +++ b/writerside.cfg @@ -0,0 +1,18 @@ + + + + + sentence + URL_ENCODE_PLUS + + + + + + + + + + + +