Static code analysis tools
Tool phổ biến và thiết yếu nhất có lẽ làPHP_CodeSniffer (phpcs), giúp đảm bảo convention của dự án. Nó cung cấp 2 công cụ chính:
Tại Sun* cũng có một bộ quy tắc coding convention mở rộng cho PHP được viết như là một standard của PHPCS. Gần đây, chúng ta vừa có một vài thay đổi về cách cài đặt standard nói trên cho PHPCS. Sunners có thể cài trực tiếp cho từng project thay vì phải cài PHPCS globally, chi tiết đã được cập nhật tại đây. 2. PHP Coding Standards Fixer PHP Coding Standards Fixer (php-cs-fixer)được dùng để fix tự động các lỗi convention thường gặp với tính năng ương tự với toolPHPCBF ở trên, nhưng hoạt động tốt hơn. Có thể bạn đã từng thấy file .php_cs trong folder dự án, đây chính là file cấu hình (xem ví dụ tại đây). 3. PHPMess Detector PHP Mess Detector (phpmd) có thể phát hiện ra rất nhiều vấn tiềm tàng trong mã nguồn như:
4. PHP Copy/Paste Detector PHP Copy/Paste Detector (phpcpd) được dùng để phát hiện những đoạn code trùng lặp trong các file, hay nghi vấn là do copy / paste từ file này sang file khác, có thể vi phạm nguyên tắc DRY. Ngoài ra, có 2 tool được nhắc đến rất nhiều trong thời gian gần đây đó làPHPStan và Psalm với các chức năng như:
Xem thêm danh sách các tool khác tại đây. Với các tool này, bạn hoàn toàn có thể sử dụng trước khi đẩy code lên CI. Việc này có thể được làm thủ công hoặc tích hợp vào IDE, Code Editor hay sử dụng git hooks để check trước khi commit hoặc trước mỗi khi push code lên remote repository (Với PHP project có thể sử dụng https://github.com/captainhookphp/captainhook để tích hợp git hook bằng composer). PHP_CodeSniffer is a set of two PHP scripts; the main phpcs script that tokenizes PHP, JavaScript and CSS files to detect violations of a defined coding standard, and a second phpcbf script to automatically correct coding standard violations. PHP_CodeSniffer is an essential development tool that ensures your code remains clean and consistent.
RequirementsPHP_CodeSniffer requires PHP version 5.4.0 or greater, although individual sniffs may have additional requirements such as external applications and scripts. See the Configuration Options manual page for a list of these requirements. If you're using PHP_CodeSniffer as part of a team, or you're running it on a CI server, you may want to configure your project's settings using a configuration file. InstallationThe easiest way to get started with PHP_CodeSniffer is to download the Phar files for each of the commands: # Download using curl curl -OL https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar curl -OL https://squizlabs.github.io/PHP_CodeSniffer/phpcbf.phar # Or download using wget wget https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar wget https://squizlabs.github.io/PHP_CodeSniffer/phpcbf.phar # Then test the downloaded PHARs php phpcs.phar -h php phpcbf.phar -h ComposerIf you use Composer, you can install PHP_CodeSniffer system-wide with the following command: composer global require "squizlabs/php_codesniffer=*" Make sure you have the composer bin dir in your PATH. The default value is ~/.composer/vendor/bin/, but you can check the value that you need to use by running composer global config bin-dir --absolute. Or alternatively, include a dependency for squizlabs/php_codesniffer in your composer.json file. For example: { "require-dev": { "squizlabs/php_codesniffer": "3.*" } } You will then be able to run PHP_CodeSniffer from the vendor bin directory: ./vendor/bin/phpcs -h ./vendor/bin/phpcbf -h PhiveIf you use Phive, you can install PHP_CodeSniffer as a project tool using the following commands: phive install phpcs phive install phpcbf You will then be able to run PHP_CodeSniffer from the tools directory: ./tools/phpcs -h ./tools/phpcbf -h PEARIf you use PEAR, you can install PHP_CodeSniffer using the PEAR installer. This will make the phpcs and phpcbf commands immediately available for use. To install PHP_CodeSniffer using the PEAR installer, first ensure you have installed PEAR and then run the following command: pear install PHP_CodeSniffer Git CloneYou can also download the PHP_CodeSniffer source and run the phpcs and phpcbf commands directly from the Git clone: git clone https://github.com/squizlabs/PHP_CodeSniffer.git cd PHP_CodeSniffer php bin/phpcs -h php bin/phpcbf -h Getting StartedThe default coding standard used by PHP_CodeSniffer is the PEAR coding standard. To check a file against the PEAR coding standard, simply specify the file's location: phpcs /path/to/code/myfile.php Or if you wish to check an entire directory you can specify the directory location instead of a file. phpcs /path/to/code-directory If you wish to check your code against the PSR-12 coding standard, use the --standard command line argument: phpcs --standard=PSR12 /path/to/code-directory If PHP_CodeSniffer finds any coding standard errors, a report will be shown after running the command. Full usage information and example reports are available on the usage page. DocumentationThe documentation for PHP_CodeSniffer is available on the Github wiki. IssuesBug reports and feature requests can be submitted on the Github Issue Tracker. ContributingSee CONTRIBUTING.md for information. VersioningPHP_CodeSniffer uses a MAJOR.MINOR.PATCH version number format. The MAJOR version is incremented when:
The MINOR version is incremented when:
The PATCH version is incremented when:
|