首页
/ Phan静态分析工具命令行参数完全指南

Phan静态分析工具命令行参数完全指南

2025-07-08 01:11:06作者:钟日瑜

Phan是一个强大的PHP静态分析工具,能够帮助开发者发现代码中的潜在问题。本文将全面解析Phan的命令行参数,帮助开发者更好地利用这个工具提升代码质量。

基本使用方式

Phan的基本命令格式为:

./phan [选项] [文件...]

文件与目录分析选项

指定分析范围

  • -f/--file-list <filename>:从文件中读取待分析的PHP文件列表
  • -l/--directory <directory>:指定要分析的目录,可多次使用
  • --exclude-file <file>:排除特定文件不进行分析
  • -3/--exclude-directory-list <dir_list>:排除目录列表(逗号分隔),这些目录中的文件不会被分析但类和方法信息会被包含
  • -I/--include-analysis-file-list <file_list>:仅分析指定文件列表(逗号分隔)

项目配置

  • -d/--project-root-directory </path/to/project>:指定项目根目录,默认为当前目录
  • -k/--config-file <file>:指定配置文件路径,默认使用.phan/config.php

初始化配置

使用--init选项可以快速生成配置文件:

phan --init [--init-level=3] [--init-analyze-dir=path/to/src] [--init-analyze-file=path/to/file.php] [--init-no-composer]
  • --init-level:设置初始化严格级别(1-5,1最严格)
  • --init-analyze-dir:添加额外分析目录
  • --init-analyze-file:添加额外分析文件
  • --init-no-composer:声明非Composer项目
  • --init-overwrite:允许覆盖现有配置文件

输出控制

  • -m/--output-mode <mode>:输出格式(text/verbose/json/csv/codeclimate/checkstyle/pylint/html)
  • -o/--output <filename>:输出到文件
  • -C/--color/--no-color:启用/禁用彩色输出
  • --color-scheme:设置颜色方案(default/code/eclipse_dark/vim/light/light_high_contrast)
  • -p/--progress-bar:显示进度条

分析深度与类型检查

严格检查选项

  • --strict-method-checking:严格方法调用检查
  • --strict-param-checking:严格参数类型检查
  • --strict-property-checking:严格属性类型检查
  • --strict-object-checking:严格对象属性访问检查
  • --strict-return-checking:严格返回值类型检查
  • -S/--strict-type-checking:启用所有严格检查

其他分析选项

  • -q/--quick:快速模式(不深入分析所有函数调用)
  • -b/--backward-compatibility-checks:检查PHP5到PHP7的兼容性问题
  • --target-php-version:指定目标PHP版本
  • --minimum-target-php-version:指定最低PHP版本要求

代码质量检测

  • -x/--dead-code-detection:检测死代码
  • -u/--unused-variable-detection:检测未使用变量
  • -t/--redundant-condition-detection:检测冗余条件
  • --constant-variable-detection:检测可替换为常量的变量
  • -X/--dead-code-detection-prefer-false-positive:死代码检测偏向误报

性能与并行处理

  • -j/--processes <int>:设置并行分析进程数
  • --disable-cache:禁用AST缓存
  • --disable-plugins:禁用插件运行
  • -P/--plugin <pluginName|path/to/Plugin.php>:添加插件

高级功能

守护进程模式

  • -s/--daemonize-socket </path/to/file.sock>:Unix套接字守护模式
  • --daemonize-tcp-host <hostname>:TCP主机守护模式
  • --daemonize-tcp-port <port>:TCP端口守护模式

基线管理

  • --save-baseline <path/to/baseline.php>:生成问题基线
  • -B/--load-baseline <path/to/baseline.php>:加载问题基线

语言服务器协议

  • --language-server-on-stdin:通过标准输入启动语言服务器
  • --language-server-tcp-server <addr>:TCP方式启动语言服务器
  • --language-server-tcp-connect <addr>:TCP方式连接语言服务器
  • --language-server-analyze-only-on-save:仅在保存时分析

调试与诊断

  • -D/--debug:打印调试信息
  • --debug-signal-handler:设置信号处理器
  • --print-memory-usage-summary:打印内存使用摘要
  • --dump-ast:输出AST而非分析
  • --dump-parsed-file-list:输出待分析文件列表
  • --dump-signatures-file <filename>:输出方法签名到文件

其他实用选项

  • -v/--version:显示版本信息
  • -h/--help:显示帮助信息
  • --extended-help:显示扩展帮助信息
  • --help-annotations:显示支持的注解信息
  • --require-config-exists:要求配置文件必须存在

通过合理组合这些参数,开发者可以根据项目需求定制Phan的分析行为,从而更高效地发现和解决代码中的潜在问题。