sonarqube 升级 6.3.1 后质量配置文件异常(活动/非活动规则)

Eme*_*Cod 1 sonarqube

我已将 sonarqube 服务器从 6.2 升级到 6.3.1,从那时起,我看到了有关质量配置文件的奇怪行为(它可能以前发生过,现在才看到)。

当我单击质量配置文件SonarWay (Java) 时,我看到

在此输入图像描述

看来所有规则都无效了。

当我单击“激活更多”时,我看到以下内容

在此输入图像描述

所以看起来,有一些规则处于活动状态(我认为是由于“停用”选项”)。

但是,当在质量配置文件下将左栏切换为“活动”时,会导致此结果

在此输入图像描述

很明显,没有任何规则是有效的。

第二张图片显示的是什么,“停用”是什么意思,尽管它处于非活动状态?

怎么会突然出现所有规则都失效了的情况?

Nic*_*eam 5

这种特定行为是 Elastic Search 索引损坏(不再与 SonarQube 数据库同步)的常见症状。

解决方案

重建 SonarQube ElasticSearch 索引:

  • 停止您的 SonarQube 服务器
  • 删除ElasticSearch索引@ sonar_install_dir/data/es
  • 启动您的 SonarQube 服务器

(提醒:ElasticSearch是SonarQube用来索引问题、规则等的搜索引擎,以便它可以快速访问这些数据,而不必一直查询数据库,请参阅SonarQube架构

根本原因

为什么会这样?常见情况是升级和/或更改数据库后 ElasticSearch 索引未正确重建。这是一个典型的场景:您首先在嵌入式 H2 数据库上启动 SonarQube,对其进行一些实验,然后将其插入成熟的数据库。如果 ElasticSearch 索引在其间没有被刮擦/重建,那么索引就会被损坏,因为它曾经与之同步的数据库/数据集突然发生了变化。

仅供参考,有一项改进计划可以更优雅地处理此问题:SONAR-5681

注意:独立于上述解决方案,不要将 ElasticSearch 索引重建视为应定期执行的轻量级操作。SonarQube 自行管理其 ElasticSearch 索引,因此必须首先调查任何问题。