Sonar Runner 因规则异常而失败
Sonar Runner fails with exception with rule
我正在尝试在 Java 8 项目上使用 Gradle 发布到 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.
如果我 select 我的项目使用 FindBugs 质量配置文件,那么一切正常,统计数据会上传到声纳。但是,如果我打开 sonar way 配置文件,则会抛出上述错误。
查看错误似乎找不到修复成本(我认为需要计算修复所有技术债务需要多少天)
我已经尝试卸载其他插件 (JavaScript/Python/etc) 并离开 Java。我还尝试调整技术债务设置中的默认值。我也恢复了默认配置文件。都没有效果。
我正在使用以下版本:
- sonar 5.0.1(应用)
- sonar-runner 2.4(gradle 插件)
- gradle 2.3
- java 8(要分析的项目)
- java插件3.1(声纳插件)
有人有什么想法吗?
我从4.2版更新到4.5.4版后遇到了同样的问题。为了继续我的项目分析,我必须停用以下规则:
- squid:MethodCyclomaticComplexity
- 鱿鱼:S1192
- 鱿鱼:S135
它们都抛出 "can not use 'Constant/issue' remediation function because this rule does not have a fixed remediation cost" 错误。
我的安装使用Java8、sonar-runner 2.4及以下插件:
- sonar-checkstyle-plugin-2.2.jar
- sonar-findbugs-plugin-3.2.jar
- sonar-java-plugin-3.1.jar
- sonar-javascript-plugin-2.4.jar
- sonar-ldap-plugin-1.4.jar
- sonar-scm-activity-plugin-1.8.jar
我通过执行以下操作成功地使 4 个有问题的规则起作用:
第一个 tables 显示全新安装的数据库状态
╔═════════════╦════════════════════════════╦══════════════════════╗
║ PLUGIN_NAME ║ PLUGIN_RULE_KEY ║ REMEDIATION_FUNCTION ║
╠═════════════╬════════════════════════════╬══════════════════════╣
║ squid ║ MethodCyclomaticComplexity ║ (null) ║
║ squid ║ S1067 ║ (null) ║
║ squid ║ S1192 ║ (null) ║
║ squid ║ S135 ║ (null) ║
╚═════════════╩════════════════════════════╩══════════════════════╝
这 table 显示从全新安装到克隆数据库的数据库状态和 运行 /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')
从 SonarQube 4.3 或更早版本升级时,必须重置规则的技术债务定义:
没有 SQALE 插件:
- 执行 SQL 查询:"UPDATE rules SET characteristic_id=NULL, remediation_function=NULL, remediation_coeff=NULL, remediation_offset=NULL WHERE characteristic_id IS NOT NULL;"
- 删除 data/es 文件夹(如果存在)
- 重新启动服务器。
使用 SQALE 插件:
- 前往更新中心并安装 SQALE 插件(如果尚未安装)
- 转到 'Back Up Model' 页面(设置 -> SQALE -> 备份/恢复)
- 在还原模型部分,单击 'Restore' 按钮 -> 您的质量模型将被重置,所有覆盖的规则技术债务定义将被重置。
- 去更新中心卸载SQALE插件(如果之前没有安装的话)。
此工单 https://jira.codehaus.org/browse/SONAR-5056 是此所需更改的来源。
我正在尝试在 Java 8 项目上使用 Gradle 发布到 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.
如果我 select 我的项目使用 FindBugs 质量配置文件,那么一切正常,统计数据会上传到声纳。但是,如果我打开 sonar way 配置文件,则会抛出上述错误。
查看错误似乎找不到修复成本(我认为需要计算修复所有技术债务需要多少天)
我已经尝试卸载其他插件 (JavaScript/Python/etc) 并离开 Java。我还尝试调整技术债务设置中的默认值。我也恢复了默认配置文件。都没有效果。
我正在使用以下版本:
- sonar 5.0.1(应用)
- sonar-runner 2.4(gradle 插件)
- gradle 2.3
- java 8(要分析的项目)
- java插件3.1(声纳插件)
有人有什么想法吗?
我从4.2版更新到4.5.4版后遇到了同样的问题。为了继续我的项目分析,我必须停用以下规则:
- squid:MethodCyclomaticComplexity
- 鱿鱼:S1192
- 鱿鱼:S135
它们都抛出 "can not use 'Constant/issue' remediation function because this rule does not have a fixed remediation cost" 错误。
我的安装使用Java8、sonar-runner 2.4及以下插件:
- sonar-checkstyle-plugin-2.2.jar
- sonar-findbugs-plugin-3.2.jar
- sonar-java-plugin-3.1.jar
- sonar-javascript-plugin-2.4.jar
- sonar-ldap-plugin-1.4.jar
- sonar-scm-activity-plugin-1.8.jar
我通过执行以下操作成功地使 4 个有问题的规则起作用:
第一个 tables 显示全新安装的数据库状态
╔═════════════╦════════════════════════════╦══════════════════════╗
║ PLUGIN_NAME ║ PLUGIN_RULE_KEY ║ REMEDIATION_FUNCTION ║
╠═════════════╬════════════════════════════╬══════════════════════╣
║ squid ║ MethodCyclomaticComplexity ║ (null) ║
║ squid ║ S1067 ║ (null) ║
║ squid ║ S1192 ║ (null) ║
║ squid ║ S135 ║ (null) ║
╚═════════════╩════════════════════════════╩══════════════════════╝
这 table 显示从全新安装到克隆数据库的数据库状态和 运行 /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')
从 SonarQube 4.3 或更早版本升级时,必须重置规则的技术债务定义:
没有 SQALE 插件:
- 执行 SQL 查询:"UPDATE rules SET characteristic_id=NULL, remediation_function=NULL, remediation_coeff=NULL, remediation_offset=NULL WHERE characteristic_id IS NOT NULL;"
- 删除 data/es 文件夹(如果存在)
- 重新启动服务器。
使用 SQALE 插件:
- 前往更新中心并安装 SQALE 插件(如果尚未安装)
- 转到 'Back Up Model' 页面(设置 -> SQALE -> 备份/恢复)
- 在还原模型部分,单击 'Restore' 按钮 -> 您的质量模型将被重置,所有覆盖的规则技术债务定义将被重置。
- 去更新中心卸载SQALE插件(如果之前没有安装的话)。
此工单 https://jira.codehaus.org/browse/SONAR-5056 是此所需更改的来源。