Uses PHP_CodeSniffer to format and lint (mainly) PHP code.
- Runs
phpcsto lint code. - Runs
phpcbfto format fixable code validation errors, using the built-in commands "Format Document" or "Format Selection" (PHP only).- One may need to set this extension as the default language formatter for
some languages. The following snippet is an example for PHP that can be
added in a
settings.json:{ "[php]": { "editor.defaultFormatter": "wongjn.php-sniffer" } }
- One may need to set this extension as the default language formatter for
some languages. The following snippet is an example for PHP that can be
added in a
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 runphpcs(the linter). Can beonSave,onTypeornever.phpSniffer.onTypeDelay: WhenphpSniffer.runisonType, 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 yourfiles.associationssetting correctly setup for PHP files.phpSniffer.executablesFolder: The folder where bothphpcsandphpcbfexecutables are. Use this to specify a different executable if it is not in your globalPATH, such as when usingPHP_Codesnifferas a project-scoped dependency. Can be absolute, or relative to the workspace folder.phpSniffer.autoDetect: Set totruefor the extension to auto-detectphpSniffer.executablesFolderas./vendor/bin/per workspace folder (applies only ifphpSniffer.executablesFolderis empty).phpSniffer.standard: The standards to check against. This is passed to thephpcbfandphpcsexecutables 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.xmlphpcs.xml.phpcs.xml.distphpcs.xml.dist
phpSniffer.snippetExcludeSniffs: Sniffs to exclude when formatting a PHP code snippet (such as when formatting on paste or on the commandformat on selection). This is passed to thephpcbfcommand as the value for--excludewhen 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.