Qodana 2025.3 Help

Plugins

You can extend Qodana using either existing plugins from repositories like JetBrains Marketplace, or using custom plugins.

Plugins from JetBrains Marketplace

To have a plugin installed from JetBrains Marketplace and running, in the qodana.yaml file specify the plugin option:

plugins:   - id: <plugin.id>

Here, <plugin-id> denotes the Plugin ID from JetBrains Marketplace. 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.

This table provides a couple of plugin examples and respective IDs:

Plugin name

Plugin ID

Grazie Professional

com.intellij.grazie.pro

CheckStyle-IDEA

CheckStyle-IDEA

Php Inspections (EA Extended)

com.kalessil.phpStorm.phpInspectionsEA

Configure and run plugins

To run a plugin using your custom configuration, update the plugin configuration files. For example, for the CheckStyle-IDEA plugin you should modify the .idea/checkstyle-idea.xml file. For other plugins, the configuration files can be located in the configuration directory of your IDE like /root/.config/idea/options.

After saving the modified configurations, run Qodana using the updated configuration file. In case of the CheckStyle-IDEA plugin, the configuration file should be stored in the the .idea directory before Qodana analysis. In other cases, the configuration file should be mounted to the /root/.config/idea/options directory:

qodana scan \    -l <linter>    -e QODANA_TOKEN="<cloud-project-token>" \    -v <path-to-plugin-config>/<config-file>:/root/.config/idea/options/<config-file>
docker run \    -v <project-directory>:/data/project/ \    -e QODANA_TOKEN="<cloud-project-token>" \    -v <path-to-plugin-config>/<config-file>:/root/.config/idea/options/<config-file>    <image>
name: Qodana on: workflow_dispatch: pull_request: push: branches: # Specify your branches here - main # The 'main' branch - 'releases/*' # The release branches jobs: qodana: runs-on: ubuntu-latest permissions: contents: write pull-requests: write checks: write steps: - uses: actions/checkout@v3 with: ref: ${{ github.event.pull_request.head.sha }} # to check out the actual pull request commit, not the merge commit fetch-depth: 0 # a full history is required for pull request analysis - name: 'Qodana Scan' uses: JetBrains/qodana-action@v2025.2 with: args: > --linter,<linter-name>, -v,<path-to-plugin-config>/<config-file>:/root/.config/idea/options/<config-file> env: QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }}

Here, <linter> denotes the linter name, and QODANA_TOKEN refers to a project token.

Custom plugins

Before running a custom plugin using Qodana, prepare the following components:

  • Files containing the plugin code, for example .jar files

  • Plugin configuration contained in a file

  • The inspection name that enables the plugin

Follow this procedure to set up a plugin:

  1. In your project root directory, create the .qodana directory.

  2. In the .qodana directory, save all files related to a plugin. In case the plugin consists of several .jar files, you can create a directory inside .qodana and save them there. You can also download and run plugins from JetBrains Marketplace.

  3. In the qodana.yaml file, enable the inspection as described in the YAML file section.

  4. Run Qodana using examples below:

    qodana scan \    -l <linter>    -e QODANA_TOKEN="<cloud-project-token>" \    -v <plugin-directory>/<plugin-name>.jar:/opt/idea/plugins/<plugin-name>.jar \    -v <path-to-plugin-config>/<config-file>:/root/.config/idea/options/<config-file>
    docker run \    -v <project-directory>:/data/project/ \    -e QODANA_TOKEN="<cloud-project-token>" \    -v <plugin-directory>/<plugin-name>.jar:/opt/idea/plugins/<plugin-name>.jar \    -v <path-to-plugin-config>/<config-file>:/root/.config/idea/options/<config-file>    <image>
    name: Qodana on: workflow_dispatch: pull_request: push: branches: # Specify your branches here - main # The 'main' branch - 'releases/*' # The release branches jobs: qodana: runs-on: ubuntu-latest permissions: contents: write pull-requests: write checks: write steps: - uses: actions/checkout@v3 with: ref: ${{ github.event.pull_request.head.sha }} # to check out the actual pull request commit, not the merge commit fetch-depth: 0 # a full history is required for pull request analysis - name: 'Qodana Scan' uses: JetBrains/qodana-action@v2025.2 with: args: > --linter,<linter-name>, -v,<plugin-directory>/<plugin-name>.jar:/opt/idea/plugins/<plugin-name>.jar, -v,<path-to-plugin-config>/<config-file>:/root/.config/idea/options/<config-file> env: QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }}

    Here, <linter> denotes the linter name, and QODANA_TOKEN refers to a project token.

19 December 2025