Psalm 7 发布:PHP 安全与静态分析新标杆

Psalm 7 release: PHP security&static analysis software

Psalm 7 发布:PHP 安全与静态分析新标杆

Psalm 7 正式发布了,这次更新带来了巨大的性能飞跃和功能扩展。安全分析现在默认开启,速度提升 10 倍以上,并深度支持 NoSQL、LLM 提示注入和 URL 注入检测。全新的基于 Hack 的纯度模型让函数副作用声明更精准,而基于图的死代码检测能精准识别未使用的循环依赖。此外,Psalm 7 原生支持 PHP 8.5 和 8.6 的新特性,如管道操作符和部分函数应用,并内置了 PHPUnit、Symfony 和 Laravel 等框架插件,开箱即用。对于 PHP 开发者而言,这是一次从类型检查到安全防御的全面升级。

安全分析现在默认开启,在单次运行中同时完成类型检查、安全分析和死代码检测,速度提升了 10 倍以上。
  1. idoubtit

    对于不熟悉 PHP 的人来说,静态分析几乎是必须的,因为官方 PHP 类型系统非常简陋。详细的类型是通过 phpdoc 注释添加的,它们还能帮助 IDE 提供合理的代码补全。例如,普通的 "array" 应该用 phpdoc 详细说明:

    /**

    * @param array<string, MyRecord> $input

    * @return list<int>

    */

    function foo(array $input): array

    {

    foreach ($input as $string => $record) {

    // IDE 知道 $record 是 MyRecord 的实例

    静态分析工具会同时利用这两种类型系统,这也是检查 phpdoc 一致性的唯一方法。Psalm 有多种严格程度,即使是非常宽松的模式,也能帮助检测错误或代码异味。

    PHP 主要有两款静态分析工具:Psalm 和 PHPstan,两者都是用 PHP 编写的。后者过去慢得多,但我上次尝试时差别已经很小了(10 万行代码加依赖大约 20 秒)。

    我猜一个新的竞争者 Mago(用 Rust 编写)很快就会取代那些工具。它的命令(analyze, lint)已经几乎和 psalm/phpstan 一样完善了。不过迁移并不容易,因为它没有“严格级别”的概念。

  2. anthk

    汝当使用 Rust 重写的 PHP。

  3. origini

    哎呀我的天,PHP 是我自学的第一门语言,但老天,它居然还需要在返回类型上写 PHPDoc 注释?

    拜托,PHP 烂事一箩筐,但连这种基础功能都还没内置到语言本身里?

同日更多故事

2026-11-09