注释
很好,谢谢。 有没有办法在 master 分支上运行该工具?1.0.9 版本很旧,您引用的一些代码已被删除。 |
当然,这是 master 分支上的结果。 第295行和第306行、第100行和第101行的空检查不一致( 在 method 关于可能返回null的方法, 此外,可以在第289
一个有趣的方法是第74 谢谢。 |
太好了,我的周末得救了!😁 |
嗨,我们刚才已经报告了这些错误,请您看一下并确认它们是否是真正的错误。我们一直在进行一项实验来测量静态检查器的准确性。如果您能提供一些反馈,我们将不胜感激! |
我还没来得及细看。其中一些是非常明显的风险,可能应该抛出异常或返回可选值而不是 null。这个周末我可能会有时间。 |
谢谢。 |
很抱歉花了这么长时间才回复你们!我一直在查看代码并验证了您指出的大部分地方的问题。 你在用什么工具?
|
大家好,
我们的工具发现了几个潜在的 NPE 错误
第一个在runSimulation中。
变量
parserThread
初始化为 null 并将由parserThread = new Thread(simOutputBuffer);
. 但是,如果赋值之前的三个指令引发 IOException,则程序将跳过赋值并执行if (parserThread.isAlive())
。由于变量
parserThread
仍然为 null,因此程序将引发 NullPointerException。第二个是由
return null
in 方法center()引起的。例如,
在getLinesFromParser中,如果
ps.center()
返回null并在center.x中使用,则为 NPE 错误如果
lastSegment.center()
返回 null 并在GcodePreprocessorUtils.generatePointsAlongArcBDring、GcodePreprocessorUtils.getAngle处使用并最终在end.y – start.y 处取消引用;第三个是由
return null
in 方法getControllerFor()引起的。例如,一个调用链是
this.controller = FirmwareUtils.getControllerFor(firmware);
,applySettingsToController(settings, this.controller);
并且controller.getCommandCreator()...
谢谢。