如何静态分析php脚本以检测全局变量的使用情况

时间:2013-01-04 00:16:27

标签: php global-variables static-analysis tokenize

我想处理一个文件夹并计算每个全局变量的次数 用来。我确实有一个全局变量列表,但如果脚本会更酷 检测并输出实例的名称和数量。这不能在 运行时虽然。

我怀疑可以在PHP中使用token_get_all这样做,但是 文档很稀疏......

1 个答案:

答案 0 :(得分:3)

这是一个简单的FSM,我刚刚编写以演示如何从代码中提取所有全局变量:

$tokens = token_get_all('<?php function a() { global $b,

$c; } ?>');


$state = 0; // 1 for processing T_GLOBAL, 0 otherwise
$global_vars = array();
foreach ($tokens as $token) {
    if (!is_array($token)) {
        if ($state == 1 && $token == ';') {
            $state = 0;
        }

        continue;
    }

    if ($token[0] == T_GLOBAL) {
        $state = 1;
        continue;
    }

    if ($state == 1 && $token[0] == T_VARIABLE) {
        $global_vars[] = $token[1];
        continue;
    }
}

var_dump($global_vars);

为每个变量添加计数器非常容易。