在處理大型項目時,我遇到了一個常見但棘手的問題:如何確保每次提交的代碼都符合新標準,同時又不影響現有代碼的開發效率。傳統的工具如 phpcs 和 phpmd 通常采用“全有或全無”的方法,這意味著要么整個項目都必須符合新標準,要么不使用新標準。這對于大型項目來說,顯然是不現實的。
為了解決這個問題,我找到了 exussum12/coverage-checker 這個庫。它允許我們只對新提交或修改的代碼實施新標準,從而逐步提高整體代碼質量和覆蓋率。這個方法有時被稱為“基線化(Baselining)”。
使用 composer 安裝 exussum12/coverage-checker 非常簡單,只需運行以下命令:
composer require --dev exussum12/coverage-checker
安裝完成后,你可以調用相關的腳本來檢查代碼覆蓋率。例如,你可以生成一個 diff 文件,記錄自上次提交以來的代碼變化:
git diff origin/master... > diff.txt
然后,使用你選擇的工具(如 phpcs)生成一個 json 報告:
phpcs --standard=psr2 --report=json > phpcs.json || true
最后,使用 diffFilter 來檢查新代碼是否符合標準:
./vendor/bin/diffFilter --phpcs diff.txt phpcs.json 100
這里的 100 是可選參數,代表新代碼必須達到 100% 的覆蓋率。你可以根據需要調整這個值,例如設置為 90,以確保至少 90% 的新代碼符合標準。
exussum12/coverage-checker 不僅支持 phpcs,還支持多種工具,如 PHPUnit、phpmd、phpstan 等。你可以根據項目需求選擇合適的工具進行檢查。
通過使用 exussum12/coverage-checker,我成功地在不影響現有代碼的前提下,逐步提高了項目的整體代碼覆蓋率和質量。這個方法不僅提高了開發效率,還確保了代碼的可維護性和可靠性。
總的來說,exussum12/coverage-checker 是一個強大且靈活的工具,通過 Composer 輕松集成,能夠幫助開發團隊逐步實施新標準,提高代碼質量。它的優勢在于可以根據項目的實際情況調整覆蓋率要求,從而在開發效率和代碼質量之間找到平衡。