2011-03-08 151 views
1

我開始從以前的程序員C++代碼工作。我知道有很多不被調用的函數和未被使用和/或初始化的變量。我想知道是否有一些工具可以自動「清理」代碼並刪除所有這些未使用的代碼。我正在談論源代碼,而不是最終的構建輸出。我更喜歡開源解決方案。如何刪除未使用的變量和函數

+0

我只是不知道如何編程代碼讓得到這個方式。我癡迷地清理了我不使用的東西。如果後來發現它們確實有助於達到某種目的,則源代碼控制可以讓我們將它們還原。 – 2011-03-08 09:35:21

+0

我完全同意你的意見。但在這種情況下,我正在與其他程序員的代碼工作,我必須清理它,所以我沒有其他解決方案:) – flow 2011-03-08 11:46:12

回答

0

許多編譯器/鏈接器會在一定程度上修剪您的代碼,如Visual C++/OPT:REF切換。

+0

謝謝。那麼開源工具呢? – flow 2011-03-08 09:32:13

+0

@Werner:這是有點[重複] [這個問題](http://stackoverflow.com/questions/1677585/pruning-a-static-library-in-c)...我不知道任何開源工具,但我不認爲他們可以做很多事情,因爲他們需要內部的代碼知識,只有編譯器/鏈接器纔有。 – Mehrdad 2011-03-08 09:33:57

+1

我們是在談論構建輸出或源代碼?我很想知道是否有一些工具可以完成後者。最好。 – JoeSlav 2011-03-08 09:34:28

0

你也許能夠得到一些有用的東西了運行CPPCheck執行代碼的靜態分析。將所有錯誤作爲警告處理也將有助於確定哪些變量未被使用,因爲代碼在解決之前不會被編譯。

你可以做的另一件事是創建一套單元測試來覆蓋預期的功能,並通過覆蓋工具(如gcov,如果你使用GCC)運行它,這將顯示哪些代碼行被執行和多少次。

0

這是編譯器/連接器的工作,從您的文件中去掉死代碼。 編譯源代碼用gcc標誌-fdata截面和-ffunction截面然後用標誌-GC-部分鏈接您的二進制文件。

我想你也可以產生在編譯時靜態未使用的變量警告。

最後,你可以使用gcov的或同等工具,代碼覆蓋率