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:
Here, <plugin-id> denotes the Plugin ID from JetBrains Marketplace. For example, for the Grazie Professional Plugin ID will be com.intellij.grazie.pro. To find the ID of a specific plugin, on the plugin page of JetBrains Marketplace, click the tab, and then navigate to the section.
Custom plugins
Before running a custom plugin using Qodana, prepare the following components:
Files containing the plugin code, for example
.jarfilesPlugin configuration contained in a file
The inspection name that enables the plugin
Follow this procedure to set up a plugin:
In your project root directory, create the
.qodanadirectory.In the
.qodanadirectory, save all files related to a plugin. In case the plugin consists of several.jarfiles, you can create a directory inside.qodanaand save them there. You can also download and run plugins from JetBrains Marketplace.In the
qodana.yamlfile, enable the inspection as described in the YAML file section.Run Qodana using examples below:
qodana scan \ -l <linter> -e QODANA_TOKEN="<cloud-project-token>" \ -v <plugin-directory>/<plugin-name>.jar:/opt/idea/custom-plugins/<plugin-name>.jar \ -v <path-to-plugin-config>/<config-file>:/opt/idea/custom-plugins/<config-file>docker run \ -v <project-directory>:/data/project/ \ -e QODANA_TOKEN="<cloud-project-token>" \ -v <plugin-directory>/<plugin-name>.jar:/opt/idea/custom-plugins/<plugin-name>.jar \ -v <path-to-plugin-config>/<config-file>:/opt/idea/custom-plugins/<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/custom-plugins/<plugin-name>.jar, -v,<path-to-plugin-config>/<config-file>:/opt/idea/custom-plugins/<config-file> env: QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }}Here,
<linter>denotes the linter name, andQODANA_TOKENrefers to a project token.