最好的語言也敵不過人類愚蠢:使用PHPStan通過靜態分析儘早捕獲PHP錯誤 - madewithlove

banq發表於2019-08-13

PHP是一種動態語言,雖然這肯定有它的好處,但它也意味著在日誌中看到呼叫未定義方法或無效引數計數的錯誤並不罕見。更糟糕的是,當發生這些型別的錯誤時,應用程式將簡單地崩潰,從而導致糟糕的使用者體驗和沮喪的客戶。

這個問題的解決方案是靜態分析。對於像Java和C#這樣的語言,這不是什麼新東西,它是一個內建的功能,只要編譯程式碼就會執行。

最近出現了各種工具,允許在PHP程式碼上執行靜態分析。僅舉幾例:PsalmPhanPHPStan。這些工具的目標是在編寫第一個測試之前減少錯誤數量。

PHPStan要求在環境中安裝PHP 7.1才能執行,但是它需要分析的程式碼可以是為PHP 5.6編寫的。PHPStan可以通過Composer安裝到任何專案中:

composer require --dev phpstan/phpstan

安裝後,二進位制檔案可用於分析目錄並輸出遇到的任何錯誤。

vendor/bin/phpstan analyze src

PHPStan具有不同的規則級別,每個級別都比以前更嚴格。預設情況下,它將使用級別0來檢查“明顯”的錯誤,例如傳遞額外的引數或語法錯誤。這個級別是啟動遺留程式碼庫的好地方,隨著時間的推移,可以提高階別以進行更嚴格的分析。還有一個  最大的是針對靜態較真,這將始終執行可用的最高階別的水平。

PHPStan可能會輸出某些錯誤,這些錯誤不是真正的錯誤,而是第三方包或框架新增的魔術行為的結果。可以通過Composer 安裝相關擴充套件並在phpstan.neon檔案中配置來修復這些錯誤。

includes:
    - ../vendor/phpstan/phpstan-doctrine/extension.neon

請務必閱讀完整的文件,瞭解可能的內容。

在我們的許多專案中,PHPStan作為CI管道的一部分包含在內。這樣做意味著當開發人員編寫和審查程式碼時,他們可以更多地關注核心功能,而不是擔心語法和型別錯誤使其生產。

 

相關文章