簡體   English   中英

如何在Visual C ++ 2008中查找未使用的屬性/方法

[英]How to find unused attributes/methods in Visual C++ 2008

有沒有辦法在Visual C ++ 2008 Professional中識別未使用的屬性/方法? 如果默認情況下不可行,那么第三方工具的推薦也非常受歡迎。

謝謝,
弗洛里安

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

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

我沒有親自使用他們的生產力工具(我使用他們的Windows控件套裝),但看起來DevExpress有一個名為Refactor的C ++重構器 對於C ++ 我沒有立即發現你正在尋找的功能,但也許他們有它?

棘手的一點是C ++中的許多函數必須存在,即使它們沒有被調用。 特別是Boost會導致這種情況,但即使是常規的STL代碼也能做到這一點。 你的代碼必須發揮作用。 您可以定義一個副本ctor,因為std :: vector正式要求它。 但是,如果您沒有實例化任何實際復制T的std :: vector成員,則您的副本ctor將保持未使用狀態。

即使他們不必,他們也經常為了安全而存在。 例如,聲明私有拷貝構造函數可以防止對象意外復制。 如果沒有私有聲明,編譯器將為您定義一個公共的成員復制ctor。 現在,這是“未使用”,你想要被警告嗎?

Coverage Validator可以顯示未使用的C ++代碼(但不顯示屬性)。 它是動態的,所以你必須'exersize'應用程序才能得到結果: http//successfulsoftware.net/2008/03/10/coverage-validator/

PC-Lint非常強大,但很難瘦。 當然那很好描述C和C ++不是嗎?

我認為非常出色的另一個工具是Whole Tomato的Visual Assist X ,它集成到IDE中。

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

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

nDepend會這樣做,同時打掃房子,帶狗散步。 有一個nagware版本免費提供。

以下代碼查詢語言語句將為您提供未使用方法的列表

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM