1. 程式人生 > >PHP_CodeSniffer 簡介,及 VS Code 擴充使用 « 關於網路那些事...

PHP_CodeSniffer 簡介,及 VS Code 擴充使用 « 關於網路那些事...

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=*"

將composer 加到 $PATH

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

另外,安裝 php-cs-fixer

composer global require friendsofphp/php-cs-fixer

檢查版本

檢查版本,確定安裝成功

phpcs --version
phpcbf --version

設定預設檢查標準

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

phpcs --config-set default_standard PSR2

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

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 安裝以下兩個擴充

另外推薦安裝

專案

在專案安裝

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 <[email protected]>
 * @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 <[email protected]>
 * @license  https://www.language-center.com.tw/ Licence
 * @link     https://www.language-center.com.tw/
 */
class MyController extends Controller
{

要修改設定值為 PSR2 即可

shift + command + P
輸入

>Workspace Settings

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

{
    "phpcs.standard": "psr2"
}

如果你喜歡我們的文章內容,請在這裡按個讚