一套SonarQube环境通常会接入多个代码仓库。项目名称可以相似,但项目密钥必须能够准确区分每个项目。密钥重复、大小写不一致,或者扫描任务读取了错误配置,都可能让结果进入其他项目,甚至直接中断分析。了解SonarQube项目密钥怎么设置SonarQube项目密钥冲突导致分析失败怎么办,可以帮助团队把网页项目、代码仓库和流水线配置对应起来。
一、SonarQube项目密钥怎么设置
项目密钥是SonarQube识别项目的标识,与页面中显示的项目名称不是同一项。设置时既要保证没有重复,也要让后续维护人员能够看懂项目归属。
1、创建项目时填写密钥
①登录SonarQube。
②进入【项目】。
③点击【创建项目】→【本地项目】。
④填写【项目显示名称】。
⑤在【项目密钥】中填写项目标识。
⑥确认信息后创建项目。
手动创建项目需要账号具备创建项目权限。项目密钥区分字母大小写,至少要包含一个非数字字符,可使用字母、数字、短横线、下划线、英文句点和英文冒号。
密钥可以按照“团队、系统、模块”的方式组合,例如:
team-a:order:api
这种命名比单独使用order更容易区分,也能减少不同团队创建同名项目的情况。
2、在扫描配置中保持一致
使用SonarScanner时,打开项目根目录中的sonar-project.properties文件,填写:
保存后,在项目根目录运行当前项目使用的扫描命令。
如果项目通过Maven、Gradle或持续集成流水线执行分析,还要检查构建脚本、命令参数和流水线变量中的sonar.projectKey。命令行或流水线传入的参数可能覆盖配置文件中的内容,因此不能只检查本地文件。
3、查看SonarQube中的实际密钥
①打开目标项目。
②点击页面右上角的【项目信息】。
③找到【项目密钥】。
④复制该值。
⑤与代码仓库和流水线中的sonar.projectKey逐字对比。
检查时要注意大小写、英文冒号和短横线。密钥只要有一个字符不同,扫描器就可能把它识别成另一个项目。
二、SonarQube项目密钥冲突导致分析失败怎么办
所谓密钥冲突,常见情况并不完全相同。有时是创建项目时发现密钥已存在,有时是扫描任务使用了其他项目的密钥,还有时是密钥指向正确项目,但扫描账号没有分析权限。
1、确认密钥被哪个项目占用
①复制扫描日志中的sonar.projectKey。
②进入SonarQube的【项目】页面。
③在搜索框中输入该密钥。
④打开搜索到的项目。
⑤进入【项目信息】核对项目名称和密钥。
如果搜索到的项目就是当前代码仓库,不需要重新创建项目。此时应继续检查扫描权限和令牌。
如果搜索到的是其他仓库,则要为当前项目重新分配密钥,不能继续共用。
2、给新项目更换密钥
①确定新的密钥名称。
②打开sonar-project.properties。
③修改sonar.projectKey。
④检查构建脚本和流水线变量。
⑤在SonarQube中使用新密钥创建项目。
⑥重新运行扫描。
修改时不要只改本地配置文件。如果流水线中仍保留旧值,实际扫描时仍可能使用旧密钥。
3、修改已有项目的密钥
需要保留历史扫描数据时,可以直接修改现有项目,而不是删除后重建。
①打开需要调整的项目。
②进入【项目设置】→【更新密钥】。
③填写新的项目密钥。
④确认更新。
⑤同步修改代码仓库中的sonar.projectKey。
⑥修改流水线变量后重新扫描。
SonarQube更新项目密钥时可以保留原有项目历史,但网页端与扫描端必须同步修改。
4、检查执行分析权限
如果密钥指向已有项目,但扫描日志提示无权分析,需要检查扫描账号权限。
①打开对应项目。
②进入【项目设置】→【权限】。
③找到扫描账号或所属用户组。
④确认已获得【执行分析】权限。
⑤检查扫描任务使用的令牌是否属于该账号。
⑥更新令牌后重新运行分析。
扫描令牌对应的用户必须拥有当前项目的执行分析权限,或者拥有全局执行分析权限。
三、项目密钥修改后怎么检查
密钥调整完成后,还要确认扫描结果确实进入了目标项目,不能只看到构建命令执行结束就停止检查。
1、查看扫描后的项目位置
①重新执行SonarQube扫描。
②打开目标项目。
③查看【最后分析时间】是否更新。
④进入【项目信息】再次核对项目密钥。
⑤确认代码分支和指标属于当前仓库。
如果另一个项目的分析时间发生变化,说明扫描任务仍在读取错误的密钥配置。
2、检查后台任务
①进入目标项目。
②点击【项目设置】→【后台任务】。
③查看最近一次分析任务的状态。
④任务失败时,打开右侧更多操作。
⑤查看错误详情和扫描器上下文。
扫描器显示执行成功,只代表分析报告已经提交;服务器端后台任务完成后,结果才会出现在项目中。
总结
项目密钥并不是随意填写的项目简称,它决定了扫描结果最终进入哪个项目。处理SonarQube项目密钥怎么设置SonarQube项目密钥冲突导致分析失败怎么办时,需要同时核对SonarQube页面、代码配置、流水线参数和扫描权限,避免只修改其中一个位置。希望本文能帮助您更顺利地管理SonarQube项目密钥,减少分析失败或结果归属错误的情况;如有相关使用需求,欢迎联系咨询。