在SonarQube升级后,为什么我无法管理访问某些规则说明?

时间:2015-08-20 13:36:15

标签: sonarqube sonarqube-4.5

背景:

迁移之后sonarQube:3.73 - > 4.5.5

错误:

当我通过声纳顶部的链接查阅一些规则时,描述不会出现,而是javascript:

Uncaught TypeError: Cannot read property 'parentKey' of undefined
  of undefinedCodingRulesDetailQualityProfileView.getParent @ app.js:11149
  CodingRulesDetailQualityProfileView.serializeData @ app.js:11187
  Marionette.ItemView.Marionette.View.extend.render @ app.js:3073
  Marionette.CollectionView.Marionette.View.extend.renderItemView @ app.js:3342
  Marionette.CollectionView.Marionette.View.extend.addItemView @ app.js:3293
  (anonymous function) @ app.js:3225_.each._.forEach @ sonar.js:27333
  _.each.Collection.(anonymous function) @ app.js:956
  Marionette.CollectionView.Marionette.View.extend.showCollection @ app.js:3223
    Marionette.CollectionView.Marionette.View.extend._renderChildren @ app.js:3211
  Marionette.CollectionView.Marionette.View.extend.render @ app.js:3196
  _.extend.show @ app.js:2483CodingRulesDetailView.onRender @ app.js:11589
  Marionette.triggerMethod.triggerMethod @ app.js:2134
  Marionette.ItemView.Marionette.View.extend.render @ app.js:3082
  Marionette.Layout.Marionette.ItemView.extend.render @ app.js:3647
  _.extend.show @ app.js:2483(anonymous function) @ app.js:13862
  jQuery.Callbacks.fire @ sonar.js:3200jQuery.Callbacks.self.fireWith @ sonar.js:3312

研究

当我们看到javascript:

    myProfile = _.findWhere(this.options.app.qualityProfiles, {
      key: this.model.get('qProfile')
    });
    parentKey = myProfile.parentKey; // this line bug because myProfile is undefined

this.options.app.qualityProfiles - >包含声纳的所有质量配置文件

key:this.model.get('qProfile') - >获取规则

的质量配置文件链接的密钥

经过一些调查后,我发现在数据库中找不到与规则相关的精确质量配置文件链接。所以我认为它是一个旧的和删除的质量配置文件。

这可以解释为什么所有质量配置文件中都不存在特定的质量配置文件

问题

你见过这个漏洞吗?

声纳如何复活旧的和已删除的qualityProfiles?

我该怎么办?

1 个答案:

答案 0 :(得分:1)

我的猜测是重建ES索引可以完成这项工作。 对于该删除,在备份后^^,"数据/ es "您的SQ实例的文件夹,然后重新启动您的服务器。 索引将被重建(可能需要一些时间,具体取决于项目的大小/数量)。