#php #重构 #捕获 #分析器 #帮助 #错误 #极其

app phanalist

高性能PHP静态分析器,极易使用。它帮助您捕捉PHP代码中的常见错误。

1个不稳定版本

0.1.21 2024年4月16日

#405 in 开发工具

MIT 许可证

120KB
3.5K SLoC

Rust 2.5K SLoC // 0.0% comments PHP 1K SLoC

高性能PHP静态分析器,极易使用。它帮助您捕捉PHP代码中的常见错误。

安装

安装phanalist最简单的方法是使用安装脚本。

curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/denzyldick/phanalist/main/bin/init.sh | sh

它将自动下载适用于您平台的可执行文件

$ ~/phanalist -V
phanalist 1.0.0

还有多种其他安装选项

用法

要分析您的项目源代码,只需运行 phanalist

$ ~/phanalist

示例

Example

第一次运行时,将创建一个名为 phanalist.yaml 的默认配置文件。它将在所有后续运行中重复使用。

还有一些额外的参数

  • config: 配置文件路径,默认值为 ./phanalist.yaml
  • src: 项目源代码路径,默认值为 ./src
  • output-format: 输出结果的格式。可能的选项是 text(默认)和 json
  • summary-only: 仅输出每个规则的违规数量。
  • quiet: 禁用所有输出。

配置

可能的选项包括

  • enabled_rules 包含要使用的规则的列表。如果此列表为空,则将使用所有规则。
  • disable_rules 包含要忽略的规则的列表。
  • rules 规则特定选项。

默认配置文件为

enabled_rules: []
disable_rules: []
rules:
  E0007:
    check_constructor: true
    max_parameters: 5
  E0009:
    max_complexity: 10
  E0010:
    max_paths: 200
  E0012: 
    include_namespaces: 
      - "App\\Service\\"
      - "App\\Controller\\"
    exclude_namespaces: []

规则

以下规则可用

代码 名称 默认选项
E0000 示例规则
E0001 打开标签位置
E0002 空捕获
E0003 方法修饰符
E0004 大写常量
E0005 大写类名
E0006 属性修饰符
E0007 方法参数数量 check_constructor: true, max_parameters: 5
E0008 返回类型签名
E0009 圈复杂度 最大复杂度: 10
E0010 N路径复杂度 最大复杂度: 200
E0012 与共享内存模型的服务兼容性 包含命名空间: ["App\\Service\\"],
排除命名空间: [],
重置接口: ["ResetInterface"]

添加新规则是一个简单的任务,有关如何操作的教程在此。

文章

通过https://dev.to/denzyldick阅读一系列章节,了解项目的内部机制。这是一篇关于此项目的优秀、易于阅读的介绍。

  1. 编写你自己的PHP静态分析器。
  2. 如何使编写意大利面代码变得不可能。
  3. 在PHP源代码AST中检测意大利面代码。
  4. 让Symfony应用准备好Swoole、RoadRunner和FrankenPHP(不涉及AI)。

依赖项

约10-22MB
约298K SLoC