SublimeLinter之PHP代码检测与自动修复

SublimeLinter支持许多的语言检测,支持 JavaScriptCSSHTMLJavaPHPPythonRuby 等十多种开发语言,项目GitHub地址open in new window

本文以检测PHP文件代码为示例,安装sublimeLinter-phpsquizlabs/php_codesnifferComposer包。其他语言请参考对应的文档。

安装

安装 SublimeLinter

Package Control安装SublimeLinter⌘(Command) + ⇧(Shift) + P –> 输入 Install…打开Package Control -> 输入SublimeLinter后回车进入安装)。

安装 SublimeLinter-phpcs

Package Control安装SublimeLinter-php⌘(Command) + ⇧(Shift) + P –> 输入 Install…打开Package Control -> 输入sublime linter phpcs后选择SublimeLinter-php回车进入安装)。

项目GitHubopen in new window地址。需要使用Composer全局安装composer global require "squizlabs/php_codesniffer=*",后面会使用到这个phpcs命令。

修改之后重启Sublime,如果我们在php代码文件写了不规范的代码,将看到左侧会有红灯标识。

手动去一一修复这些代码格式是没有问题的,但是这是一个费事费力的工作,有没有功能能辅助我们完成呢?答案是:php cs fixer

安装自动修复 php cs fixer

Package Control安装PHP CS Fixer⌘(Command) + ⇧(Shift) + P –> 输入 Install…打开Package Control -> 输入php cs fixer 后回车进入安装)。

项目GitHubopen in new window地址。需要使用Composer全局安装composer global require friendsofphp/php-cs-fixer

使用 php cs fixer

使用快捷键修复代码

按快捷键Command + Shift + p呼出控制命令台,输入php cs fixer,输入回车,惊奇的发现代码被完好的格式化为符合PSR-2标准的代码了。

嗯,这样视乎看上去很好,在写完代码后执行修复代码操作,但是我们能不能在保存文件的时候就执行上面的修复代码呢?

简单配置 php cs fixer

在当前操作的用户家目录下建立一个$HOME/.phpcsfixer文件,内容大概为:

<?php
$finder = PhpCsFixer\Finder::create()
          ->exclude('tests/')
          ->in(__DIR__)
;

return PhpCsFixer\Config::create()
    ->setRules([
        '@PSR2' => true,
        'align_multiline_comment' => true,
        'no_trailing_whitespace' => true,
        'no_short_echo_tag'=> true,
        'array_syntax' => ['syntax' => 'short'],
        'no_unused_imports' => true,
        'ordered_imports' => ['sortAlgorithm' => 'length']
    ])
    ->setFinder($finder)
;
  • @PSR2 代码满足PSR-2标准
  • align_multiline_comment
  • no_trailing_whitespace 删除非空行尾部的尾部空白
  • no_short_echo_tag 将长格式<?php echo语法替换为简写<?=
  • array_syntax 所有array()的定义都转换成[]的方式
  • no_unused_imports PHP类中没有使用的use类自动删除
  • ordered_imports 按照长度排序

保存时执行php cs fixer

路径是Sublime Text->Preferences->Package Settings->PHP CS Fixer->Setting User

{
  "config": "/Users/curder/.phpcsfixer",
  "on_save": true
}

保存完上面的配置之后,再保存修改过的php文件的时候将自动执行 php cs fixer。 并且也会使用我们定义在~/.phpcsfixer文件中的配置。