LoginSignup
1
0

More than 1 year has passed since last update.

【PHP】PHP_CodeSniffer でコードを整形する

Last updated at Posted at 2021-10-17

はじめに

チーム開発をしているときに各々のルールでコードを書いていたらいつのまにかコードがカオスに…。
なんてことないように同じルールにそってコードが整形されていったら便利ですよね。

PHPに PHP CS FixerPHP_CodeSniffer という 規約にそってコードを読み取ってくれるライブラリ があります。
今回は PHP_CodeSniffer について導入手順と使用方法について見ていきます。
(※ PHP CS Fixer、規約については後日執筆予定です。)

目次

Installation

codesniferを使用したいのは開発環境のみなので -—dev を付けます。

composer require "squizlabs/php_codesniffer=3.*" --dev

composer については以下参照。

Getting Started

PHP_CodeSniffer が導入できたのでプロジェクトで使用できるようになります。

psr-12 にそって検知・整形をしいきます。

# 規約に反している箇所を検知
./vendor/bin/phpcs --standard=PSR12 [対象ファイル]
# 規約に沿って整形
./vendor/bin/phpcbf --standard=PSR12 [対象ファイル]

Usage

オプションなど詳細な使用方法はこちらです。

使いやすいように

上のコマンドを毎回打つのは面倒です。(覚えられませんし…)
そこであらかじめルールを書いた設定ファイルを用意し、それを使用して使えるようにしていきます。

phpcs.xml

ルート直下にphpcs.xmlを作成。

touch phpcs.xml

PSR12 に対応。

./phpcs.xml
<?xml version="1.0"?>
<ruleset name="Custom Standard" namespace="MyProject\CS\Standard">

  <description>PSR12</description>
  <!-- 対象ファイル -->
  <file>./</file>

  <!-- 除外したいファイル -->
  <exclude-pattern>./vendor/*</exclude-pattern>

  <!-- 色を付けてわかりやすく -->
  <arg name="colors"/>

  <!-- s: エラー時ルール表示, p: 進捗表示 -->
  <arg value="sp"/>

  <!-- 適用規約 -->
  <!-- PSR-12 PSR-1が前提となっているので -->
  <rule ref="PSR12"/>
</ruleset>

コマンド

./vendor/bin/phpcs --standard=phpcs.xml 
./vendor/bin/phpcbf --standard=phpcs.xml 

カスタムコマンドの追加

さらに簡単に使用できるように composer.jsonscripts に追記していきます。

composer.json
"scripts": {
        "phpcs": "./vendor/bin/phpcs --standard=phpcs.xml",
        "phpcbf": "./vendor/bin/phpcbf --standard=phpcs.xml"
}

コマンド

直感的に使用できるようになりますね。

composer phpcs
composer phpcbf

おわりに

以上のような設定をチーム内で決めておくことで
規約に沿って開発をすすめることができます。
また、規約にそって書くという意識もチーム全体で芽生えるのかなと思いました。
このようにすることでコードレビューの際レビュワーも気にせず見れますし
可読性も上がっていると感じています!

参考文献

規約

GitHub

Composer

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0