You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为Neomake适配Psalm输出:正确errorformat配置求助

搞定Psalm + Neomake的Errorformat配置

我来帮你解决这个配置问题!首先咱们先拆解一下Psalm的输出结构,再看看你原来的格式哪里出了问题。

首先,你提到控制台里的Psalm输出是这样的(去掉了:lopen里的双竖线):

ERROR: UndefinedClass - application/libraries/PluginManager/PluginBase.php:58:13 - Class or interface LimeSurvey\PluginManager\XML does not exist

而:lopen里的输出多了||前缀,这应该是Neomake在展示错误列表时自动加上的,不是Psalm本身的输出,但咱们的errorformat可以兼容两种情况。

你原来的格式||\ ERROR:\ %m\ -\ %f:%l:%c问题出在顺序和匹配范围:

  • %m被你放在了错误类型的位置,它会把UndefinedClass当成错误消息,后面的文件路径、行号列号以及真正的错误消息就无法被正确捕获了;
  • 你没有匹配到最后那部分真正的错误消息内容。

正确的Errorformat配置

针对你的场景,推荐用下面的配置(兼容带||和不带||的输出):

let g:neomake_psalm_errorformat = [
    \ '|| ERROR: %s - %f:%l:%c - %m',
    \ 'ERROR: %s - %f:%l:%c - %m',
    \ ]

咱们来拆解一下每个部分的作用:

  • || ERROR: / ERROR::匹配输出开头的标识(分别对应:lopen列表和控制台的输出);
  • %s:捕获错误类型(比如UndefinedClass);
  • %f:%l:%c:分别匹配文件路径、行号、列号;
  • %m:捕获最后的错误描述内容(这才是你需要的错误消息)。

测试方法

你可以在Vim里先手动测试这个格式:

  1. 把Psalm的输出保存到一个临时文件,比如psalm_errors.txt;
  2. 在Vim里执行:set errorformat=||\ ERROR:\ %s\ -\ %f:%l:%c\ -\ %m,ERROR:\ %s\ -\ %f:%l:%c\ -\ %m;
  3. 执行:caddfile psalm_errors.txt,然后打开:copen看看错误列表是否正确解析了文件、行号、列号和错误消息。

如果一切正常,再把上面的g:neomake_psalm_errorformat配置加到你的vimrc或者init.vim里就可以了。

内容的提问来源于stack exchange,提问作者Olle Hårstedt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:34:57