Bagaimana cara menggunakan skrip cangkuk pra-komit untuk menyemak dan membetulkan masalah secara automatik yang tidak mematuhi spesifikasi kod PHP terkini sebelum penyerahan kod?
Dalam proses pembangunan perisian, kualiti kod adalah aspek yang sangat penting. Spesifikasi kod yang baik boleh menjadikan kod mudah dibaca, difahami dan diselenggara. Contohnya, untuk kod PHP, mengikut spesifikasi PSR (Pengesyoran Standard PHP) boleh meningkatkan kebolehbacaan dan kebolehselenggaraan kod.
Untuk memastikan kualiti kod sebelum ahli pasukan menyerahkan kod, anda boleh menggunakan skrip cangkuk prakomit dalam cangkuk Git untuk menyemak dan membetulkan masalah secara automatik yang tidak mematuhi spesifikasi kod PHP terkini. Ini membolehkan ahli pasukan mengenal pasti dan menyelesaikan isu spesifikasi kod dengan serta-merta sebelum melakukan kod, meningkatkan kualiti kod keseluruhan.
Skrip cangkuk prakomit boleh menjadi mana-mana fail skrip boleh laku yang boleh dijalankan sebelum setiap komit. Dalam contoh ini, kami akan menggunakan alat PHP_CodeSniffer untuk menyemak spesifikasi kod dan PHP-CS-Fixer untuk menyelesaikan masalah secara automatik.
Berikut ialah contoh skrip cangkuk pra-komit yang menggunakan PHP_CodeSniffer dan PHP-CS-Fixer:
#!/bin/sh # Run PHP_CodeSniffer ./vendor/bin/phpcs --standard=PSR2 --colors --ignore=vendor/,tests/ --report=emacs # Run PHP-CS-Fixer ./vendor/bin/php-cs-fixer fix --rules=@PSR2 --using-cache=no --verbose --dry-run # Check the exit code of the previous commands if [ $? -ne 0 ]; then echo "Code style check failed. Please fix the issues before committing." exit 1 fi
Skrip di atas mula-mula menggunakan PHP_CodeSniffer untuk menyemak spesifikasi kod, --standard=PSR2
bermaksud Gunakan spesifikasi PSR2 untuk menyemak dan gunakan parameter --ignore=vendor/,tests/
untuk mengabaikan direktori vendor dan direktori ujian. --colors
bermaksud menggunakan output berwarna dan --report=emacs
bermaksud menggunakan format laporan mudah dibaca Emacs. --standard=PSR2
表示使用 PSR2 规范进行检查,并使用 --ignore=vendor/,tests/
参数来忽略 vendor 目录和 tests 目录。--colors
表示使用彩色输出,--report=emacs
表示使用 Emacs 易于阅读的报告格式。
接下来,脚本使用 PHP-CS-Fixer 来自动修复代码规范问题。--rules=@PSR2
表示使用 PSR2 规范进行修复,--using-cache=no
表示不使用缓存,--verbose --dry-run
表示输出详细的修复信息但不实际修改文件。
最后,脚本检查上述两个命令的退出代码。如果有任何问题,脚本会输出错误信息并退出。
要使用这个预提交钩子脚本,您需要将其保存为 .git/hooks/pre-commit
文件,并使其可执行。您还需要安装 PHP_CodeSniffer 和 PHP-CS-Fixer。在上面的脚本中,我们假设这两个工具已经通过 Composer 安装在 vendor/bin
--rules=@PSR2
bermaksud menggunakan spesifikasi PSR2 untuk pembaikan, --using-cache=no
bermaksud tidak menggunakan cache, --verbose --dry -run
bermaksud mengeluarkan maklumat pembaikan terperinci tetapi sebenarnya tidak mengubah suai fail. Akhir sekali, skrip menyemak kod keluar dua arahan di atas. Jika terdapat sebarang masalah, skrip akan mencetak mesej ralat dan keluar. Untuk menggunakan skrip cangkuk prakomit ini, anda perlu menyimpannya sebagai fail .git/hooks/pre-commit
dan menjadikannya boleh laku. Anda juga perlu memasang PHP_CodeSniffer dan PHP-CS-Fixer. Dalam skrip di atas, kami menganggap bahawa kedua-dua alatan ini telah dipasang dalam direktori vendor/bin
melalui Composer. 🎜🎜Apabila anda menyerahkan kod, skrip cangkuk prakomit ini akan berjalan secara automatik dan menyemak spesifikasi kod. Jika terdapat sebarang isu ketidakpatuhan, skrip akan mencetak mesej ralat yang sepadan pada baris arahan dan menghalang kod daripada diserahkan. Anda perlu menyelesaikan isu ini sebelum anda berjaya menyerahkan kod anda. 🎜🎜Dengan menggunakan skrip cangkuk prakomit untuk menyemak dan membetulkan isu spesifikasi kod secara automatik, anda boleh memastikan ahli pasukan mengikuti spesifikasi kod PHP terkini sebelum melakukan kod, dengan itu meningkatkan kualiti kod keseluruhan. Ini amat penting untuk projek dan pasukan besar, kerana ia boleh mengurangkan beban kerja semakan kod, meningkatkan kecekapan pembangunan dan mengurangkan risiko potensi pepijat. Menggunakan contoh ini, anda boleh menyesuaikan skrip cangkuk prakomit anda mengikut keperluan pasukan anda dan konvensyen pengekodan khusus. 🎜Atas ialah kandungan terperinci Bagaimana untuk menggunakan skrip cangkuk pra-komit untuk menyemak dan membetulkan masalah secara automatik yang tidak mematuhi spesifikasi kod PHP terkini sebelum penyerahan kod?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!