最好的語言也敵不過人類愚蠢:使用PHPStan通過靜態分析儘早捕獲PHP錯誤 - madewithlove
PHP是一種動態語言,雖然這肯定有它的好處,但它也意味著在日誌中看到呼叫未定義方法或無效引數計數的錯誤並不罕見。更糟糕的是,當發生這些型別的錯誤時,應用程式將簡單地崩潰,從而導致糟糕的使用者體驗和沮喪的客戶。
這個問題的解決方案是靜態分析。對於像Java和C#這樣的語言,這不是什麼新東西,它是一個內建的功能,只要編譯程式碼就會執行。
最近出現了各種工具,允許在PHP程式碼上執行靜態分析。僅舉幾例:Psalm,Phan和PHPStan。這些工具的目標是在編寫第一個測試之前減少錯誤數量。
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管道的一部分包含在內。這樣做意味著當開發人員編寫和審查程式碼時,他們可以更多地關注核心功能,而不是擔心語法和型別錯誤使其生產。
相關文章
- PHP工具箱:PHPStan —— PHP 靜態程式碼分析工具PHP
- 錯誤捕獲
- 我作為開發者犯過的兩次愚蠢的錯誤
- 人類擁有智慧和愚蠢兩面,AI要類人,愚蠢是否也必不可少?AI
- Rust編譯器比其他語言更能捕獲隱藏的錯誤 - kerkourRust編譯
- 5個開發人員不應該錯過的最好跨平臺PHP編輯器PHP
- PHP是最好的語言!PHP
- 通過錯誤堆疊資訊和原始碼分析錯誤來源原始碼
- 通過ORA錯誤反思sql語句規範SQL
- c#通過反射動態執行類的例項及靜態方法C#反射
- Wireshark的捕獲過濾器過濾器
- 關於 JavaScript 錯誤捕獲JavaScript
- async和await的錯誤捕獲AI
- 通過Git簡易的部署靜態站點Git
- “最好的語言” PHP 如何造就 Facebook?PHP
- 一個愚蠢的python邏輯語法錯誤Python
- C語言程式碼區錯誤以及編譯過程C語言編譯
- Flutter 錯誤捕獲的正確姿勢Flutter
- #每日一記#通過 GIF 理解 addEventListener、捕獲和冒泡dev
- 通過字串動態建立類物件字串物件
- 使用Laravel框架,怎麼通過訪問/xxxx/ooo.php也通過路由來使用Laravel框架PHP路由
- 通過 GDB 學習 C 語言
- 通過sql語句分析足彩SQL
- PHP使用trycatch,捕獲異常PHP
- PHP類的靜態(static)方法和靜態(static)變數PHP變數
- PHP是世界上最好的語言PHP
- JS 非同步錯誤捕獲二三事JS非同步
- 通過錯誤的sql來測試推理sql的解析過程SQL
- 通過Java反射動態獲取資訊Java反射
- C語言常見錯誤分析 (轉)C語言
- C++最大的敵人是它的過去C++
- [記錄]在高光譜影像分類中遭遇的愚蠢錯誤
- 通過類名動態生成物件物件
- 通過錯誤的sql來測試推理sql的解析過程(二)SQL
- 使用mysqlsniffer捕獲SQL語句MySql
- 先知:AI將在一兩年內超過人類語言能力AI
- 通過反射獲取私有內部類物件反射物件
- 【開發語言】PHP、Java、C語言的編譯執行過程PHPJavaC語言編譯