• 条件未分配的变量

    条件未分配的变量

    工作分配的静态分析尝试确定变量在赋值之前是否已使用:

    1. class Utils
    2. {
    3. public function someMethod(b)
    4. {
    5. string a; char c;
    6. if b == 10 {
    7. let a = "hello";
    8. }
    9. //a could be unitialized here
    10. for c in a {
    11. echo c, PHP_EOL;
    12. }
    13. }
    14. }

    上面的示例说明了一种常见情况。 只有当 b 等于 10时, 才会分配变量 a, 然后需要使用此变量的值–但它可能未初始化。 Zephir 检测到这一点, 自动将变量初始化为空字符串, 并生成警告开发人员:

    1. 警告:第一次在条件分支中分配变量a
    2. 考虑在声明中初始化它
    3. /home/scott/test/test/utils.zep on 21 [conditional-initialization]
    4. for c in a {

    发现这样的错误有时是很棘手的, 但是静态分析可以帮助程序员提前发现错误。