如何利用ShipMonkPHPStanRules提升代碼質(zhì)量

在 ShipMonk,我們一直追求極致的代碼質(zhì)量。雖然 PHPStan 已經(jīng)非常強大,但我們?nèi)匀话l(fā)現(xiàn)一些潛在的問題無法被標(biāo)準(zhǔn)規(guī)則捕捉到。為了解決這個問題,我們開發(fā)了一套自己的 PHPStan 規(guī)則,并將其開源,希望能夠幫助更多的開發(fā)者。

composer在線學(xué)習(xí)地址:學(xué)習(xí)地址

ShipMonk PHPStan Rules 提供了大約 40 個額外的規(guī)則,涵蓋了各種常見的編碼錯誤和不良實踐。例如,它可以幫助你:

  • 禁止比較不可比較的類型,避免意外的對象比較。
  • 強制使用 match 語句處理枚舉,確保所有枚舉值都被正確處理。
  • 禁止在可調(diào)用對象中拋出檢查型異常,避免潛在的異常處理問題。
  • 強制在返回迭代器時指定 $preserve_keys 參數(shù),避免數(shù)據(jù)丟失
  • 禁止在未聲明為整數(shù)的變量上使用自增/自減運算符,避免類型錯誤。
  • 等等…

安裝

使用 composer 安裝 ShipMonk PHPStan Rules 非常簡單:

composer require --dev shipmonk/phpstan-rules

然后,你需要將 rules.neon 文件包含到你的 PHPStan 配置文件中:

立即學(xué)習(xí)PHP免費學(xué)習(xí)筆記(深入)”;

# phpstan.neon includes:     - vendor/shipmonk/phpstan-rules/rules.neon

配置

你可以根據(jù)自己的需求,輕松地禁用或重新配置任何規(guī)則。例如,要禁用 enforceReadonlyPublicProperty 規(guī)則,可以這樣配置:

parameters:     shipmonkRules:         enforceReadonlyPublicProperty:             enabled: false

或者,你可以禁用所有規(guī)則,然后只啟用你需要的規(guī)則:

parameters:     shipmonkRules:         enableAllRules: false          allowComparingOnlyComparableTypes:             enabled: true

示例:allowComparingOnlyComparableTypes 規(guī)則

這個規(guī)則禁止使用比較運算符(>, =, )比較 int|string|float|DateTimeInterface 以外的類型,或者包含可比較類型的相同大小的元組。它主要針對意外的對象、枚舉或數(shù)組比較,這些比較在 PHP 中是有效的,但往往會產(chǎn)生意想不到的結(jié)果。

function example1(Money $fee1, Money $fee2) {     if ($fee1 > $fee2) {} // 比較對象是被禁止的 }  new DateTime() > '2040-01-02'; // 比較不同類型是被禁止的 200 > '1e2'; // 比較不同類型是被禁止的

優(yōu)勢與實際應(yīng)用

ShipMonk PHPStan Rules 的主要優(yōu)勢在于:

  • 提高代碼質(zhì)量: 通過更嚴格的類型檢查和代碼規(guī)范,減少潛在的錯誤。
  • 減少運行時錯誤: 在開發(fā)階段發(fā)現(xiàn)并修復(fù)錯誤,避免在生產(chǎn)環(huán)境中出現(xiàn)問題。
  • 提高開發(fā)效率: 通過自動化代碼審查,減少手動檢查的時間。
  • 促進代碼一致性: 強制執(zhí)行統(tǒng)一的代碼風(fēng)格,提高代碼可讀性和可維護性。

在實際應(yīng)用中,ShipMonk PHPStan Rules 可以幫助你構(gòu)建更健壯、更可靠的 PHP 應(yīng)用程序。它可以應(yīng)用于各種類型的項目,無論是小型個人項目還是大型企業(yè)級應(yīng)用。通過持續(xù)集成和自動化代碼審查,可以確保代碼質(zhì)量始終保持在高水平。

總而言之,ShipMonk PHPStan Rules 是一套非常有價值的 PHPStan 規(guī)則,可以幫助你顯著提升代碼質(zhì)量,減少運行時錯誤,并提高開發(fā)效率。如果你追求卓越的代碼質(zhì)量,那么 ShipMonk PHPStan Rules 絕對值得一試。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊9 分享