LoginSignup
0
0

More than 1 year has passed since last update.

PHP:PHP_CodeSnifferでのコーディングルール適用領域の指定方法と例外ルールの設定(XMLファイル)

Last updated at Posted at 2023-02-21

コーディングルール適用も例外ルール設定もXMLファイルを作成して行う。

コーディングルールの適用領域の指定

XMLファイルをゼロから作成

初期記述でひとまず以下だけ書く。
・ルール名称は好みの名称

・ディレクトリvendor内はルール適用外の指定
・エラー箇所の文字は着色して表示する指定
・エラーログ内容を表示する指定

<?xml version="1.0"?>
<ruleset name="Custom PSR12">
<description>A custom PSR12</description>
<file>./</file>
<exclude-pattern>./vendor/*</exclude-pattern>
<arg name="colors"/>
<arg value="s"/>
</ruleset>

ターミナルでXMLファイルを指定してコーディングチェックする

これにより、指定した領域のファイル全てにチェックをかけられる。

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

例外ルールの設定

※例外ルールは本当に例外にしてはならないものもあるがこれはダミー。

超注意! ルールの例外なくPSR12そのままのルールならばその上のargタグの最後のスラッシュと同じスラッシュを入れて終わりだが、以下のexclude(例外)を入れる場合は
(1)スラッシュを削除する
(2)で閉じるを記述する
開発していると、PSRルールそのものでは厳しすぎると言ったことがよく起こる。

<?xml version="1.0"?>
<ruleset name="Custom PSR12">
<description>A custom PSR12</description>
<file>./</file>
<exclude-pattern>./vendor/*</exclude-pattern>
<arg name="colors"/>
<arg value="s"/>
<rule ref="PSR12">
    <exclude name="Generic.NamingConventions.UpperCaseConstantName.ClassConstantNotUpperCase"/>
    <exclude name="PSR1.Files.SideEffects.FoundWithSymbols"/>
    <exclude name="PSR1.Classes.ClassDeclaration.MissingNamespace"/>
    <exclude name="PSR2.Classes.ClassDeclaration.OpenBraceNewLine"/>
    <exclude name="Squiz.Scope.MethodScope.Missing"/>
</rule>
</ruleset>

exclude要素の例外ルール名は、以下のようなエラー情報を表示させられるがそこに書かれている。
例: Generic.ControlStructures.InlineControlStructure.NotAllowed

FILE: /var/www/html/test.php
------------------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
------------------------------------------------------------------------------
 16 | ERROR | [x] Inline control structures are not allowed
    |       |     (Generic.ControlStructures.InlineControlStructure.NotAllowed)
------------------------------------------------------------------------------
PHPCBF CAN FIX THE 1 MARKED SNIFF VIOLATIONS AUTOMATICALLY
------------------------------------------------------------------------------

composer.jsonでコマンドを短縮名化

コーディングチェックは高頻度に利用するため、もっとチェック指示作業を簡単にしたい。
よって、compser.jsonで短縮名登録をしておく。
「scripts」欄で、コマンドを「composer phpcs」と打つだけで実行できるようにしている。

{
    "name": "root/html",
    "autoload": {
        "psr-4": {
            "Root\\Html\\": "src/"
        }
    },
    "require": {},
    "require-dev": {
        "squizlabs/php_codesniffer": "3.*"
    },
    "scripts": {
        "phpcs": "./vendor/bin/phpcs --standard=phpcs.xml"
    }
}

これで、以下のコマンドだけでコーディングチェックが実行できる。

composer phpcs

真っ赤にハイライトして出力される「error code 2」とは

コーディングチェックのコマンドを実行すると、真っ赤に「error」と表示されるためとても気になるが、気にせずOK。
これは、コーディングルールチェックをして規約違反、つまりエラーがあった場合に、PHP_CodeSnifferが出力する情報なだけ。
エラーがなければ0を返し、表示されない模様。

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