9

有沒有方法在Visual C++ 2008 Professional中識別未使用的屬性/方法?如果默認情況下不可行,第三方工具的建議也非常感謝。如何在Visual C++ 2008中查找未使用的屬性/方法

感謝,
弗洛裏安

編輯: NDepend的僅適用於.NET程序集。我正在尋找可以用於本機C++應用程序的東西。

回答

6

嘗試PC-Lint。它非常適合尋找冗餘代碼。 我還沒有嘗試版本9。版本8確實需要一些時間進行配置。 嘗試在線互動演示。

+0

這正是我一直在尋找的。 Visual Studio有一個集成了PC-Lint的VisualLint插件。一個較便宜的解決方案應該沒問題,但似乎沒有任何東西存在。 – fhe 2008-10-02 10:05:23

-2

nDepend將做到這一點,隨着清潔你的房子,並採取散步的狗。有一個免費的nagware版本。

下面的代碼查詢語言的語句將讓你的未使用的方法

WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE MethodCa == 0 AND 
    !IsPublic AND !IsEntryPoint AND !IsExplicitInterfaceImpl AND 
    !IsClassConstructor AND !IsFinalizer 
+1

謝謝,但nDepend似乎只適用於.NET程序集。 – fhe 2008-09-29 14:33:39

0

我沒有親自使用他們的生產力工具(我使用他們的Windows控制套),但它看起來像的DevExpress有一個C++的列表重構所謂的Refactor! for C++。我沒有立即發現你正在尋找的功能,但也許他們有它?

0

棘手的是,C++中的許多函數都必須存在,即使它們沒有被調用。 Boost尤其會導致這種情況,但即使是常規的STL代碼也可以做到這一點。你的代碼必須一起玩。你可以定義一個拷貝ctor,因爲std :: vector正式需要它。但是,如果您沒有實例化任何實際上覆制T的std :: vector成員,您的副本將保持未使用狀態。

即使他們不需要,他們也經常爲了安全而存在。例如,聲明私有拷貝構造函數可以防止對象意外複製。如果沒有私人聲明,編譯器會爲你定義一個公共的,成員級的拷貝文件。現在,這是「未使用」,你想警告他們嗎?

0

PC-Lint非常強大,但很難傾斜。當然,這很好地描述了C和C++不是嗎?

我認爲很好的另一個工具是Whole Tomato的Visual Assist X,它集成到IDE中。

在搜索未引用的代碼時,C++中有一些大的陷阱:模板,回調和消息處理程序可能對您的項目至關重要,但不會直接調用。例如,線程的處理程序不是直接調用的,而是在創建新線程時的一個參數。 MFC或WTL項目中的「On_buttonpress」類型消息也將顯示爲未調用的方法。

一旦你找到它們,你可以配置PC-Lint忽略這些,但第一次通過它的很多工作。

+4

您能否詳細說明Visual Assist X如何幫助查找未使用的代碼? – 2009-06-10 06:49:43

相關問題