当前位置: 首页 > 工具软件 > phan > 使用案例 >

phan安装

蒲昊苍
2023-12-01

使用composer安装

composer global require phan/phan

如果报ast错
安装php-ast扩展:
pecl install ast
如果不能安装扩展,需要把pecl的路径加入到php配置里

查看pecl安装位置
pear config-get php_dir

把路径加入都php.ini都include_path里面


查看pear版本号
pear version

安装成功会在目录下有
~/.composer/vendor/bin

配置config.php

要运行phan,需要创建config.php文件,文件指定了当前php版本,静态分析的目录,忽略的目录,使用的插件等。在对应的项目下,创建./phan目录,将config.php文件放入此目录下。我的config.php如下

 

**
 * This configuration will be read and overlaid on top of the
 * default configuration. Command line arguments will be applied
 * after this file is read.
 */
return [

    // Supported values: '7.0', '7.1', '7.2', '7.3', null.
    // If this is set to null,
    // then Phan assumes the PHP version which is closest to the minor version
    // of the php executable used to execute phan.
    "target_php_version" => 7.1,

    // A list of directories that should be parsed for class and
    // method information. After excluding the directories
    // defined in exclude_analysis_directory_list, the remaining
    // files will be statically analyzed for errors.
    //
    // Thus, both first-party and third-party code being used by
    // your application should be included in this list.
    'directory_list' => [//指定运行语法分析的目录
        'demo/',

    ],

    // A directory list that defines files that will be excluded
    // from static analysis, but whose class and method
    // information should be included.
    //
    // Generally, you'll want to include the directories for
    // third-party code (such as "vendor/") in this list.
    //
    // n.b.: If you'd like to parse but not analyze 3rd
    //       party code, directories containing that code
    //       should be added to the `directory_list` as
    //       to `exclude_analysis_directory_list`.
    "exclude_analysis_directory_list" => [//指定忽略的目录
        'test/',

    ],

    // A list of plugin files to execute.
    // See https://github.com/phan/phan/tree/master/.phan/plugins for even more.
    // (Pass these in as relative paths.
    // Base names without extensions such as 'AlwaysReturnPlugin'
    // can be used to refer to a plugin that is bundled with Phan)
    'plugins' => [
        // checks if a function, closure or method unconditionally returns.

        // can also be written as 'vendor/phan/phan/.phan/plugins/AlwaysReturnPlugin.php'
        'AlwaysReturnPlugin',
        // Checks for syntactically unreachable statements in
        // the global scope or function bodies.
        'UnreachableCodePlugin',
        'DollarDollarPlugin',
        'DuplicateArrayKeyPlugin',
        'PregRegexCheckerPlugin',
        'PrintfCheckerPlugin',
    ],
];

 

https://github.com/phan/phan

执行命令

~/.composer/vendor/bin/phan -k 你的路径/.phan/config.php -o 你的路径/.phan/output

 类似资料: