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

Ern*_*ati 21 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
Run Code Online (Sandbox Code Playgroud)

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

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

但是这些错误消息让我感到震惊 我不明白什么是错的.你能帮忙澄清一下吗?

ben*_*ico 31

当您使用sonar-java插件运行分析时,此错误消息实际上是完全正常的,3.8因为此版本引入了新的符号执行引擎.

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

这对您的分析无害.

这是什么意思 ?

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

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

具体地说:这是一种相当间接的方式来警告你关于这种方法的这两个规则的一些潜在的错误否定.

  • 这就是创建票证的原因,并且应该在即将推出的 SonarQube java 插件版本中对其进行修复。请仔细阅读答案,因为我明确指出这不应该是错误消息)。 (2认同)