关于SonarQube
SonarQube 使用教程从创建项目到 Maven 扫描并导出代码检测报告一、SonarQube 简介SonarQube 是一个开源的代码质量管理平台可以对代码进行静态分析帮助开发团队发现Bug代码缺陷Vulnerability安全漏洞Code Smell代码坏味道重复代码代码覆盖率问题代码规范问题目前 SonarQube 支持多种开发语言JavaJavaScriptTypeScriptPythonC#GoPHP 等在 Java 项目中通常通过Maven 插件 SonarQube Server实现自动化代码扫描。本文主要介绍Spring Boot / Maven 项目如何接入 SonarQube并生成代码质量检测报告。二、环境准备1. 环境要求本文使用环境软件版本JDK17Maven3.9.xSonarQube10.xMySQL8.xSpring Boot3.x确保本地已经安装java-versionmvn-version示例javaversion17.0.12Apache Maven3.9.9三、安装 SonarQube1. Docker 安装方式推荐使用 Docker 快速部署。创建网络dockernetwork create sonar-net启动 PostgreSQLdockerrun-d\--namesonar-db\--networksonar-net\-ePOSTGRES_USERsonar\-ePOSTGRES_PASSWORDsonar\-ePOSTGRES_DBsonar\postgres:15启动 SonarQubedockerrun-d\--namesonarqube\--networksonar-net\-p9000:9000\-eSONAR_JDBC_URLjdbc:postgresql://sonar-db:5432/sonar\-eSONAR_JDBC_USERNAMEsonar\-eSONAR_JDBC_PASSWORDsonar\sonarqube:community启动成功后访问http://localhost:9000默认账号用户名admin 密码admin首次登录需要修改密码。四、创建 SonarQube 项目登录 SonarQube 后进入Projects ↓ Create Project选择Create a local project填写项目信息例如Project display name: ruoyi-demo Project key: ruoyi-demo点击Set Up选择LocallySonarQube 会生成一个 Token。例如sonar-token: xxxxxxxxxxxxxxxxxxxx这个 Token 后面 Maven 扫描需要使用。注意Token 只显示一次请保存。五、Maven 项目接入 SonarQube1. 添加 Maven 插件修改项目pom.xml增加propertiessonar.projectKeyruoyi-demo/sonar.projectKeysonar.host.urlhttp://localhost:9000/sonar.host.url/propertiesbuildpluginsplugingroupIdorg.sonarsource.scanner.maven/groupIdartifactIdsonar-maven-plugin/artifactIdversion3.11.0.3922/version/plugin/plugins/build其中参数说明sonar.projectKeySonarQube项目Keysonar.host.urlSonarQube地址六、执行 Maven 扫描进入项目目录例如cdD:\workspace\ruoyi-demo执行mvn clean verify sonar:sonar\-Dsonar.token你的TokenWindows 下mvn clean verify sonar:sonar ^-Dsonar.token你的Token执行过程[INFO] BUILD SUCCESS [INFO] ANALYSIS SUCCESSFUL说明代码扫描成功。七、查看 SonarQube 检测结果打开http://localhost:9000进入Projects ↓ ruoyi-demo可以看到1. Bugs代码 Bug 数量例如0 Bugs2. Vulnerabilities安全漏洞例如0 Vulnerabilities3. Code Smells代码质量问题例如25 Code Smells常见问题方法过长参数过多重复代码命名不规范4. Duplications重复代码例如3.2%5. Quality Gate质量门禁例如Passed如果失败Failed需要根据提示修改代码。八、生成 SonarQube 检测报告SonarQube 默认提供 Web 页面查看。但是很多企业需要导出报告。常用方式方式一使用 SonarQube PDF 插件安装插件sonar-pdf-report-plugin安装完成后重启 SonarQube。进入项目Project ↓ More ↓ Generate PDF Report即可生成sonar-report.pdf方式二使用 sonar-scanner-report安装npminstall-gsonar-report执行sonar-report\-uadmin\-padmin\-thttp://localhost:9000\-oreport.html生成report.html浏览器打开即可。方式三通过 SonarQube API 获取数据SonarQube 提供 REST API。查看项目指标GET /api/measures/component示例http://localhost:9000/api/measures/component? componentruoyi-demo metricKeysbugs,vulnerabilities,code_smells返回{component:{measures:[{metric:bugs,value:0},{metric:code_smells,value:25}]}}可以基于 API 自己生成Excel报告Word报告PDF报告九、常见问题1. Maven 扫描失败错误Not authorized原因Token错误。解决重新生成 TokenMy Account ↓ Security ↓ Generate Tokens2. 找不到项目错误Project doesnt exist检查sonar.projectKey是否和 SonarQube 创建项目一致。3. Java版本问题错误Unsupported class file major version原因JDK版本不匹配。检查java-versionSonarQube 10.x 推荐JDK17十、结合 CI/CD 自动扫描实际项目中通常会接入JenkinsGitLab CIGitHub ActionsAzure DevOps例如 Jenkins代码提交↓自动构建↓Maven Test↓SonarQube扫描↓生成质量报告实现代码质量自动检查。十一、总结本文完整介绍了 SonarQube 在 Maven 项目中的使用流程安装 SonarQube创建项目获取 TokenMaven 集成 SonarQube执行代码扫描查看检测结果导出代码质量报告通过 SonarQube可以在开发阶段提前发现代码问题提高项目代码质量。

相关新闻

深入解析AssetRipper:Unity资源逆向工程的核心架构与实战应用

深入解析AssetRipper:Unity资源逆向工程的核心架构与实战应用

1. 项目概述:为什么我们需要深入理解AssetRipper如果你在Unity开发或者逆向分析领域待过一段时间,大概率听说过AssetRipper这个名字。它不是一个官方工具,但在社区里,尤其是在处理那些“只有编译后文件”的Unity项目时&#xff0c…

2026/7/22 7:40:41 阅读更多 →
影刀RPA 科研基金申请:资助机会自动检索与匹配

影刀RPA 科研基金申请:资助机会自动检索与匹配

影刀RPA 科研基金申请:资助机会自动检索与匹配 作者:林焱 | 分类:影刀RPA新手教程 | 难度:★★ 什么情况用 高校科研人员、企业研发团队需要持续关注各类科研基金申请机会:国家自然科学基金(NSFC&#xff0…

2026/7/22 7:40:41 阅读更多 →
从CTF逆向实战到RC4算法复现:IDA与x64dbg动态调试剖析

从CTF逆向实战到RC4算法复现:IDA与x64dbg动态调试剖析

1. 项目概述:从一道CTF题到RC4加密的深度剖析最近在复盘一场CTF比赛的逆向工程题目时,遇到了一个名为crypt.exe的小程序。题目本身不算复杂,但其中对RC4流加密算法的应用,以及如何从二进制可执行文件中剥离出加密逻辑并用Python复…

2026/7/22 7:40:41 阅读更多 →

最新新闻

JavaScript TypeError: undefined is not a function 解析与解决方案

JavaScript TypeError: undefined is not a function 解析与解决方案

1. 错误现象与本质剖析 "TypeError: undefined is not a function"这个报错在JavaScript开发中出现的频率堪比咖啡杯旁的糖包。当你在控制台看到这行红字时,本质上是在说:"你试图把不存在的东西当函数调用"。就像对着空气喊"开…

2026/7/22 8:30:58 阅读更多 →
Python与AI在二手交易平台中的实战应用

Python与AI在二手交易平台中的实战应用

1. 项目概述:当Python遇上AI的二手交易革命 去年帮某高校改造二手书交易平台时,我第一次真正体会到AI加持的二手交易系统能带来多大改变。传统平台往往停留在"发布-浏览-联系"的原始阶段,而结合Python技术栈与AI能力后,…

2026/7/22 8:30:58 阅读更多 →
MediaPipe与Unity坐标系转换实战:解决姿态追踪数据映射难题

MediaPipe与Unity坐标系转换实战:解决姿态追踪数据映射难题

1. 项目概述:当MediaPipe遇见Unity,坐标系的“水土不服”如果你正在尝试将MediaPipe强大的实时人体姿态、手部或面部追踪能力集成到你的Unity项目中,那么恭喜你,你选择了一条充满潜力的道路,但也即将踏入一个最常见的“…

2026/7/22 8:30:58 阅读更多 →
视觉-语言模型零样本泛化:频谱感知潜在空间引导技术

视觉-语言模型零样本泛化:频谱感知潜在空间引导技术

1. 项目概述:视觉-语言模型中的零样本泛化新范式这个标题描述的是2025年NIPS会议上的一项前沿研究,核心在于通过测试时频谱感知的潜在空间引导(Test-Time Spectrum-Aware Latent Steering)技术,提升视觉-语言模型&…

2026/7/22 8:30:58 阅读更多 →
工业读码器极简调试实战:BV50系列如何重塑智能制造数据采集

工业读码器极简调试实战:BV50系列如何重塑智能制造数据采集

1. 项目概述:当工业追溯遇上“极简主义” 在工业自动化与智能制造领域,数据是流动的血液,而条码/二维码则是承载这些数据的“身份证”。追溯系统,从原材料入库到成品出库,乃至售后环节,其根基就在于能否快速…

2026/7/22 8:30:58 阅读更多 →
2026暑假AI学习路线:从数学基础到PyTorch实战的完整指南

2026暑假AI学习路线:从数学基础到PyTorch实战的完整指南

如果你计划在2026年暑假系统学习人工智能,现在正是制定学习路线的最佳时机。AI领域看似庞杂,但遵循正确的学习顺序可以让你事半功倍。本文不是简单的课程罗列,而是基于实际项目经验总结的高效学习路径,特别适合零基础或有一定编程…

2026/7/22 8:29:58 阅读更多 →

日新闻

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

1. 项目概述与SYSCFG模块的核心价值在嵌入式系统,尤其是像TI C6000系列这样的高性能DSP开发中,我们常常会与芯片手册里那些密密麻麻的寄存器打交道。很多开发者可能更关注算法实现、内存优化或者外设驱动,但对于一个稳定、高效的系统而言&…

2026/7/22 0:00:26 阅读更多 →
微信Server酱:高到达率的应急通知方案实践

微信Server酱:高到达率的应急通知方案实践

1. 为什么我们需要"最次"的通知方案? 在数字化协作环境中,消息通知系统的重要性不言而喻明。但现实情况是,企业级通知方案往往需要复杂的API对接(如企业微信、钉钉、飞书),个人开发者的小项目又经…

2026/7/22 0:00:26 阅读更多 →
甲方要的“简洁“PPT,到底是简洁还是省事?

甲方要的“简洁“PPT,到底是简洁还是省事?

甲方说"简洁一点",乙方听到的是"少做几页"。甲方说"不要太复杂",乙方理解成"别放图表了"。结果交过去,甲方说"我说的简洁不是这个意思"。"简洁"这个词在PPT语境里,是…

2026/7/22 0:00:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/21 8:48:31 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 5:34:47 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/21 8:25:39 阅读更多 →

月新闻