LoginSignup
8
0

はじめに

こんにちは、エンジニアの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# 

失敗させて自動修正してみる

AppControllerinitialize(): 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>

おわりに

この記事での質問や、間違っている、もっといい方法があるといったご意見などありましたらご指摘していただけると幸いです。

最後まで読んでいただきありがとうございました!

次の記事

8
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
8
0