使用 psalm 跳过自动生成的 php 代码最直接的办法是在文件头部添加 @psalm-suppress all 注释,或者在 psalm.xml 配置文件中通过 标签排除整个目录。前者针对特定文件生效,后者适合批量处理构建产物或缓存目录。

如何在单个文件中忽略所有 Psalm 检查?
在需要被忽略的 PHP 文件顶部插入 @psalm-suppress All 即可。这会让 Psalm 对该文件的类型检查完全失效,适用于那些由工具自动生成、无法手动修改源码的场景。

<?php /**
* @psalm-suppress All
*/
namespace Generated;
class AutoGeneratedModel {
public function __call($name, $arguments) {
// 动态方法,Psalm 会报错,但被 suppress 忽略
return null;
}
}
运行 vendor/bin/psalm 时,该文件内的任何类型错误都不会被报告。如果只想忽略特定类型的错误,可以将 All 替换为具体的错误类型,例如 @psalm-suppress UndefinedMethod。
如何在项目中批量排除生成代码目录?
在项目的根目录 psalm.xml 文件中配置 块,指定要排除的目录路径。这样 Psalm 在扫描项目时会直接跳过这些目录下的所有文件,无需在每个文件中添加注释。

<?xml version="1.0"?><psalm errorlevel="1" resolvefromconfigfile="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://getpsalm.org/schema/config" xsi:schemalocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"><projectfiles><directory name="src"></directory><ignorefiles><directory name="generated"></directory><directory name="vendor"></directory></ignorefiles></projectfiles></psalm>
上述配置中,generated 和 vendor 目录下的文件将被完全忽略。你可以将自动生成代码所在的目录名填入 标签中。这种方式比逐个文件添加注释更高效,且便于维护。
如果只希望忽略特定类型的错误而不是全部呢?
除了 @psalm-suppress All,还可以指定具体的错误类型。例如,对于动态生成的属性访问,可以使用 @psalm-suppress PropertyNotSetInConstructor 来忽略构造函数中未设置的属性警告。这种细粒度的控制可以在保留大部分类型检查的同时,仅屏蔽已知的、不可避免的误报。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











