- 条件未分配的变量
条件未分配的变量
工作分配的静态分析尝试确定变量在赋值之前是否已使用:
class Utils
{
public function someMethod(b)
{
string a; char c;
if b == 10 {
let a = "hello";
}
//a could be unitialized here
for c in a {
echo c, PHP_EOL;
}
}
}
上面的示例说明了一种常见情况。 只有当 b
等于 10时, 才会分配变量 a
, 然后需要使用此变量的值–但它可能未初始化。 Zephir 检测到这一点, 自动将变量初始化为空字符串, 并生成警告开发人员:
警告:第一次在条件分支中分配变量a,
考虑在声明中初始化它
/home/scott/test/test/utils.zep on 21 [conditional-initialization]
for c in a {
发现这样的错误有时是很棘手的, 但是静态分析可以帮助程序员提前发现错误。