常量/发布函数必须在sonarqube 5.2中只有非空偏移异常

时间:2015-11-21 17:07:56

标签: sonarqube

运行分析时,在客户端进行分析是成功的。在服务器端,它失败了

2015.11.21 18:58:54 ERROR [o.s.s.c.t.CeWorkerRunnableImpl] Failed to execute task AVEq-_POC3ZgM3TJ4WGx
java.lang.IllegalArgumentException: Constant/issue functions must only have a non empty offset
    at org.sonar.api.internal.google.common.base.Preconditions.checkArgument(Preconditions.java:125) ~[sonar-plugin-api-5.2.jar:na]
    at org.sonar.api.server.debt.internal.DefaultDebtRemediationFunction.validate(DefaultDebtRemediationFunction.java:88) ~[sonar-plugin-api-5.2.jar:na]
    at org.sonar.api.server.debt.internal.DefaultDebtRemediationFunction.(DefaultDebtRemediationFunction.java:45) ~[sonar-plugin-api-5.2.jar:na]
    at org.sonar.server.computation.issue.RuleImpl.effectiveRemediationFunction(RuleImpl.java:124) ~[sonar-server-5.2.jar:na]
    at org.sonar.server.computation.issue.RuleImpl.(RuleImpl.java:53) ~[sonar-server-5.2.jar:na]
    at org.sonar.server.computation.issue.RuleRepositoryImpl.loadRulesFromDb(RuleRepositoryImpl.java:102) ~[sonar-server-5.2.jar:na]
    at org.sonar.server.computation.issue.RuleRepositoryImpl.ensureInitialized(RuleRepositoryImpl.java:91) ~[sonar-server-5.2.jar:na]
    at org.sonar.server.computation.issue.RuleRepositoryImpl.findByKey(RuleRepositoryImpl.java:62) ~[sonar-server-5.2.jar:na]
    at org.sonar.server.computation.step.LoadQualityProfilesStep$IsValid.apply(LoadQualityProfilesStep.java:70) ~[sonar-server-5.2.jar:na]
    at org.sonar.server.computation.step.LoadQualityProfilesStep$IsValid.apply(LoadQualityProfilesStep.java:67) ~[sonar-server-5.2.jar:na]
    at com.google.common.collect.Iterators$7.computeNext(Iterators.java:647) ~[guava-17.0.jar:na]
    at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143) ~[guava-17.0.jar:na]
    at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138) ~[guava-17.0.jar:na]
    at com.google.common.collect.ImmutableList.copyOf(ImmutableList.java:268) ~[guava-17.0.jar:na]
    at com.google.common.collect.ImmutableList.copyOf(ImmutableList.java:226) ~[guava-17.0.jar:na]
    at com.google.common.collect.FluentIterable.toList(FluentIterable.java:334) ~[guava-17.0.jar:na]
    at org.sonar.server.computation.step.LoadQualityProfilesStep.execute(LoadQualityProfilesStep.java:63) ~[sonar-server-5.2.jar:na]
    at org.sonar.server.computation.step.ComputationStepExecutor.execute(ComputationStepExecutor.java:39) ~[sonar-server-5.2.jar:na]
    at org.sonar.server.computation.taskprocessor.report.ReportTaskProcessor.process(ReportTaskProcessor.java:53) ~[sonar-server-5.2.jar:na]
    at org.sonar.server.computation.taskprocessor.CeWorkerRunnableImpl.executeTask(CeWorkerRunnableImpl.java:78) [sonar-server-5.2.jar:na]
    at org.sonar.server.computation.taskprocessor.CeWorkerRunnableImpl.run(CeWorkerRunnableImpl.java:55) [sonar-server-5.2.jar:na]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_66]
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [na:1.8.0_66]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_66]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [na:1.8.0_66]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_66]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_66]
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_66]
2015.11.21 18:58:54 ERROR [o.s.s.c.t.CeWorkerRunnableImpl] Executed task | project=Trimble.Connect:Desktop:master | id=AVEq-_POC3ZgM3TJ4WGx | time=721ms

我怎么知道债务价值不正确的规则是什么。

感谢

2 个答案:

答案 0 :(得分:0)

我终于通过修补sonarqube告诉我它是什么规则来解决这个问题,请参阅commit

最后我发现它与c ++插件中的一些编译器规则有关,这些规则被重命名为编译器特定规则,并且由于某些原因,在升级到5.2后,那些开始根据其技术特性进行评估。

解决方案是通过修补插件的代码来恢复c ++社区插件中的规则

答案 1 :(得分:0)

我在使用SonarQube 5.4时遇到了这个问题。我能够通过对声纳数据库执行以下查询来纠正它。

DELETE from sonar.rules where status = 'REMOVED'

我认为这可能会改变为旧项目计算的债务。