Share
Trang chủ / Tất cả hướng dẫn / Lập trình web / Tự động chuẩn hóa code style bằng PHP CS Fixer

Tự động chuẩn hóa code style bằng PHP CS Fixer

Hướng dẫn cách fix coding standard một cách tự động bằng PHP-CS-Fixer và tích hợp nó vào PhpStorm

Từ khi qua công ty mới với một CTO rất giỏi , khó tính, cộng với nhu cầu trao đổi code, thay đổi coder cao. Thì vấn đề coding standard được coi trọng nhiều hơn. Nhân tiện mình mới bị nhắc nhở về vấn đề này, mình cũng chia sẻ lại cho các bạn những gì mình vừa học được.

Coding Standard là gì ?

Văn bản có các định dạng khác nhau, thì code cũng vậy. Nhằm mục đích giảm thiểu sự khó chịu, xung đột do khác nhau về coding style giữa các coder khi trao đổi, chia sẻ code cho nhau, người ta đã cùng thống nhất thành một bộ các quy tắc về coding style.

Hãy tưởng tượng xem vài nhìn dòng lộn xộn sẽ biến ngày thứ 6 tươi đẹp của bạn thành tồi tệ như thế nào, và có thể nó còn phá luôn cả hai ngày cuối tuần hiếm hoi mà tuần nào cũng có của bạn. Indent bừa bãi, wrap tự tiện. Nhưng đời sẽ tươi đẹp hơn nhiều nếu ai đó cũng code theo cùng một style giống với bạn, quá tuyệt vời. Bạn có thể dễ dàn tìm ra lỗi bằng mắt thường hơn.

Tùy những tổ chức lớn nhỏ khác nhau mà họ tự tạo cho mình những bộ quy tắc khác nhau. Nhưng chỉ có một vài bộ được sử dụng rộng rãi nhất.

Untitled-1

Có thể kể đến một vài standard phổ biến hiện nhau như : PSR-1, PSR-2, Symfony, WordPress. Trong bài viết này mình không nói nhiều về từng standard này, bạn phải tự mình tìm đọc về nó. Mình sẽ chỉ nói về một công cụ giúp bạn tự động sửa lại style của code để phù hợp với các standard này, và nó tên là PHP CS Fixer

PHP CS Fixer là gì ?

Nó là một công cụ có thể thay bạn chỉnh sửa coding style lại cho phù hợp với các bộ coding standars phổ biến hiện nay. Nếu bạn từng sử dụng PHP_CodeSniffer để kiểm tra coding style, thì cái này cũng tương tự, nhưng thay vì kiểm tra rồi thông báo lại cho bạn, thì nó tự động fix. Tất nhiên là mình chưa muốn nói tới tác dụng phụ của nó là làm cho lập trình viên lười hơn ở đây. Chỉ là hiện tại nó thật tiện lợi, giúp bạn không phải trả giá cho những sai lầm xảy ra trong “quá khứ”. Mà việc ngồi chỉnh coding style cũng rất buồn chán.

Cài đặt PHP CS Fixer

Nó là một dạng php package được đóng gói thành một file  .phar duy nhất. Rất đơn giản là bạn chỉ cần cài đặt php phiên bản 5.3.6 trở lên. Tải file phar về và có thể tận hưởng. Có rất nhiều cách khác nhau để cài đặt PHP CS Fixer.

Cài bằng composer

Với cách này thì bạn có thể áp dụng trên bất cứ hệ điều hành nào, chỉ cần bạn có cài đặt composer. Rồi dùng lệnh sau để cài :

composer global require fabpot/php-cs-fixer

Và nhớ là đưa đường dẫn tới thư mục composer/vendor/bin vào system path.  đại loại nhự vầy, Nó tùy thuộc vào hệ điều hành mà bạn sử dụng :

export PATH="$PATH:$HOME/.composer/vendor/bin"

 Cài đặt thủ công

Rất là thủ công, tải file php-cs-fixer.phar về, bỏ vào đâu đó, rồi thêm path của nó vào PATH trong system variables.

Cài đặt bằng brew

Dùng brew là cách sung sướng nhất, tất cả những gì bạn cần là :

brew install homebrew/php/php-cs-fixer

Thế là xong, mọi thứ đã được settup sẵn cho bạn xài. Chỉ là dùng cách này, thì khi bạn bè gặp sự cố, bạn chẳng biết phải giúp họ như thế nào cả.

Các cách trên là cài đặt globally, Nghĩa là ở bất cứ đâu trong hệ thống, bạn đều có thể gọi lệnh “php-cs-fixer arguments”. Nhưng nếu bạn không thích, thì chỉ đơn giản là tải file .phar về đâu đó, rồi gọi “php php-cs-fixer.phar” để dùng local.

Sau khi cài đặt, các bạn có thể kiểm tra bằng cách xem version của nó như sau :

php-cs-fixer --version

Sử dụng PHP CS Fixer

Cú pháp cũng rất đơn giản, không có nhiều method để phải phân vân. Để fix file hoặc folder bạn dùng method fix :

php-cs-fixer fix /path/to/dir
php-cs-fixer  fix /path/to/file

Đó là cách dùng cơ bản nhất, và tất nhiên là method này cũng hỗ trợ thêm nhiều argument cho phép bạn tùy chọn level fix từ PSR-0 đến Symfony và nhiều tùy chọn khác, Vì những tham số này cũng có thể thay đổi, nên thôi mình không viết lại làm gì các bạn đọc tại trang chủ của họ cho tiện lợi ( Trang chủ ).

PHP CS Fixer cho PhpStorm

PhpStorm thật là tuyền vời, nó đã cứu rỗi đời mình khỏi SublimeText, Yea, mình không có ý chê SublimeText, ý mình là nó đã đưa mình từ chỗ sử dụng editor sang IDE. Editor và IDE thì không bao giờ nên so sánh với nhau.

Giờ bạn mở PhpStorm lên, Vào Project Settings, Tìm đến Tools -> External Tools. Ấn vào dấu + để thêm một tool mới, sau đó setting như sau :

PHP-CS Fixer with PHPStorm
PHP-CS Fixer with PHPStorm

Tất nhiên là các trường này sẽ khác nhau tùy thuộc vào cách bạn cài đặt PHP-CS-Fixer cũng như bạn có thể thêm các argument khác vào. Nếu bạn gặp lỗi báo là php-cs-fixer not found, thì có thể là do path của file chưa được cập nhật, trường hợp đó bạn có thể fix bằng cách điền đường dẫn tuyệt đối của php-cs-fixer vào chỗ Program. Để biết nó nằm ở đâu, bạn dùng :

which php-cs-fixer

Nó sẽ trả về một đường dẫn, trong máy mình thì nó là /usr/local/bin/php-cs-fixer. Nên mình sẽ điền vào phần program như sau :

php /usr/local/bin/php-cs-fixer.phar

Bây giờ bạn có thể vào menu Tools -> External Tools, bạn sẽ thấy có item là php-cs-fixer, sau khi ấn vào, thì code của file hiện tại mà bạn đang mở sẽ tự động được fix style.

Nếu bạn muốn tiện lợi hơn, thì có thể tạo icon cho nó ở tool bar, Để biết làm thế nào thì bạn vui lòng xem video nhé.

Lời kết

Thực ra bạn cũng không nên lạm dụng công cụ này, nó sẽ hữu ích khi bạn phải làm việc với code của người khác, hoặc khai quật code xưa cũ, những khi đó thì việc ngồi chỉnh lại style là tốn kém không cần thiết, sử dụng công cụ này là một lựa chọn đúng. Nhưng nếu hằng ngày bạn sử dụng nó để format code của mình, để rồi tự cho phép mình sử dụng một style cẩu thả, thì không tốt chút nào. Thế nên hãy cẩn thận nhé.

Bài viết này có tính giới thiệu, chứ không có kỹ thuật gì mới mẻ, vì vậy có thể là hơi nhàm chán. Nếu bạn có ý kiến gì để giúp cho nó tốt hơn, vui lòng comment ở dưới.