最好的語言也敵不過人類愚蠢:使用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
- 錯誤捕獲
- Rust編譯器比其他語言更能捕獲隱藏的錯誤 - kerkourRust編譯
- 人類擁有智慧和愚蠢兩面,AI要類人,愚蠢是否也必不可少?AI
- 我作為開發者犯過的兩次愚蠢的錯誤
- 使用Laravel框架,怎麼通過訪問/xxxx/ooo.php也通過路由來使用Laravel框架PHP路由
- async和await的錯誤捕獲AI
- Wireshark的捕獲過濾器過濾器
- C語言程式碼區錯誤以及編譯過程C語言編譯
- #每日一記#通過 GIF 理解 addEventListener、捕獲和冒泡dev
- Flutter 錯誤捕獲的正確姿勢Flutter
- JS 非同步錯誤捕獲二三事JS非同步
- PHP是世界上最好的語言PHP
- [記錄]在高光譜影像分類中遭遇的愚蠢錯誤
- 解決程式碼中重複的捕獲 promise 錯誤的 try catch 語句Promise
- 【開發語言】PHP、Java、C語言的編譯執行過程PHPJavaC語言編譯
- 錯誤處理:如何通過 error、deferred、panic 等處理錯誤?Error
- 通過類名動態生成物件物件
- 通過觸發器尋找密碼錯誤使用者觸發器密碼
- 通過反射獲取私有內部類物件反射物件
- 尋找適合編寫靜態分析規則的語言
- 先知:AI將在一兩年內超過人類語言能力AI
- 你為什麼不應該過度關注go語言的逃逸分析Go
- Spring Boot通過@ConfigurationProperties訪問靜態資料 - reflectoringSpring Boot
- 如何檢視抓包檔案所使用的捕獲過濾器過濾器
- 如何通過語言提供的能力來防範Log4j之類的漏洞?
- 你信不信?初學C語言的人都犯過這些低階的錯誤!C語言
- 活體檢測API對接php語言方式-人臉靜態/動態活體檢測免費APIPHP
- .net core 靜態類獲取appsettingsAPP
- 多即是好?ChatGPT也學會了人類的語言偏見ChatGPT
- 世界上最好的語言PHP:我也可以用OpenCV搞計算機視覺PHPOpenCV計算機視覺
- 如何透過靜態分析提高iOS程式碼質量iOS
- 通過實體類生成 mysql 的建表語句MySql
- await 錯誤捕獲實現方式原始碼示例解析AI原始碼
- Spring Boot返回靜態錯誤頁面Spring Boot
- 它是世界上最好的語言,吊打PHP那種PHP
- 世界上最好的語言PHP已在我掌控之下PHP
- PHP還是不是最好的語言?PHP在2019年 - stitcher.ioPHP