0

静的コード分析ツールを構築しようとしていますが、ファイル内の変数が定義されているかどうかを確認したいと考えています。現在、私は nikic/PHP-Parser ( https://github.com/nikic/PHP-Parser ) を使用していますが、私が試みていることが可能かどうかはわかりません。

だから私の質問は、(おそらく)設定されているかどうかを確認することは可能ですか?では、変数には null とは異なる値が含まれていますか? コードは静的分析で実行されないため、たとえば関数に渡す前に、変数がnullであるかどうかを「推測」することは不可能かもしれないと感じています。

例:

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

この場合、2 行目$pageが null であることが判明すると、例外が発生する可能性があります。静的解析を使用して、コード内のこの種の不安定性を検出したいと考えています。

これは、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