PHP COdeSniffer 包含了兩個 PHP script

  • phpcs(PHP Code Sniffer),可以檢查程式碼風格
  • phpcbf (PHP COde Beautifier and Fixer),自動修正程式碼風格

在 VS Code 會使用下面這個擴充

  • php-cs-fixer ,自動修正程式碼風格

安裝

使用 composer 全域安裝

composer global require "squizlabs/php_codesniffer=*"

另外,安裝 php-cs-fixer

composer global require friendsofphp/php-cs-fixer

將composer 加到 $PATH

export PATH=~/.composer/vendor/bin:$PATH

檢查版本

檢查版本,確定安裝成功

phpcs --version
phpcbf --version

設定預設檢查標準

將預設檢查的標準設定為 PSR-12

phpcs --config-set default_standard PSR12

可以透過下面方式檢查設定

phpcs --config-show

PEAR

基本用法

建構一個檔案 myfile.php

<?php

class myfile {
    protected $exam;
    protected $results;

    function __construct($exam = 59, $result = false) {
        if ($this->exam < 59) {
            $this->results = false;
        }else{
	    $this->results = true;
	}
    }
}

phpcs 檢查錯誤

phpcs myfile.php 

phpcbf 修正錯誤

phpcbf myfile.php

也可以透過 –suffix 可以將修正檔案獨立出來成為另一個副檔名,例如 .fixed 而不會影響到現有檔案

phpcbf --suffix=.fixed myfile.php

VS Code 擴充

在 VS Code 安裝以下兩個擴充

phpcs https://marketplace.visualstudio.com/items?itemName=ikappas.phpcs

php cs fixer https://marketplace.visualstudio.com/items?itemName=junstyle.php-cs-fixer

另外推薦安裝

PHP DocBlocker - 方便增加 DocBlock tags https://marketplace.visualstudio.com/items?itemName=neilbrayfield.php-docblocker

專案

在專案安裝

composer require --dev squizlabs/php_codesniffer

接著就能在程式碼自動看到提示

接著按右鍵,可以看到 Format Document

修改 PHPCS 預設 Commend

VS Code 安裝的phpcs 預設套用的是 PEAR

在一開始的 doc comment 預設至少要依序填寫 category, package, author, license, link 這五項

例如

<?php
/**
 * 功能標題
 * 
 * PHP version 7.2
 * 
 * @category PHP
 * @package  PHP_COdeSniffer
 * @author   Adam <adam.ouyang@language-center.com.tw>
 * @license  https://www.language-center.com.tw/ Licence
 * @link     https://www.language-center.com.tw/
 */
namespace App\Http\Controllers;

在 class 則同樣預設至少要依序填寫 category, package, author, license, link 這五項

<?php
...
/**
 * 類別標題
 * 
 * @category PHP
 * @package  PHP_COdeSniffer
 * @author   Adam <adam.ouyang@language-center.com.tw>
 * @license  https://www.language-center.com.tw/ Licence
 * @link     https://www.language-center.com.tw/
 */
class MyController extends Controller
{

要修改設定值為 PSR12 即可

shift + command + P 輸入

>Workspace Settings

點選左上角 … 選擇 Open Setting.json 在 workspace 設定

{
    "phpcs.standard": "psr2"
}

執行

phpcs app

如果要手動指定規則,可以用以下方式

phpcs --standard=psr12 app

or

./vendor/bin/phpcs --standard=psr12 app