错误 - 无法完成符号执行:达到10000步的限制

时间:2015-12-03 12:10:13

标签: sonarqube

使用SonarQube 5.2,当我分析与SonarQube 5.1.2相同的项目时,我在分析Java源代码时会在日志中看到很多这样的错误消息:

ERROR - Could not complete symbolic execution: reached limit of 10000 steps for method updateAll in class DefaultTypeDefinitions

这些错误消息未出现在以前的SonarQube 5.1.2版本中。

然而,分析结果似乎最终适用于SonarQube 5.2。

但是这些错误消息让我惊慌失措。我不明白什么是错的。你能帮忙澄清一下吗?

1 个答案:

答案 0 :(得分:31)

由于此版本引入了新的符号执行引擎,因此当您使用sonar-java plugin S2259运行分析时,此错误消息实际上是完全正常的。

(所以最后这不应该是一个错误消息,而是仅在调试模式下可见:https://jira.sonarsource.com/browse/SONARJAVA-1406这应该在下一个java插件版本中修复)。

这对您的分析无害。

这是什么意思?

对于两个规则(S2583关于nullpointer异常和{{1}}关于条件总是真或假)我们使用符号执行来探索要查找的方法的所有可能状态的问题。这最终会探索一个可能状态的大图(这里过于简单,但足以解释)。

这种探索可能是巨大的,因此有一个任意的限制:10 000步。因此,当我们无法完成符号执行时,我们会记录此消息。

具体而言:这是一种相当间接的方式来警告您关于此方法的这两个规则的一些潜在错误否定。