SonarQube扫描新项目时旧项目自动删除问题咨询
问题1:为何扫描新项目时现有项目会被自动删除?
这种情况我帮不少开发者排查过,大概率是下面几个原因导致的,你可以逐一核对:
项目密钥重复冲突:SonarQube是靠
sonar.projectKey唯一识别项目的。如果你的新项目配置了和某个旧项目完全相同的密钥,扫描时SonarQube会直接覆盖旧项目的记录,看起来就像旧项目被删除了。解决办法很直接:检查新项目的扫描配置(比如sonar-project.properties文件或CI/CD中的扫描参数),确保sonar.projectKey独一无二,和所有现有项目都不重复。自动清理策略触发:SonarQube自带项目清理功能,如果你在后台配置了自动清理规则,就可能自动删除旧项目。登录管理员账号,进入
Administration > Configuration > General Settings > Cleanup,看看是不是设置了这类规则:- 自动删除超过N天未分析的项目
- 当项目总数超过阈值时,删除最早创建/最后分析的项目
要是这个原因,调整清理规则或者直接关闭自动清理即可。
License版本的项目数量限制:如果用的是SonarQube商业版(Developer/Enterprise/Data Center),License可能限制了最大项目数量。当项目数达到上限后,扫描新项目时系统会自动移除最早的项目腾出空间。这种情况要么联系供应商升级License,要么手动清理掉不需要的旧项目。
问题2:完成10个项目分析后,扫描新项目总数仍为10,旧项目被替换?
这个问题其实是上面场景的延伸,核心原因就是项目数量达到了某个上限,触发了自动替换机制:
License项目数限制:如果你的License最多允许10个项目,第11个项目扫描时,系统会自动删除最旧的项目来维持总数不超限制。你可以在
Administration > License Manager里查看当前License的项目数量限制,确认是否已经触顶。自定义清理规则设置:可能你在Cleanup配置里把“最大项目数”设成了10,当项目数超过10时,系统会自动删除最早的项目。去检查Cleanup配置里的“Maximum number of projects”选项,调整数值或者关闭该规则就能解决。
另外还有个小细节要注意:如果是通过CI/CD流水线自动扫描项目,一定要确保每个项目的sonar.projectKey配置正确,避免因为密钥重复导致的“假删除”——其实不是真的删除,而是旧项目被新项目覆盖了。
内容的提问来源于stack exchange,提问作者Juan Jose Jaramillo

