2.6. 输出格式

未匹配的标注

输出格式

通过各种所谓的报错格式器(error formatter),PHPStan 支持不同的输出格式。

你可以按照以下关键词给 analyse 命令传 --error-format=X 以控制输出:

  • table: 默认值。把报错按文件分类,并带有颜色。供人类食用。此外,table 格式器 会检测它是否在持续集成环境中运行,例如 GitHub Actions 和 TeamCity,除了原有的内容,它还会以该环境的特定格式输出报错。
  • raw: 每行显示一个错误信息,包括文件路径、行号和错误描述。
  • checkstyle: 创建一个和 checkstyle.xml 兼容的输出。注意你必须把输出信息重定向到一个文件,以便接下来处理报错。
  • json: 创建一个没有空格的 json 压缩文件。注意你必须把输出信息重定向到一个文件,以便接下来处理报错。
  • prettyJson: 创建一个人类可读的带有空格和缩进的 json 输出。注意你必须把输出信息重定向到一个文件,以便接下来处理报错。
  • junit: 创建一个和 JUnit 兼容的输出。注意你必须把输出信息重定向到一个文件,以便接下来处理报错。
  • github: 创建一个和 GitHub Actions 兼容的输出。
  • gitlab: 创建一个格式,它用于 GitLab Merge Request 上的代码质量(Code Quality)小部件(widget)。
  • teamcity: 创建一个和 TeamCity 兼容的输出。

你也可以实现你自定义的报错格式器。 了解更多 »

你可以在配置里改变默认的报错格式。 了解更多 »

在编辑器里打开文件

默认的 table 格式有一个配置参数 editorUrl,它可以让你指定一个带有占位符的 URL,这个 URL 会被打印在错误信息旁。

 ------ -------------------------------------------------------------------
  Line   test.php
 ------ -------------------------------------------------------------------
  3      Parameter #1 (stdClass) of echo cannot be converted to string.
         ✏️  phpstorm://open?file=/home/dev/test.php&line=3
 ------ -------------------------------------------------------------------

也可以在 配置文件 里这么设置:

parameters:
    editorUrl: 'phpstorm://open?file=%%file%%&line=%%line%%'

常用编辑器的 URL 示例:

  • PhpStorm: 'phpstorm://open?file=%%file%%&line=%%line%%'
  • Visual Studio Code: 'vscode://file/%%file%%:%%line%%'
  • Atom: 'atom://core/open/file?filename=%%file%%&line=%%line%%'

这个参数最有可能在 你的本地配置文件 里设置,这样它不会被提交到版本库里。常见模式是把特定项目的 phpstan.neon.dist 分享给项目里的所有人, 并把包括 phpstan.neon.distphpstan.neon 添加到 .gitignored 文件,然后每个开发者自己指定这个参数。

includes:
    - phpstan.neon.dist

parameters:
    editorUrl: 'phpstorm://open?file=%%file%%&line=%%line%%'

为了使文本在你的终端里真的可以点击,你可能需要在系统里注册协议;有关示例参见 eclemens/atom-url-handler

在 PHPStan 1.7.15 可用

如果你在 Docker(或其他虚拟化工具) 里运行 PHPStan,你可能需要使用 %relFile% 而不是 %file%。这将基于当前工作目录使用文件。editorUrl 后面应该类似于:phpstorm://open?file=/path/to/your/project/%%relFile%%&line=%%line%%

因为相同项目下的团队成员可能有不同的项目绝对路径,在常见项目的设置里,特定机器的 phpstan.neoneditorUrl 参数应该和 phpstan.neon.dist 配合使用

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~