原文连接:静态编译分析 #判断未初始化的变量 静态分析功能会尝试去确认变量在使用以前已被初始化。html
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; } } }
以上代码展现了一个常见的错误状况。其中的变量a只有在b等于10时才会被初始化,而后后面的代码中使用了变量a,可是这个变量a可能没有被初始化。Zephir会自动的建立这个变量并赋予默认值为空字符串并抛出一个警告。编程
Warning: Variable 'a' was assigned for the first time in conditional branch, consider initialize it in its declaration in /home/scott/test/test/utils.zep on 21 [conditional-initialization] for c in a {
要找出这种错误是不容易的,隐性BUG。可是静态分析会帮助编程者更容易的寻找到这些BUG。 #去除不可能被执行的代码 Zephir在编译时会主动监测代码是否会被执行,若是检测到代码不可能被执行到的话会主动在编辑结果中去除这部分代码。如:ide
class Utils { public function someMethod(b) { if false { // This is never executed echo "hello"; } } }