2014-03-03 74 views
0

當我運行我的PHPUnit測試時,Xdebug生成一個很好的代碼覆蓋率報告,它顯示了我的每個PHP文件中每行代碼的執行次數。如何使用Xdebug來幫助我找到死代碼?

我想在正常使用的一週內爲我的網站獲取相同的報告,以便我可以在我的網站上找到可能不再使用的PHP行。它不是運行我的PHP代碼的單元測試,而是網絡服務器,但我應該能夠獲得相同的報告,對吧?

如何設置Xdebug來收集數據並在現場生成代碼覆蓋率報告?

+0

誰低估了我,請至少讓我知道這個問題出了什麼問題? –

+0

我看到其他文章說Xdebug *可以用於這個,但我不知道如何讓Xdebug開始收集代碼覆蓋數據(http://xdebug.org/docs/code_coverage說這是由調試控制。 coverage_enable,它已經默認爲打開),或者在收集了一些數據後,如何從中生成漂亮的HTML報告。 –

+0

PHPUnit今天正在生成這些報告,類似於Sonar和其他工具。我相信XDebug只是給你報道的統計數據,而不是報告。你必須仔細閱讀XDebug手冊。 –

回答

0

我會回答我自己的問題。 Xdebug提供了一個xdebug_start_code_coverage()調用來開始收集代碼覆蓋率信息,並調用xdebug_get_code_coverage()來檢索有關覆蓋哪些代碼的信息。這很容易適用於單元測試,因爲您通常只關心在受控情況下運行一系列測試所涉及的代碼。 (打開覆蓋範圍,運行測試,然後獲得覆蓋率結果。)但是,對於Web服務器應用程序的任意命中,您可能需要在preDispatch中啓動代碼覆蓋,然後讓postDispatch將統計信息寫入一個數據庫(或以其他方式存儲它們),以便稍後您可以將結果整理成報告。這不是由Xdebug處理的。

Xdebug可以收集cachegrind格式的分析信息,所以我會查看是否可以使用它來幫助查找哪些代碼沒有被調用。