Skip to content
Interface to PHPStan (PHP static analyzer)
Emacs Lisp Makefile PHP
Branch: master
Clone or download
Latest commit e8d33c7 Jun 26, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
tests Add phpstan-working-dir for working directory of PHPStan Apr 15, 2018
.gitignore Add Makefile for compiling Jun 18, 2019
Cask Bump version 0.3.0 Feb 27, 2019
Makefile Modify README Feb 27, 2019
flycheck-phpstan.el Enable flycheck-php for @cjohansson's phps-mode Jun 26, 2019
phpstan.el Bump version 0.3.1 Jun 18, 2019
phpstan.neon.dist Add test files Apr 11, 2018


MELPA: phpstan MELPA stable: phpstan

Emacs interface to PHPStan, includes checker for Flycheck.

Support version

  • Emacs 24+
  • PHPStan latest/dev-master (NOT support 0.9 seriese)
  • PHP 7.1+ or Docker runtime

How to install

Install from MELPA

  1. If you have not set up MELPA, see Getting Started - MELPA.
  2. M-x package-install flycheck-phpstan

How to use

For Flycheck user

(defun my-php-mode-setup ()
  "My PHP-mode hook."
  (require 'flycheck-phpstan)
  (flycheck-mode t))

(add-hook 'php-mode-hook 'my-php-mode-setup)

For Flymake user

The function for flymake will be implemented soon. You do not have to depend on flycheck.

Using Docker (phpstan/docker-image)

Install Docker CE and phpstan/docker-image(latest).

If you always use Docker for PHPStan, add the following into your .emacs file (~~/.emacs.d/init.el~)

(setq-default phpstan-executable 'docker)

Put the following into .dir-locals.el files on the root directory of project.

((nil . ((php-project-root . git)
         (phpstan-executable . docker)
         (phpstan-working-dir . (root . "path/to/dir"))
         (phpstan-config-file . (root . "path/to/dir/phpstan-docker.neon"))
         (phpstan-level . 7))))

Using composer (project specific)

If your project Composer relies on phpstan, you do not need to set anything.

((nil . ((php-project-root . git)
         (phpstan-executable . docker)
         (phpstan-working-dir . (root . "path/to/dir"))
         (phpstan-config-file . (root . "path/to/dir/phpstan-docker.neon"))
         (phpstan-level . 7))))

Using Composer

Please install phpstan/phpstan-shim or phpstan/phpstan package for each user environment or project by using Composer.

If you are unfamiliar with resolving dependencies, the following shell commands are recommended.

$ composer global require phpstan/phpstan-shim

Hint: If you failed the installation due to old PsySH or php-parser, try the following shell command.

$ composer global remove psy/psysh nikic/php-parser
$ composer global require phpstan/phpstan-shim psy/psysh

Using PHAR archive

NOTICE: phpstan.el requires PHPStan **0.10+**.

Please download phpstan.phar from Releases · phpstan/phpstan.


Variables for phpstan are mainly controlled by directory variables (.dir-locals.el).

Frequently (root. "path/to/file") notation appears in these variables. It is relative to the top level directory of the project. In general, the directory containing one of .projectile, composer.json, .git file (or directory) is at the top level.

Please be aware that the root directory of the PHP project may NOT match either of PHPStan’s %rootDir% and/or %currentWorkingDirectory%.

Typically, you would set the following .dir-locals.el.

((nil . ((php-project-root . auto)
         (phpstan-executable . docker)
         (phpstan-working-dir . (root . "path/to/dir/"))
         (phpstan-config-file . (root . "path/to/dir/phpstan-custom.neon"))
         (phpstan-level . max))))

If there is a phpstan.neon file in the root directory of the project, you do not need to set both phpstan-working-dir and phpstan-config-file.


Most variables defined in this package are buffer local. If you want to set it for multiple projects, use setq-default.

Local variable phpstan-working-dir

Path to working directory of PHPStan.

Absolute path to `phpstan’ working directory.
  • ex) ~”/path/to/phpstan.phar”~
(root . STRING)
Relative path to `phpstan’ working directory from project root directory.
  • ex) (root . "path/to/dir")
Use (php-project-get-root-dir) as working directory.

Local variable phpstan-config-file

Path to project specific configuration file of PHPStan.

Absolute path to phpstan configuration file.
(root . STRING)
Relative path to phpstan configuration file from project root directory.
Search phpstan.neon(.dist) in (phpstan-get-working-dir).

Local variable phpstan-level

Rule level of PHPStan analysis. Please see README #Rule levels of PHPStan. 0 is the loosest and you can also use max as an alias for the highest level. Default level is 0.

Local variable phpstan-executable

Absolute path to `phpstan’ executable file.
  • ex) ~”/path/to/phpstan.phar”~
SYMBOL docker
Use Docker using phpstan/docker-image.
(root . STRING)
Relative path to `phpstan’ executable file from project root directory.
  • ex) (root . "script/phpstan")
Command name and arguments.
  • ex) ("docker" "run" "--rm" "-v" "/path/to/project-dir/:/app" "your/docker-image")
Auto detect phpstan executable file by composer dependencies of the project or executable command in PATH environment variable.

Custom variable phpstan-flycheck-auto-set-executable

Set flycheck phpstan-executable automatically when non-NIL.

You can’t perform that action at this time.