有没有办法在Visual C ++ 2008 Professional中识别未使用的属性/方法?如果默认情况下不可行,那么第三方工具的推荐也非常受欢迎。

谢谢,结果 弗洛里安

编辑: nDepend仅适用于.NET程序集。我正在寻找可以与原生C ++应用程序一起使用的东西。

有帮助吗?

解决方案

尝试 PC-Lint 。它非常适合查找冗余代码。 我还没有尝试过版本9。版本8确实需要一些时间来配置。 试试在线互动演示。

其他提示

我没有亲自使用他们的生产力工具(我使用他们的Windows控件套装),但看起来DevExpress有一个名为重构!对于C ++ 。我没有立即发现你正在寻找的功能,但也许他们有它?

Coverage Validator可以显示未使用的C ++代码(但不显示属性)。它动态执行,因此您必须'exersize'应用程序才能获得结果: http://successfulsoftware.net/2008/03/10/coverage-validator/

棘手的一点是C ++中的许多函数必须存在,即使它们没有被调用。 特别是Boost会导致这种情况,但即使是常规的STL代码也能做到这一点。你的代码必须发挥作用。您可以定义一个副本ctor,因为std :: vector正式要求它。但是,如果您没有实例化任何实际复制T的std :: vector成员,那么您的副本将保持未使用状态。

即使他们不必,但他们经常为了安全而存在。例如,声明私有拷贝构造函数可以防止对象意外复制。如果没有私有声明,编译器将为您定义一个公共的成员复制ctor。现在,这是“未使用”吗?你想得到关于他们的警告吗?

PC-Lint非常强大,但很难瘦。当然,很好地描述了C和C ++不是吗?

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

在搜索未引用的代码时,C ++中存在一些重大问题:模板,回调和消息处理程序可能对您的项目至关重要,但从不直接调用。例如,线程的处理程序不是直接调用的,而是在创建新线程时的参数。 “On_buttonpress” MFC或WTL项目中的类型消息也将显示为未调用的方法。

一旦找到它们,您可以配置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归因
不隶属于 StackOverflow
scroll top