1. Overview
SonarQube is a self-managed static code analysis tool for continuous codebase inspection provided by SonarSource.
It's a popular choice used by organizations to :
- Finding and fix bugs and security vulnerabilities in code.
- Analyze code with Static Application Security Testing (SAST).
- Detect a broad range of security issues such as SQL injection vulnerabilities, cross-site scripting (XSS) code injection attacks, buffer overflows, authentication issues, cloud secrets detection and much more.
- Perform branch analysis to spot and eliminate bugs.
You can read more at https://www.sonarsource.com/lp/products/sonarqube/static-code-analysis/
In this article we will look at how to add Coverage to your Spring Boot and Java application.
2. Integrating Sonarqube to your spring boot project
- Add JaCoCo plugin to your dependencies on the
pom.xmlfile as follows:
<dependency> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.11</version> </dependency> Work with the version of choice , you can search at Maven Central https://central.sonatype.com/artifact/org.jacoco/jacoco-maven-plugin
- Then add the following under build plugins:
<build> <plugins> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.11</version> <executions> <execution> <id>prepare-agent</id> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>report</id> <goals> <goal>report</goal> </goals> </execution> </executions> </plugin> </plugins> </build> There is a very good post at https://community.sonarsource.com/t/coverage-test-data-importing-jacoco-coverage-report-in-xml-format/12151 that explains importing JaCoCo coverage report in XML format.
And voila, that's all you need to do.
3. Testing
- Download and run sonarqube via docker:
docker run -d -p 9000:9000 sonarqube
Then access the dashboard at : http://localhost:9000
Back at your project directory run
mvn clean installto build your code thenmvn sonar:sonarto sync to sonarqube.Back at your sonar dashboard you will see your coverage info as follows:
4. Caveat
- To exclude packages or files from the coverage add them as following in the properties section of your
pom.xml:
<properties> <java.version>21</java.version> <jacoco.version>0.8.11</jacoco.version> <sonar.exclusions>**/schemas/**,**/config/**</sonar.exclusions> <sonar.coverage.exclusions>**/schemas/**,**/config/**</sonar.coverage.exclusions> </properties> Run mvn clean install then mvn sonar:sonar and your coverage will update. If a devops pipeline is set, just push your changes and you will see them at your sonarqube dashboard.
- You can also add the Sonarlint plugin/extension to your IDE or Code Editor to allow you catch most of the issues before you commit or build.

Top comments (0)