Sonar Runner因规则而失败

时间:2015-04-09 16:03:39

标签: gradle sonarqube sonar-runner

我正在尝试使用Gradle在Java 8项目上发布到Sonar,该项目失败并出现以下错误:

    INFO: ------------------------------------------------------------------------
    INFO: EXECUTION FAILURE
    INFO: ------------------------------------------------------------------------
    Total time: 1:18.786s
    Final Memory: 25M/764M
    INFO: ------------------------------------------------------------------------
    ERROR: Error during Sonar runner execution
    ERROR: Unable to execute Sonar
    ERROR: Caused by: Rule 'squid:S1192' can not use 'Constant/issue' remediation function because this rule does not have a fixed remediation cost.

如果我选择我的项目以使用 FindBugs 质量配置文件,那么一切正常并且统计数据会上传到声纳。但是,如果我打开声纳方式配置文件,则会抛出上述错误。

查看错误,似乎无法找到补救成本(我认为需要确定修复所有科技债务需要多少天)

我尝试卸载其他插件(JavaScript / Python /等),然后离开Java。我也试过调整Technical Debt设置中的默认值。我也恢复了默认配置文件。一切都没有效果。

我使用以下版本:

  • 声纳5.0.1(申请)
  • sonar-runner 2.4(gradle plugin)
  • gradle 2.3
  • java 8(要分析的项目)
  • java插件3.1(声纳插件)

有人有任何想法吗?

3 个答案:

答案 0 :(得分:1)

通过执行以下操作,我设法让4个有问题的规则起作用:

第一个表显示了全新安装的数据库状态

╔═════════════╦════════════════════════════╦══════════════════════╗
║ PLUGIN_NAME ║      PLUGIN_RULE_KEY       ║ REMEDIATION_FUNCTION ║
╠═════════════╬════════════════════════════╬══════════════════════╣
║ squid       ║ MethodCyclomaticComplexity ║ (null)               ║
║ squid       ║ S1067                      ║ (null)               ║
║ squid       ║ S1192                      ║ (null)               ║
║ squid       ║ S135                       ║ (null)               ║
╚═════════════╩════════════════════════════╩══════════════════════╝

此表显示指向克隆数据库并运行/ setup URL的全新安装中的数据库状态。

注意:这仍然是全新安装并且在新目录中,因此/ es目录将不存在Step 3 followed here

╔═════════════╦════════════════════════════╦══════════════════════╗
║ PLUGIN_NAME ║      PLUGIN_RULE_KEY       ║ REMEDIATION_FUNCTION ║
╠═════════════╬════════════════════════════╬══════════════════════╣
║ squid       ║ MethodCyclomaticComplexity ║ CONSTANT_ISSUE       ║
║ squid       ║ S1067                      ║ CONSTANT_ISSUE       ║
║ squid       ║ S1192                      ║ CONSTANT_ISSUE       ║
║ squid       ║ S135                       ║ CONSTANT_ISSUE       ║
╚═════════════╩════════════════════════════╩══════════════════════╝

要解决此问题,我已将REMEDIATION_FUNCTION中的值设置回null,现在规则正常运行。

update rules
set remediation_function = null
where plugin_name = 'squid'
and plugin_rule_key in ('MethodCyclomaticComplexity', 'S1192', 'S135', 'S1067')

答案 1 :(得分:1)

从SonarQube 4.3或之前升级时,必须重置规则的技术债务定义:

没有SQALE插件:

  • 执行SQL查询:" UPDATE规则SET characteristic_id = NULL,remediation_function = NULL,remediation_coeff = NULL,remediation_offset = NULL WHERE characteristic_id IS NOT NULL;"
  • 删除data / es文件夹(如果存在)
  • 重新启动服务器。

使用SQALE插件:

  • 转到更新中心并安装SQALE插件(如果尚未安装)
  • 转到“备份模式”'页面(设置 - > SQALE - >备份/恢复)
  • 在“还原模型”部分中,点击“还原”部分。按钮 - >您的质量模型将被重置,所有被覆盖的规则技术债务定义将被重置。
  • 转到更新中心并卸载SQALE插件(如果之前未安装)。

此票证https://jira.codehaus.org/browse/SONAR-5056是此必要更改的来源。

答案 2 :(得分:0)

从版本4.2更新到4.5.4后,我遇到了同样的问题。要继续我的项目分析,我必须停用以下规则:

  • 鱿鱼:MethodCyclomaticComplexity
  • 鱿鱼:S1192
  • 鱿鱼:S135

所有人都抛出"不能使用'常数/问题'补救功能,因为此规则没有固定的补救成本"错误。

我的安装使用Java 8,sonar-runner 2.4和以下插件:

  • 声纳的CheckStyle-插件-2.2.jar
  • 声纳的FindBugs-插件-3.2.jar
  • 声纳-java的插件-3.1.jar
  • 声纳-JavaScript的插件-2.4.jar
  • 声纳-LDAP的插件-1.4.jar
  • 声纳-SCM-活性-插件-1.8.jar
相关问题