sonarqube for code qualities / sonarqube usage
代码质量检查工具sonarqube的简单使用小册:
sonarqube for code qualities usage by ukyo
相关:
SONARQUBE官网
- Set sonar stuff dependencies with project,
Install sonarlint(plugin) for IDE and sonar scanner
Overview | SonarQube Docs
to push project codes to sonarqube server.
1.给要被代码扫描的项目设定相关sonar依赖,并下载安装sonarlint插件给IDE,以及配置sonar scanner插件
用于推送项目代码到sonarqube远端服务器。
gradle项目大致如下:(其他可查看官网或ford sonarqube相关提示)
buildscript {
repositories {
maven{url "https://plugins.gradle.org/m2/"}
}
dependencies {
//sonar scanner插件,用于将整体测试目录推送到sonarqube server
classpath("org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.0")
}
}
..
plugins {
id "org.sonarqube" version "3.0"
id "jacoco" //(JACOCO用于在单元测试后推送测试结果给sonarqube server)
}
..
apply plugin: 'jacoco'
apply plugin: "org.sonarqube"
sonarqube{
properties{
property "sonar.sourceEncoding","UTF-8"
property "sonar.sources", "src/main/java"
}
}
..
dependencies {
//(jacoco插件也需要加入这个依赖到dependencies)
testImplementation group: 'org.jacoco', name: 'org.jacoco.agent', version: '0.8.8'
}
..
jacoco{
toolVersion = "0.8.8"
reportsDir=file("$buildDir/reports") //指定单元测试报告输出路径 $buildDir一般为build
}
..
jacocoTestReport {
dependsOn test
group = "Reporting"
description="Generate Jacoco coverage reports after running tests."
reports{
xml.enabled true //指定单元报告格式xml
// html.enabled true
}
}
check.dependsOn jacocoTestReport
2.配置jacoco依赖插件到项目(见上面的配置文件),jacoco主要功能是本地执行单元测试命令将代码测试覆盖率推送到sonarqube server。
(1)编写好单元测试(2)项目root目录下执行以下命令,其中login=后数据是sonarqube server生成的token。projectKey=是项目域(Administrator创建分配)
gradle test jacocoTestReport -D'sonar.login=************************' -D'sonar.host.url=https://www.sonarqube.yoursite
.com' -D'sonar.projectKey=yourkey' sonarqube
3.申请sonarqube server的相关参数,如token。
My Account > Security > Generate Tokens
4.配置相关配置文件
sonar-project.properties
# must be unique in a given SonarQube instance
sonar.projectKey=
#----- Default SonarQube server
sonar.host.url=https://www.sonarqube.yoursite.com
#token from sonarqube server
sonar.login=*****************************************
sonar.scm.disabled=false
#test dictionary
sonar.test=src/test
#code source
sonar.java.source=src/main/java
#binaries dictionary
sonar.java.binaries=build/classes
sonar.binaries=build/classes
sonar.groovy.binaries=build/classes
#coverage plugin
sonar.core.codeCoveragePlugin=jacoco
#jacoco plugin reports path
sonar.coverage.jacoco.xmlReportPaths=build/test-results
# --- optional properties ---
# defaults to project key
#sonar.projectName=My project
# defaults to 'not provided'
#sonar.projectVersion=1.0
# Path is relative to the sonar-project.properties file. Defaults to .
#sonar.sources=.
# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8
5.Action
(1)执行命令推送被检项目到sonarqube server
#Windows
sonar-scanner -D'sonar.login=************************************'
#Unix like
sonar-scanner -Dsonar.login=************************************
(2)这时如果配置及一切配置完善,可以从配置文件sonar-project.properties指定的url网站web端
查看被推送的项目以及相关评测。
(3)在代码改动或有新代码时需要重新进行scanner以及编写单元测试确保sonarqube server中项目下Measures tab
选项下的Coverage -> Overall -> Uncoverd Lines关联到的代码进行了测试,并执行测试推送如:
gradle test jacocoTestReport -D'sonar.login=************************' -D'sonar.host.url=https://www.sonarqube.ford
.com' -D'sonar.projectKey=yourkey' sonarqube
6.现阶段通过代码检测需要状态PASSED,覆盖率80%,配合IDE安装的sonarlint插件进行本地代码检查,再进行单元测试,执行以上test命令,在sonarqube server端查看结果即可。
作者:ukyo--碳水化合物
出处:https://www.cnblogs.com/ukzq/p/18039271
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
2023-02-28 antd vue pro中删除分页数据时,假如该页面数据只还有一条,则删除后,页面刷新会爆出404问题, 解决:判定删除数据的索引 index 判断进行refresh true 还是默认 refresh
2023-02-28 清醒时刻记19
2023-02-28 https://stackoverflow.com/questions/37972938/python-django-date-query-unsupported-lookup-date-for-datefield-or-join-on-the
2022-02-28 一个字典缓存周期更新插件的使用 munin
2021-02-28 青浦读书志 - 小说<亿男>
2020-02-28 什么是kafka,怎么使用? (3)
2019-02-28 [bug] - 关于poi导入excel时间格式会减少8小时的问题.