0

我正在尝试构建一个静态代码分析工具,并且我想检查文件中的变量是否已定义。目前我正在使用 nikic/PHP-Parser ( https://github.com/nikic/PHP-Parser ),但我不确定我正在尝试的是否可能。

所以我的问题是:是否可以检查是否(可能)设置。那么变量是否包含与 null 不同的值?由于代码不是在静态分析中执行的,因此我觉得在将变量提供给函数之前可能无法“猜测”变量是否为空。

一个例子:

$page = Expertise::find(get_the_ID());
$relatedNews = $page->connectedNews->take(-3)->reverse();

在这种情况下,当$page结果为空时,第二行可能会给我们一个例外。我想使用静态分析来检测代码中的这些不稳定性。

这是我正在尝试使用 PHP-Parser 的一段代码。

class NodeVisitor extends NodeVisitorAbstract
{
    public function enterNode(Node $node)
    {
        if ($node instanceof Node\Expr\Variable) {
            // is not null (is set)
            // or if that's not possible: is defined before reference?
            }
        }
    }

编辑:为了更清楚地说明我为什么要这样做,我正在尝试构建一个应用程序来检测可能的 500 个错误,而无需对代码的执行一无所知。

4

0 回答 0