错误 - 无法完成符号执行:达到 10000 步的限制 [英] ERROR - Could not complete symbolic execution: reached limit of 10000 steps

查看:17
本文介绍了错误 - 无法完成符号执行:达到 10000 步的限制的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用 SonarQube 5.2 分析与使用 SonarQube 5.1.2 相同的项目时,我在分析 Java 源时在日志中看到很多此类错误消息:

With SonarQube 5.2 when I analyse the same project as I did with SonarQube 5.1.2 I see a lot of such error messages in the log when it analyzes Java sources:

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

这些错误消息在之前的 SonarQube 5.1.2 版本中没有出现.

These error messages did not appear in former SonarQube 5.1.2 version.

不过,SonarQube 5.2 的分析结果最终似乎还可以.

However the analysis result seems to be okay for SonarQube 5.2 in the end.

但是这些错误信息让我很警觉.我不明白怎么了.你能帮忙澄清一下吗?

But these error messages alarm me. I don't understand whats wrong. Can you please help to clarify it?

推荐答案

由于新的符号执行引擎,当您使用 sonar-java 插件 3.8 运行分析时,此错误消息实际上是完全正常的和预期的随此版本介绍.

This error message is actually completely normal and expected when you run your analysis with sonar-java plugin 3.8 because of new symbolic execution engine introduced with this version.

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

(So in the end this should not be an error message but rather something visible only in debug mode : https://jira.sonarsource.com/browse/SONARJAVA-1406 this should be fixed in next release of java plugin).

这对您的分析无害.

这是什么意思?

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

For two rules (S2259 about nullpointer exceptions and S2583 about conditions always true or false) we use symbolic execution which explore all the possible states of a method to find issues. This ends up exploring a big graph of possible states (this is oversimplified here, but sufficient for explanation).

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

This exploration can be huge and as such there is an arbitrary limit to it : 10 000 steps. So when we cannot complete symbolic execution we log this message.

具体来说:这是一种相当间接的方式来警告您有关此方法的这两个规则的一些潜在误报.

Concretely: this is a rather indirect way to warn you about some potential false negatives about those two rules on this method.

这篇关于错误 - 无法完成符号执行:达到 10000 步的限制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆