はじめに
こんにちは、エンジニアのkeitaMaxです。
前回PHPStanを使用してGitHubにPushしてテストを実行させるところを作成しました。
今回はCodeSnifferを使用できるようにしたいと思います。
インストール
すでにインストールされているので、新しくなにかをインストールしなくても大丈夫です。
実行
以下のコマンドで実行します。
composer cs-check
以下のように実行されます。
root@4ab649b0155e:/app# composer cs-check
> phpcs --colors -p
.......... 10 / 10 (100%)
Time: 137ms; Memory: 14MB
root@4ab649b0155e:/app#
失敗させて自動修正してみる
AppController
のinitialize(): void
この記述をinitialize():void
このように半角スペースを消して実行してみます。
以下のようにエラーが出ます。
root@4ab649b0155e:/app# composer cs-check
> phpcs --colors -p
..E....... 10 / 10 (100%)
FILE: /app/src/Controller/AppController.php
-------------------------------------------------------------------------------------------------------
FOUND 2 ERRORS AFFECTING 1 LINE
-------------------------------------------------------------------------------------------------------
40 | ERROR | [x] There must be a single space between the colon and type in a return type declaration
40 | ERROR | [x] There must be exactly one space between return type hint colon and return type hint.
-------------------------------------------------------------------------------------------------------
PHPCBF CAN FIX THE 2 MARKED SNIFF VIOLATIONS AUTOMATICALLY
-------------------------------------------------------------------------------------------------------
Time: 148ms; Memory: 14MB
Script phpcs --colors -p handling the cs-check event returned with error code 2
root@4ab649b0155e:/app#
今度は以下のコマンドで自動修正をしてみます。
composer cs-fix
以下のように実行されます。
root@4ab649b0155e:/app# composer cs-fix
> phpcbf --colors -p
..F....... 10 / 10 (100%)
PHPCBF RESULT SUMMARY
----------------------------------------------------------------------
FILE FIXED REMAINING
----------------------------------------------------------------------
/app/src/Controller/AppController.php 2 0
----------------------------------------------------------------------
A TOTAL OF 2 ERRORS WERE FIXED IN 1 FILE
----------------------------------------------------------------------
Time: 141ms; Memory: 14MB
Script phpcbf --colors -p handling the cs-fix event returned with error code 1
これで自動で修正されました。この状態で再度CodeSnifferで解析してみます。
root@4ab649b0155e:/app# composer cs-check
> phpcs --colors -p
.......... 10 / 10 (100%)
Time: 145ms; Memory: 14MB
root@4ab649b0155e:/app#
エラーがなくなっていて、自動修正が動いているのが確認できました。
設定ファイル
設定ファイルは、'composer.json'と同じ階層にあるphpcs.xmlです。
以下のように設定してあります。
phpcs.xml
<?xml version="1.0"?>
<ruleset name="App">
<config name="installed_paths" value="../../cakephp/cakephp-codesniffer"/>
<rule ref="CakePHP"/>
<rule ref="SlevomatCodingStandard.TypeHints.ReturnTypeHint.MissingNativeTypeHint">
<exclude-pattern>*/src/Controller/*</exclude-pattern>
</rule>
<file>src/</file>
<file>tests/</file>
</ruleset>
おわりに
この記事での質問や、間違っている、もっといい方法があるといったご意見などありましたらご指摘していただけると幸いです。
最後まで読んでいただきありがとうございました!
次の記事