Uses PHP_CodeSniffer to format and lint (mainly) PHP code.
phpcs
to lint code.phpcbf
to format fixable code validation errors, using the built-in
commands "Format Document" or "Format Selection" (PHP only).
settings.json
:
{
"[php]": {
"editor.defaultFormatter": "wongjn.php-sniffer"
}
}
settings.json
:
{
"phpSniffer.autoDetect": true
}
And if your projects look like this:
workspace-folder/
vendor/
bin/
phpcs
phpcbf
.phpcs.xml
Validation and formatting will work (see below for alternative filenames for
.phpcs.xml
).
This extension contributes the following settings:
phpSniffer.run
: When to run phpcs
(the linter). Can be onSave
, onType
or never
.phpSniffer.onTypeDelay
: When phpSniffer.run
is onType
, this sets the
amount of milliseconds the validator will wait after typing has stopped before
it will run. The validator will also cancel an older run if the run is on the
same file.phpSniffer.extraFiles
: Glob patterns
of extra files to match that this extension should run on. Useful for standards
that don't just validate PHP files. This extension will always run on PHP
files — be sure to have your files.associations
setting correctly setup for
PHP files.phpSniffer.executablesFolder
: The folder where both phpcs
and phpcbf
executables are. Use this to specify a different executable if it is not in your
global PATH
, such as when using PHP_Codesniffer
as a project-scoped
dependency. Can be absolute, or relative to the workspace folder.phpSniffer.autoDetect
: Set to true
for the extension to auto-detect
phpSniffer.executablesFolder
as ./vendor/bin/
per workspace folder (applies
only if phpSniffer.executablesFolder
is empty).phpSniffer.standard
: The standards to check against. This is passed to the
phpcbf
and phpcs
executables as the value for --standard
. Can be absolute,
or relative to the workspace folder. If not set,
PHP_CodeSniffer will attempt to find a file to use,
at the root of the currently open file's workspace folder in the following order:
.phpcs.xml
phpcs.xml
.phpcs.xml.dist
phpcs.xml.dist
phpSniffer.snippetExcludeSniffs
: Sniffs to exclude when formatting a PHP
code snippet (such as when formatting on paste or on the command
format on selection
). This is passed to the phpcbf
command as the value for
--exclude
when not formatting a whole file.phpSniffer.disableWhenDebugging
: Disable sniffing when any debug session is
active.When phpcs
encounters a malformed array declaration, it can sometimes hang from an error.
This is exacerbated by the fact that we do not have access to the spawned php
process in the extension code and cannot kill php.exe
directly. This causes
many non-exiting PHP processes on Windows machines which can really slow down
the machine.
The fix for this is to update squizlabs/PHP_Codesniffer
in use to >=3.4.2
.