有没有办法在 Visual C++ 2008 Professional 中识别未使用的属性/方法?如果默认情况下不可能,也非常感谢 3rd-party 工具的推荐。
谢谢,
弗洛里安
编辑: nDepend 仅适用于 .NET 程序集。我正在寻找可以与本机 C++ 应用程序一起使用的东西。
有没有办法在 Visual C++ 2008 Professional 中识别未使用的属性/方法?如果默认情况下不可能,也非常感谢 3rd-party 工具的推荐。
谢谢,
弗洛里安
编辑: nDepend 仅适用于 .NET 程序集。我正在寻找可以与本机 C++ 应用程序一起使用的东西。
试试PC-Lint。它非常擅长查找冗余代码。我还没有尝试过版本 9。版本 8 确实需要一些时间来配置。尝试在线交互式演示。
我没有亲自使用过他们的生产力工具(我使用他们的 windows 控制套装),但看起来 DevExpress 有一个名为Refactor 的 C++ refactor'er!对于 C++。我没有立即发现您正在寻找的功能,但也许他们有?
棘手的一点是 C++ 中的许多函数必须存在,即使它们没有被调用。Boost 尤其会导致这种情况,但即使是常规的 STL 代码也可以做到这一点。你的代码必须配合。您可能会定义一个复制 ctor,因为 std::vector 正式需要它。但是,如果您不实例化任何实际复制 T 的 std::vector 成员,则您的复制 ctor 将保持未使用状态。
即使他们不必这样做,他们也经常为了安全而存在。例如,声明私有复制构造函数可以防止对象意外复制。如果没有 private 声明,编译器将为您定义一个公共的、按成员的复制 ctor。现在,这是“未使用”吗?你想被警告吗?
Coverage Validator 可以显示未使用的 C++ 代码(但不能显示属性)。它是动态执行的,因此您必须“执行”应用程序才能获得结果: 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