PHPCS configuration

File PHPCS config mẫu

Thư mục config phpcs nằm ở thư mục root dự án, tên là .phpcs.xml, phpcs.xml, .phpcs.xml.dist, phpcs.xml.dist

Note: If multiple default configuration files are found, PHP_CodeSniffer will select one using the following order: .phpcs.xml, phpcs.xml, .phpcs.xml.dist, phpcs.xml.dist

File mẫu: https://raw.githubusercontent.com/squizlabs/PHP_CodeSniffer/master/phpcs.xml.dist

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?xml version="1.0"?>
<ruleset name="Framgia Extended">
<!-- Bước 1: Mô tả convention -->
<description>Framgia Extended Coding Convention</description>

<!-- Bước 2: Set các thông tin thêm cho convention thôi -->
<arg name="tab-width" value="4"/>
<arg name="encoding" value="UTF-8"/>
<config name="ignore_warnings_on_exit" value="1"/>

<!-- Bước 3:
<file> Danh sách các file check convention
Ex: Check both app/ and config/ and resources/lang
-->
<file>./app</file>
<file>./config</file>
<file>./resources/lang</file>

<!-- Bước 4: (tùy chọn, có thể có hoặc không)
<exclude-pattern>: Loại bỏ các định dạng file không chạy PHPCS
-->
<exclude-pattern>*/src/Standards/*/Tests/*\.(inc|css|js)$</exclude-pattern>
<exclude-pattern>*/tests/Core/*/*Test\.(inc|css|js)$</exclude-pattern>

<!-- Bước 5: Dùng rule nào để kiểm tra convention, nó sẽ có các chuẩn PEAR, PSR1, PSR2, Framgia -->
<rule ref="Framgia"/>

<!-- Bước 6: Tùy chọn, có thể có hoặc không?
Đoạn sau này sẽ là custom lại các biến nhé.
Ví dụ tag là 4 space, mình không thích và muốn chuyển về 2 chẳng hạn
Chi tiết các tham số trong property https://github.com/squizlabs/PHP_CodeSniffer/wiki/Customisable-Sniff-Properties#psr12operatorsoperatorspacing
-->
<rule ref="Squiz.WhiteSpace.SuperfluousWhitespace">
<properties>
<!-- Force checking whitespace on blank lines -->
<property name="ignoreBlankLines" value="false" />
</properties>
</rule>
<!-- Check space between operator +-*/ -->
<rule ref="Squiz.WhiteSpace.OperatorSpacing">
<properties>
<property name="ignoreNewlines" value="true" />
</properties>
</rule>
<!-- Line between class method -->
<!-- Đoạn code sau có ý nghĩa là: với rule FunctionSpacing, thì `space` là 1, không có `space` nào sau và trước hàm (giá trị mặc định là bao nhiêu méo biết) -->
<rule ref="Squiz.WhiteSpace.FunctionSpacing">
<properties>
<property name="spacing" value="1" />
<property name="spacingAfterLast" value="0" />
<property name="spacingBeforeFirst" value="0" />
</properties>
</rule>
<!-- Space after type cast, e.g. (string) $response -->
<rule ref="Generic.Formatting.SpaceAfterCast" />
</ruleset>

Hãy hiểu property là thay đổi các biến mặc định trong rule đó, nếu bạn muốn chỉnh sửa. Ví dụ trường hợp gần cuối, spacing mặc định có thể đang là 2, mình custom lại 1 :D

Ngoài ra trong từng rule bạn cũng có thể tuỳ chỉnh check những file nào

1
2
3
<rule ref="Generic.PHP.CharacterBeforePHPOpeningTag">
<exclude-pattern>*.phtml</exclude-pattern>
</rule>

Hoặc có thể comment disable một fule trong chính file PHP

1
2
3
4
5
6
7
<?php
/**
* File description
*
* @tags
* @phpcs:disable Standard.Cat.SniffName
*/

Hoặc comment theo hàm

1
2
3
4
// phpcs:disable Generic.Metrics.CyclomaticComplexity
protected function a()
{
}

Ref: https://github.com/squizlabs/PHP_CodeSniffer/issues/1179#issuecomment-446988725

Docs

Author

Ming

Posted on

2020-01-10

Updated on

2021-05-24

Licensed under

Comments