gradle-qodana-plugin
Gradle interface to run code inspections from IntelliJ IDEA.
Important: This project requires Gradle 6.6 or newer, however it is recommended to use the latest Gradle available. Update it with:
./gradlew wrapper --gradle-version=VERSION
Issue Tracker
All the issues, feature requests, and support related to the Gradle Qodana Plugin is handled on YouTrack.
If you'd like to file a new issue, please use the following YouTrack | New Issue link.
Docker Image with Qodana tool
Docker Hub: https://hub.docker.com/r/jetbrains/qodana-jvm-community
Gradle Qodana Configuration
Note: Make sure you have
dockeralready installed and available in your environment.
Apply Gradle plugin org.jetbrains.qodana in Gradle configuration file:
Groovy –
build.gradleplugins { id "org.jetbrains.qodana" version "..." }Kotlin DSL –
build.gradle.ktsplugins { id("org.jetbrains.qodana") version "..." }
qodana { } extension configuration
Properties available for configuration in the qodana { } top level configuration closure:
| Name | Description | Type | Default Value |
|---|---|---|---|
autoUpdate |
Automatically pull the latest Docker image before running the inspection. | Boolean |
true |
baselinePath |
Run in baseline mode. Provide the path to an existing SARIF report to be used in the baseline state calculation. | String |
null |
baselineIncludeAbsent |
Include in the output report the results from the baseline run that are absent in the current run. | Boolean |
false |
cachePath |
Path to the cache directory. | String |
null |
dockerContainerName |
Name of the Qodana Docker container. | String |
idea-inspections |
dockerImageName |
Name of the Qodana Docker image. | String |
jetbrains/qodana-jvm-community:latest |
executable |
Docker executable name. | String |
docker |
projectPath |
Path to the project folder to inspect. | String |
project.projectDir |
failThreshold |
A number of problems that will serve as a quality gate. If this number is reached, the inspection run is terminated. | Int |
10000 |
resultsPath |
Path to directory to store results of the task. | String |
"${projectPath}/build/results" |
reportPath |
Path to the directory to store the generated report. | String |
"${projectPath}/build/results/report" |
saveReport |
Generate HTML report. | Boolean |
false |
showReport |
Serve an HTML report on showReportPort port. |
Boolean |
false |
showReportPort |
Default port used to show an HTML report. | Int |
8080 |
Gradle Qodana Tasks
runInspections
Starts Qodana Inspections in a Docker container.
Task relies on the qodana { } extension configuration, however it provides also additional properties and helper methods to configure the Docker image.
Properties
| Name | Description | Type | Default Value |
|---|---|---|---|
disabledPluginsPath |
Path to the list of plugins to be disabled in the Qodana IDE instance to be mounted as /root/.config/idea/disabled_plugins.txt. |
String |
null |
changes |
Inspect uncommitted changes and report new problems. | Boolean |
false |
jvmParameters |
JVM parameters to start IDEA JVM. | List<String> |
empty |
profilePath |
Path to the profile file to be mounted as /data/profile.xml. |
String |
null |
Helper methods
| Name | Description |
|---|---|
bind(outerPort: Int, dockerPort: Int) |
Adds new port binding. |
mount(outerPath: String, dockerPath: String) |
Mounts local directory to the given Docker path. |
env(name: String, value: String) |
Adds an environment variable. |
dockerArg(argument: String) |
Adds a Docker argument to the executed command. |
arg(argument: String) |
Adds a Docker image argument to the executed command. |
updateInspections
Pulls the latest Qodana Inspections Docker container.
Task will be run automatically before the runInspections if the qodana.autoUpdate property will be set to true.
stopInspections
Stops the Qodana Inspections Docker container.
cleanInspections
Cleans up the Qodana Inspections output directory.
Example
Add this to your Gradle configuration file:
Groovy –
build.gradleplugins { // applies Gradle Qodana plugin to use it in project id "org.jetbrains.qodana" version "..." } qodana { // by default result path is $projectPath/build/results resultsPath = "some/output/path" } runInspections { // by default qodana.recommended will be used profilePath = "./someExternallyStoredProfile.xml" }Kotlin –
build.gradle.ktsplugins { // applies Gradle Qodana plugin to use it in project id("org.jetbrains.qodana") version "..." } qodana { // by default result path is $projectPath/build/results resultsPath.set("some/output/path") } tasks { runInspections { // by default qodana.recommended will be used profilePath.set("./someExternallyStoredProfile.xml") } }
Note: Docker requires at least 4GB of memory. Set it in Docker
Preferences > Resources > Memorysection.
Now you can run inspections with runInspections Gradle task:
gradle runInspections
// or
./gradlew runInspections
Full guide for options and configuration parameters could be found on qodana docs page.
Build Locally
Build
Execute Gradle task publishToMavenLocal to build Gradle Qodana Plugin and publish it into local Maven repository.
By default, plugin will be published into ~/.mvn/org/jetbrains/qodana/ directory.
Apply
Add Maven local repository into available repositories in your Gradle project.
For this you need to add following lines at the beginning of settings.gradle[.kts] file:
pluginManagement {
repositories {
mavenLocal()
gradlePluginPortal()
}
}
Apply Gradle Qodana Plugin with snapshot version in Gradle configuration file and mount the Maven Local directory:
Groovy –
build.gradleplugins { id "org.jetbrains.qodana" version "0.1.0-SNAPSHOT" } qodana { mount("/Users/me/.m2", "/root/.m2") }Kotlin DSL –
build.gradle.ktsplugins { id("org.jetbrains.qodana") version "0.1.0-SNAPSHOT" } qodana { mount("/Users/me/.m2", "/root/.m2") }
