1. 程式人生 > >Phan:靜態語法分析工具

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無法找到,所以這種報錯對我的程式沒有影響,我也去掉了。

總結

在執行命令過程中需要用到哪些引數跟你的專案有關,先放開條件,再慢慢的篩選掉一些沒有影響的輸出,逐步的調整,最後只剩下一些嚴重需要調整的報告。