Exemple #1
0
/**
 * 处理单个文件的静态检测
 * 输入PHP文件
 * @param string $path
 */
function load_file($path)
{
    $cfg = new CFGGenerator();
    $cfg->getFileSummary()->setPath($path);
    $visitor = new MyVisitor();
    $parser = new PhpParser\Parser(new PhpParser\Lexer\Emulative());
    $traverser = new PhpParser\NodeTraverser();
    $code = file_get_contents($path);
    $stmts = $parser->parse($code);
    $traverser->addVisitor($visitor);
    $traverser->traverse($stmts);
    $nodes = $visitor->getNodes();
    $pEntryBlock = new BasicBlock();
    $pEntryBlock->is_entry = true;
    //开始分析
    $cfg->CFGBuilder($nodes, NULL, NULL, NULL);
}