1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Dockerコンテナ上のPHPで静的解析エラーをVSCode上に表示する

Posted at

はじめに

普段 WSL2 上に PHP と Composer、 PHPStan、 PHP CodeSniffer をインストールし、 VSCode の settings.json でそれらの実行ファイルを指定して静的解析エラーを表示していました。
・・・が、 PC 入れ替えのタイミングで、 WSL2 をキレイに保ちたい ( = PHP 等ほかソフトをインストールしたくない) と思い、 Docker コンテナ上の PHP で静的解析エラーを VSCode 上に表示できないかと調査を始めました。

結論

以下の設定で可能。

1. VSCode 張機能をインストール

  • PHPStan

  • PHP Sniffer & Beautifier Docker

2. VSCode settings.json 設定追加

{
    // PHPStan の設定
    "phpstan.singleFileMode": true,
    "phpstan.binPath": "backend/vendor/bin/phpstan", // VSCode のワークスペースルートから見た実行ファイルのパス
    "phpstan.binCommand": [],
    "phpstan.configFile": "backend/phpstan.neon",
    "phpstan.paths": {
        "backend": "/src" // VSCode のワークスペースルートから見た、 Docker コンテナとマウントしているパス
    },
    "phpstan.dockerContainerName": "backend-php", // Docker コンテナ名
    "phpstan.rootDir": "",
    "phpstan.options": [],
    "phpstan.enableStatusBar": true,
    "phpstan.memoryLimit": "1G",
    "phpstan.enabled": true,
    "phpstan.projectTimeout": 300000,
    "phpstan.timeout": 300000,
    "phpstan.suppressTimeoutMessage": false,
    "phpstan.showProgress": false,
    "phpstan.showTypeOnHover": false,
    "phpstan.enableLanguageServer": false,
    "phpstan.ignoreErrors": [
        "Xdebug: .*"
    ],
    "phpstan.suppressWorkspaceMessage": false,
    "phpstan.pro": false,
    "phpstan.tmpDir": "",
    "phpstan.checkValidity": false,
    // PHP CodeSniffer の設定
    "phpsab.docker.dockerEnabled": true,
    "phpsab.docker.dockerContainer": "backend-php", // Docker コンテナ名
    "phpsab.docker.dockerWorkspaceRoot": "/src", // Docker コンテナとマウントしているパス
    "phpsab.docker.dockerExecutablePathCBF": "/src/vendor/bin/phpcbf", // Docker コンテナ内から見た実行ファイルのパス
    "phpsab.docker.dockerExecutablePathCS": "/src/vendor/bin/phpcs",
    "phpsab.docker.autoRulesetSearch": false,
    "phpsab.docker.standard": "CakePHP" // WordPress のフォーマッターで見る時は WordPress に書き換える
}

前提

  • Docker コンテナ内に PHP、 Composer、 PHPStan、 PHP CodeSniffer がインストールされている。
  • VSCode ワークスペースルート配下の PHP ファイルすべてに Linux 読み取り・書き込み権限がある。
    sudo chmod -R ogu+rw ./
  • VSCode に PHPStan、 PHP CodeSniffer の実行権限がある。
    sudo chmod -R 777 backend/vendor

確認したリポジトリ

※ 注意点

Docker コンテナ上で VSCode が静的解析を実行する都合上、VSCode のターミナルにて docker compose up -d した後に Ctrl + Shift + p した後、「開発者: ウィンドウの再読み込み」を選択する必要がある。

さいごに

これで WSL2 には PHP をインストールせずとも PHP の静的解析を実行できるようになりました!
この記事が他のエンジニアの助けになれば幸いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?