springboot集成sonar+jacoco检查代码和覆盖率

本文详细介绍了如何在本地环境中配置SonarQube进行代码质量检测,包括设置maven的settings.xml,安装SonarLint插件,以及在pom.xml中添加sonar和jacoco插件依赖。此外,还提供了排除特定文件的方法,以及如何查看检测结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.配置本地maven的settings.xml的maven地址。
    <pluginGroups>
        <pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
    </pluginGroups>
    <profiles>
        <profile>
            <id>sonar</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <!-- Optional URL to server. Default value is http://localhost:9000 -->
                <sonar.host.url>
                  http://172.25.104.13:9000
                </sonar.host.url>
            </properties>
        </profile>
     </profiles>

在这里插入图片描述

2.idea下载SonarLint插件

在这里插入图片描述

3.项目集成sonar,jacoco插件依赖,在pom.xml添加以下内容
<properties>
        <sonar.version>3.6.0.1398</sonar.version>
        <jacoco.version>0.8.4</jacoco.version>
</properties>
    <build>
        <finalName>${project.artifactId}</finalName>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.jacoco</groupId>
                    <artifactId>jacoco-maven-plugin</artifactId>
                    <version>${jacoco.version}</version>
                    <configuration></configuration>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>jacoco-ut</id>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>jacoco-it</id>
                        <goals>
                            <goal>prepare-agent-integration</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>jacoco-site</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.sonarsource.scanner.maven</groupId>
                <artifactId>sonar-maven-plugin</artifactId>
                <version>${sonar.version}</version>
            </plugin>
       </plugins>
 </build>
4.如果需要去除sonar不检索文件,可以这样配置
<properties>
       <sonar.exclusions>**/com/test/*,**/com/test1/*</sonar.exclusions>
</properties>
5.至此全部配置完,可以进行sonar本地检测试验了,按照以下步骤操作。

在这里插入图片描述

6.至此完成sonar本地检测,可以去sonar服务器查看代码检测结果和代码的覆盖率。

在这里插入图片描述

Spring Boot项目采用多模块结构,并结合SonarQube进行代码质量管理以及Jacoco作为代码覆盖率工具时,需要对主项目的SonarQubeJaCoCo配置进行一些调整。以下是基本步骤: 1. **创建SonarQube配置文件**: - 主模块(通常是`parent`或`pom.xml`):在这里,你需要添加SonarQube的插件依赖,例如`sonarsource-gradle-plugin`或`sonar-maven-plugin`。同时配置基本信息如仓库地址、项目Key等。示例: ```xml <build> <!-- ... --> <plugins> <plugin> <groupId>org.sonarsource.scanner.maven</groupId> <artifactId>sonar-maven-plugin</artifactId> <version>${sonarqube.version}</version> </plugin> </plugins> <!-- ... --> </build> ``` 2. **子模块设置**: - 子模块(如`module-a`或`module-b`)中,也需要添加SonarQube插件依赖并关联到主模块,通过`sonar-project-base`属性指定共享的SonarQube配置。例如: ```xml <build> <plugins> <plugin> <groupId>org.sonarsource.scanner.gradle</groupId> <artifactId>sonar-scanner-gradle</artifactId> <configuration> <sonarProjectName>${project.name}-${rootProject.name}</sonarProjectName> <sonarProjectBase>${rootProject.projectDir}</sonarProjectBase> </configuration> </plugin> </plugins> <!-- ... --> </build> ``` 或者使用Gradle的`sonarProperties`任务传递配置: ```groovy sonarProperties { properties.put('sonar.projectKey', 'your_project_key') // 其他共享配置... } ``` 3. **JaCoCo配置**: - 在子模块中,添加JaCoCo插件及其配置。确保在`test`标签内,比如 Gradle 的 `testImplementation` 或 Maven 的 `maven-surefire-plugin` 配置。例如,Gradle中的配置: ```groovy test { usePlugin 'org.jacoco:gradle-jacoco-plugin' tasks.withType(JacocoTestReport) { reports { xml.enabled true csv.enabled true html.enabled true } } tasks.withType(JavaExec) { jacoco { append = true } } } ``` 4. **运行上传报告**: - 执行单元测试后,确保JaCoCo生成了覆盖率报告,并将其上传至SonarQube。这通常在SonarQube扫描之前完成,例如在 Gradle 中: ```groovy tasks.withType(sonarTask) { jacoco { executionData sourceSets.main.jacocoTestReport } } ``` 5. **整合JaCoCoSonarQube**: - 在 SonarQube 的配置中,确保指定了 JaCoCo 格式的覆盖率报告路径。 6. **触发构建**: - 构建主模块,这会触发对所有子模块的分析,包括代码质量覆盖率检查。 记得在配置过程中查看SonarQubeJaCoCo的具体文档,因为版本差异可能会导致细微的变化。此外,如果你有多个子模块,还要注意保持它们之间的依赖关系清晰,以便SonarQube能够正确地分析整个项目。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值