使用 Docker 在 PhpStorm 上配置 CodeSniffer

Configure CodeSniffer on PhpStorm using Docker

我正在使用 PhpStorm 开发一个项目,我正在使用 Php 7.1 和 Docker。我想在 PhpStorm 中集成 PHP 代码嗅探器。

在 PhpStorm 中,我转到 Settings|Languages&Frameworks|PHP|CodeSniffer 并尝试添加新配置,我提供为 PHP Code Sniffer (phpcs) path 脚本路径,内容如下:

#!/usr/bin/env bash
docker run --rm -ti --volume "$(pwd):/app:rw" -u $(id -u):$(id -g) prooph/php:7.1-cli php vendor/bin/phpcs "$@"

我的 docker 容器中只有 运行 个 phpcs

当我单击 Validate 时,PhpStorm 给我以下消息:

The input device is not a TTY

当来自 PhpStorm 控制台的 运行 时,相同的脚本可以完美运行。

我是不是做错了什么?或者我正在尝试做的事情不受支持?

你应该 运行 它没有 -t 标志:

#!/usr/bin/env bash
docker run --rm -i --volume "$(pwd):/app:rw" -u $(id -u):$(id -g) prooph/php:7.1-cli php vendor/bin/phpcs "$@"

-t 分配伪 TTY,这就是它在 PhpStorm 控制台上工作的原因。

在 PhpStorm 2019 中,它开箱即用,不需要 bash 脚本包装器。

首先,您需要转到“项目设置”>“语言和框架”>PHP。 单击字段 "CLI interpreter" 旁边的按钮 ... 并将其配置为与 Docker 一起使用,选择您的图像名称。

配置 CLI 解释器后,转到项目设置 > 语言和框架 > PHP > 质量工具,然后单击 PHP_CodeSniffer 旁边的三个点 (...) 按钮。添加使用刚刚添加的 CLI 解释器的新配置并填充 CodeSniffer 路径(在我的例子中是“/opt/project/vendor/bin/phpcs”)。

瞧!