Phan:靜態語法分析工具
前言
公司專案需要升級到php7,存在的最大問題是如何保證語法相容性問題,人工一個一個頁面點選來看是否有報錯這個是不現實的。需要一個工具來自動檢測專案是否有不相容php7的語法。於是,用到了phan。
什麼是phan
phan是一個靜態語法相容性工具,它可以分析語法是否符合指定php版本,並將結果輸出到指定檔案。phan可以讓我們在升級的過程中,儘可能的避免語法不相容的問題,並且也可以在平時的專案開發過程中確保專案程式碼質量,避免一些不符合規範的語法出現。有關phan的用法參考:https://packagist.org/packages/phan/phan
安裝phan
最簡單的安裝方式composer: composer global require phan/phan
注意,安裝phan之前,需要安裝php-ast擴充套件,否則會報錯:
安裝php-ast擴充套件:
pecl install ast
安裝完之後,會在/~/.composer/vendor/bin目錄下看到如下檔案:
ok,安裝成功。
配置config.php
要執行phan,需要建立config.php檔案,檔案指定了當前php版本,靜態分析的目錄,忽略的目錄,使用的外掛等。在對應的專案下,建立./phan目錄,將config.php檔案放入此目錄下。我的config.php如下:
開始分析
進入phan所在的目錄,執行命令進行語法分析。
該命令表示根據/***/.phan/config.php配置檔案,執行靜態語法分析,並將結果輸出到/***/.phan/output檔案下。
-k: 配置檔案路徑
-o:輸出結果的檔案
但是這種方式輸出的結果太多,很多都是無用的,加一個引數-y 10 表示只輸出嚴重的錯誤
還有個引數也很必要,-i 表示忽略未定義的方法和類,在輸出的結果中有很多這種報錯,但是專案中是定義了類的,可能是由於名稱空間的問題,導致phan無法找到,所以這種報錯對我的程式沒有影響,我也去掉了。
總結
在執行命令過程中需要用到哪些引數跟你的專案有關,先放開條件,再慢慢的篩選掉一些沒有影響的輸出,逐步的調整,最後只剩下一些嚴重需要調整的報告。