背景:
迁移之后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?
我该怎么办?
答案 0 :(得分:1)
我的猜测是重建ES索引可以完成这项工作。 对于该删除,在备份后^^,"数据/ es "您的SQ实例的文件夹,然后重新启动您的服务器。 索引将被重建(可能需要一些时间,具体取决于项目的大小/数量)。