Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/benmatselby/sublime-phpcs

🔍 PHP CodeSniffer, PHP Coding Standard Fixer, Linter, and Mess Detector Support for Sublime Text
https://github.com/benmatselby/sublime-phpcs

fixer linter php-codesniffer phpcs phpmd sublime-text sublime-text-plugin

Last synced: 2 months ago
JSON representation

🔍 PHP CodeSniffer, PHP Coding Standard Fixer, Linter, and Mess Detector Support for Sublime Text

Awesome Lists containing this project

README

        

# sublime-phpcs

This is a plugin for Sublime Text which provides checkstyle reports using the following tools (all optional):

- PHP_CodeSniffer (`phpcs`)
- Linter (`php -l`)
- PHP Mess Detector (`phpmd`)

You can also configure the plugin to fix the issues using either

- PHP Coding Standards Fixer (php-cs-fixer)
- PHP Code Beautifier (phpcbf) application

## Requirements

Requirements for this plugin, should you want all the options to work:

- [PHP_CodeSniffer](https://github.com/squizlabs/PHP_CodeSniffer) 3.5+
- [PHPMD](https://phpmd.org) 2.8+
- [PHP CS Fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) 2.6+

This plugin has been tested on:

- Mac OS X 10.8.2
- Ubuntu 11.10
- Windows 7
- Sublime Text 2
- Sublime Text 3
- Sublime Text 4

It may work with other versions, but we cannot confirm that.

## Installation

Use Sublime Text’s Package Control (Tools -> Command Palette -> Package Control: Install Package -> Phpcs) to install this plugin. This is the recommended installation path.

Or

Simply checkout the git repo into “~/Library/Application Support/Sublime Text/Packages/ or the equivalent folder on Windows or Linux.

```shell
cd ~/Library/Application\ Support/Sublime\ Text/Packages/
git clone git://github.com/benmatselby/sublime-phpcs.git Phpcs
```

In both cases, you may need to then configure the following with the actual path to the application:

- “phpcs_php_path”
- “phpcs_executable_path”
- “phpmd_executable_path”
- “php_cs_fixer_executable_path”

They are optional for the plugin. The path needs to include the application such as `/usr/local/bin/phpcs`.

In order to get the path of the application (On a Mac/Linux based environment), you can use:

```shell
which phpcs
which phpmd
which php-cs-fixer
which phpcbf
```

## Features

- Ability to run PHP_CodeSniffer
- Ability to run php -l on the open file
- Ability to run PHP Mess Detector on the open file
- Show cached results from PHP_CodeSniffer in open file
- Show errors in the Quick Panel
- Show errors in the Gutter
- Highlight the errors in the editor
- Show the error for a given line in the status bar
- Ability to specify the regular expression of the linter errors
- Ability to specify the location of the PHP_CodeSniffer application
- Ability to specify the location of the PHP Mess Detector application
- Ability to run the PHP Coding Standards Fixer tool which fixes most issues in your code when you want to follow the PHP coding standards as defined in the PSR-1 and PSR-2 documents
- Ability to run the PHP Code Beautifier tool which fixes most issues in your code when you want to follow PHP coding standards

Once you have right clicked on a file and selected “PHP CodeSniffer” > “Sniff this file…” you will get the output as shown below (depending on the settings you have defined):

## Configuration

You can also define the configuration for the following settings, be it for a project, user settings or the default settings:

### Plugin

- `show_debug` – Do you want the debug information to be sent to the console?
- `extensions_to_execute` – Which filetypes do you want the plugin to execute for?
- `extensions_to_blacklist` – Override the extensions_to_execute in case you have a sub extension such as twig.php etc.
- `phpcs_execute_on_save` – Do you want the code sniffer plugin to run on file save for php files?
- `phpcs_show_errors_on_save` – Do you want the errors to be displayed in quick_panel on save?
- `phpcs_show_gutter_marks` – Do you want the errors to be displayed in the gutter?
- `phpcs_outline_for_errors` – Do you want the errors to be highlighted in the editor?
- `phpcs_show_errors_in_status` – Do you want the errors to be displayed in status bar when clicking on the line with error?
- `phpcs_show_quick_panel` – Do you want the errors to be displayed in the quick panel?
- `phpcs_php_prefix_path` – Needed on windows for phar based applications. Also if you cannot make phar executable. Avoid if possible
- `phpcs_commands_to_php_prefix` – List of commands you want the php path to prefix. This would be useful, if you have some commands as a phar that cannot be run without the php prefix, and others using native command.
- `phpcs_icon_scope_color` - What colour to stylise the icon. This needs knowledge of theming of Sublime Test, as it uses scope colours from the theme to “tint” the dot icon. See here

### PHP_CodeSniffer

- `phpcs_sniffer_run` – Do you want the PHPCS checker to run?
- `phpcs_command_on_save` – Do you want the command to execute on save?
- `phpcs_executable_path` – The path to the phpcs executable. If empty string, use PATH to find it
- `phpcs_additional_args` – This is the extra information you want to pass to the phpcs command. For example which “standard” you want to run, and if you want to show warnings or not

### PHP CodeSniffer Fixer

- `php_cs_fixer_on_save` – Do you want to run the fixer on file save?
- `php_cs_fixer_show_quick_panel` – Do you want the quick panel to display on execution?
- `php_cs_fixer_executable_path` – The path to the php-cs-fixer application.
- `php_cs_fixer_additional_args` – This is the extra information you want to pass to the php-cs-fixer command. For example which “fixers” you want to run

### PHP Code Beautifier

- `phpcbf_on_save` – Do you want to run the fixer on file save?
- `phpcbf_show_quick_panel` – Do you want the quick panel to display on execution?
- `phpcbf_executable_path` – The path to the phpcbf application.
- `phpcbf_additional_args` – This is the extra information you want to pass to the phpcbf command. For example which “standard” to use in order to fix the issues

### PHP Linter

- `phpcs_linter_run` – Do you want the PHP linter to run?
- `phpcs_linter_command_on_save` – Do you want the command to execute on save?
- `phpcs_php_path` – The path to the PHP executable. If empty string, use PATH to find it
- `phpcs_linter_regex` – The regex for the PHP linter output

### PHP Mess Detector

- `phpmd_run` – Do you want the PHPMD to run? Off by default
- `phpmd_command_on_save` – Do you want the command to execute on save?
- `phpmd_executable_path` – The path to the phpmd executable. If empty string, use PATH to find it
- `phpmd_additional_args` – This is the extra information you want to pass to the phpmd command. For example which “rulesets” you want to run

### Project Based Settings

Your .project file should look something like this:

```json
{
"folders": [{}],
"settings": {
"phpcs": {
"phpcs_additional_args": {
"--standard": "/path/to/.composer/vendor/drupal/coder/coder_sniffer/Drupal"
}
}
}
}
```

Of course this is a example to apply Drupal code sniffer. This could be anything. Whatever you can have on this package settings it can be overwritten under the settings -> phpcs

## FAQ

### What do I do when I get "OSError: [Errno 8] Exec format error"?

- This seems to be an issue you may get with regards to wrapper scripts.
- Please make sure that the application/script you are referencing has the correct shebang line, as per [GH-79](https://github.com/benmatselby/sublime-phpcs/issues/79)

### What do I do when I get "OSError: [Error 2] No such file or directory"?

- Well, first of all you need to check that you have PHP_CodeSniffer, and if being used, the phpmd application.
- If you have these applications installed, then it sounds like those applications are not in your PATH, or cannot be found in your PATH by the Python runtime, so configure "phpcs_php_path", "phpcs_executable_path", "phpmd_executable_path" and "php_cs_fixer_executable_path" with the actual paths to those applications

### What do I do when I get "OSError: [Errno 13] Permission denied"?

- It sounds like your path settings are incorrect.
- You need to make sure that when you specifiy the path you include the entire path including the application

```shell
$ which phpcs
/usr/local/bin/phpcs
```

- That entire output is the path you need in your configs.

### What if I've installed the applications using Homebrew?

If you have installed php-cs-fixer, phpmd or phpcs via homebrew then please make sure that you define the "_\_executable_path_" option to the .phar application and not the wrapper script that is placed in your bin folder, as this will cause odd behaviour.

### What other Key Bindings can I setup?

The following is a list of commands that you can bind to a keyboard shortcut:

- phpcs_fix_this_file
- phpcs_clear_sniffer_marks
- phpcs_goto_next_error
- phpcs_show_previous_errors
- phpcs_sniff_this_file

In order to achieve this you need to add the following to one of your key bindings settings file:

```json
{ "keys": ["ctrl+super+t"], "command": "phpcs_clear_sniffer_marks" }
```

To decide which "Fixer" to use, you can do:

```json
{ "keys": ["super+k", "super+f"], "command": "phpcs_fix_this_file", "args": {"tool": "CodeBeautifier"}},
```

or

```json
{ "keys": ["super+k", "super+f"], "command": "phpcs_fix_this_file", "args": {"tool": "Fixer"}},
```

You can then change the ctrl+super+t combination to something of your choosing.