LoginSignup
7
7

More than 3 years have passed since last update.

Wordpress 開発でも静的解析したい!

Posted at

静的解析しよう

Wordpress のプログラムを書いているときにサイトが止まるような実行エラーって怖いですよね。
それらを少しでも減らすために、プログラム公開前に自身の開発環境で、型のチェックや引数のチェックなど、静的解析を正しく行うことで、予め実行エラーに気づける環境を作りましょう。

環境

  • Wordpress プラグイン開発
  • PHP7

ディレクトリ構成

.
├── RAPI_Plugin.php  # plugin main ファイル
├── composer.json
├── composer.lock
├── phpstan.neon     # phpstan 設定ファイル
├── require.php
├── src              # 静的解析したいプログラムのディレクトリ
│   ├── Controllers
│   ├── RAPI.php
│   ├── Models
│   └── Routes
├── bin
├── tests
└── vendor

PHPStan

PHP 向けの静的解析ツールです。
こちらの方の説明が詳しいです。
https://qiita.com/qiita_masaharu/items/24bf34579119628eefe2

WordPress extensions for PHPStan

szepeviktor/phpstan-wordpress を利用します。
https://github.com/szepeviktor/phpstan-wordpress

composer.json
{
    "require-dev": {
        "szepeviktor/phpstan-wordpress": "^0.2.0"
    },
    "scripts": {
        "post-install-cmd": "PHPStan\\WordPress\\Composer\\FixWpStubs::php73Polyfill",
        "post-update-cmd": "PHPStan\\WordPress\\Composer\\FixWpStubs::php73Polyfill"
    }
}

これを composer install

設定ファイル(phpstan.neon)

phpstan.neon
includes:
    - vendor/szepeviktor/phpstan-wordpress/extension.neon
parameters:
    excludes_analyse: ['bin', 'tests', 'vendor']
    autoload_directories:
        - ./src
    bootstrap: null
    level: max
    fileExtensions:
        - php
    inferPrivatePropertyTypeFromConstructor: true

実行準備

composer update --classmap-authoritative 

このコマンド実行する

実行

./vendor/bin/phpstan analyse --memory-limit 256M .

 11/11 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%


 [OK] No errors

良さそうですね。

7
7
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
7
7