wataridori / framgia-php-codesniffer

The Coding Standard package for Code Sniffer to check whether your codes satisfy the Framgia Standard or not.
MIT License
13 stars 13 forks source link

Whitespace on blank lines? #3

Open tuanpht opened 7 years ago

tuanpht commented 7 years ago

@wataridori Em chào anh, không hiểu sao PSR2 chỉ check whitespace cho non-blank anh nhỉ??

Một dòng không trống không được phép có trailing whitespace (dấu cách ở cuối dòng)

Hiện nay hầu hết các editor, IDE (ST, PHPStorm) đều có chức năng trim whitespace nhưng đều trim cả dòng trống, đôi khi các member trong team ko thống nhất setting nên khi commit thường có thêm nhiều chỗ diff ko cần thiết. Có nên thêm rule check whitespace cho cả dòng trống ko a?

-        
+

-        
+ 
wataridori commented 7 years ago

@tuanpht Chào Tuấn. Về lý do tại sao lại cho phép trailling spaces cho một dòng trống thì theo anh đoán, đó là do khi code sử dụng indent là spaces, đôi lúc em muốn cách dòng (tức bỏ một dòng trống) ở giữa đoạn code, thì em có thể gõ 2 lần enter, và khi đó thì dòng bị bỏ cách sẽ vẫn được indent (tức sẽ có trailing spaces), có thể người ta không coi đó là lỗi chăng :D

PSR-2 chỉ đề cập không thêm trailing spaces ở dòng không trống, chứ không có quy định về việc dòng trống thì có thể có spaces hay không, cái này có thể để cho các team quy định với nhau thôi.

Để khi nào anh làm thêm cái rule check spaces ở dòng trống, ai cần thì active lên vậy :D

tuanpht commented 7 years ago

Anh nói cũng có lý, e dùng ST nó để nguyên indent vậy, còn thử với Vim thì khi save nó lại tự động remove cái indent thừa trên dòng trống :D

Em có thử set cái ignoreBlankLines thành false (PSR-2 đang để true) thì nó check được

<rule ref="Squiz.WhiteSpace.SuperfluousWhitespace">
    <properties>
        <property name="ignoreBlankLines" value="false" />
    </properties>
</rule>

Nhưng còn cái

ai cần thì active lên

thì làm thế nào vậy anh?

wataridori commented 7 years ago

@tuanpht à vậy là hoá ra họ đã có rule đó sẵn rồi :D

vậy em thì chỉ cần tạo ra một file ten là ruleset.xml bên trong project, nội dung thì tham khảo cái file ruleset.xm này https://github.com/wataridori/framgia-php-codesniffer/blob/master/ruleset.xml

Sau đó em thêm cái đoạn ignoreBlankLines ở trên vào là được mà :D

Khi chạy phpcs thì không cần trỏ đến cái rule của Framgia nữa, mà dùng file custom ruleset mà em mới tạo ra ý

phpcs --standard=/path/to/custom_ruleset.xml path/to/codes
tuanpht commented 7 years ago

À được rồi, thanks anh ạ :D Em viết thế này:

<?xml version="1.0"?>
<ruleset name="MyCS">
    <description>Framgia Standard with force checking whitespace on blank lines.</description>
    <arg name="tab-width" value="4"/>

    <rule ref="Framgia"/>
    <rule ref="Squiz.WhiteSpace.SuperfluousWhitespace">
        <properties>
            <property name="ignoreBlankLines" value="false"/>
        </properties>
    </rule>
</ruleset>

À nếu để tên là phpcs.xml thì phpcs tự động sử dụng cái custom rule của mình. https://github.com/squizlabs/PHP_CodeSniffer/wiki/Advanced-Usage#using-a-default-configuration-file