我們有一個PHP腳本的代碼庫,我們要將其轉換爲新的編碼約定。我們正在考慮自動美化將腳本轉換爲新標準。我們希望確保代碼仍然像最初一樣工作。我們可以在命令行上使用php -l
以確保沒有錯誤,但我們想要進入下一步,以確保舊的格式化功能與新功能相同。php編譯器比較代碼?
有沒有一種方法可以編譯二進制文件或新舊版本中的任何一種,以確保它們是相同的?我假設壓縮,換行符等被忽略在一個編譯的形式?
我們有一個PHP腳本的代碼庫,我們要將其轉換爲新的編碼約定。我們正在考慮自動美化將腳本轉換爲新標準。我們希望確保代碼仍然像最初一樣工作。我們可以在命令行上使用php -l
以確保沒有錯誤,但我們想要進入下一步,以確保舊的格式化功能與新功能相同。php編譯器比較代碼?
有沒有一種方法可以編譯二進制文件或新舊版本中的任何一種,以確保它們是相同的?我假設壓縮,換行符等被忽略在一個編譯的形式?
您可以比較php字節碼和bytekit-cli (blogpost)/(github project)。
查看您的新舊代碼是否生成相同的php字節碼。知道你可以很確定一切都會工作。 (如果你使用註釋,我不確定那是怎麼解決的)
請在舊腳本和新腳本上撥打token_get_all,然後將結果與您的更改(添加/刪除的空格,製表符,花括號,甚至某些地方的逗號和逗號)進行比較。
我會建議使用phc。解析每個文件並生成XML輸出,並比較前後的XML輸出。
phc --dump-xml filename.php
當然,部分問題可能是你的美化不使用真正的解析器,所以有可能會出錯(我不知道,我沒有看過它)。 phc有一個基於真正解析器的--pretty-print
選項,所以你可能會有更好的運氣。
你的[單元測試](http://en.wikipedia.org/wiki/Unit_testing)在哪裏? – meagar 2011-02-16 16:58:44
真的,你應該有什麼(如果你沒有寫,現在就寫)是單元測試,它會指出是否有任何行爲改變。這樣,您可以對代碼庫進行任何更改,並且仍然知道它是否全部有效。 – 2011-02-16 16:59:21