如何在Visual C ++ 2008中查找未使用的属性/方法
有没有办法在Visual C ++ 2008 Professional中标识未使用的属性/方法?如果默认情况下不可能,那么也非常感谢第三方工具的建议。
谢谢,
弗洛里安
编辑:nDepend仅适用于.NET程序集。我正在寻找可以与本机C ++应用程序一起使用的东西。
解决方案
nDepend会做到这一点,以及打扫房子和带狗散步。有一个免费的nagware版本。
以下代码查询语言语句将为我们提供未使用方法的列表
WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE MethodCa == 0 AND !IsPublic AND !IsEntryPoint AND !IsExplicitInterfaceImpl AND !IsClassConstructor AND !IsFinalizer
我还没有亲自使用过他们的生产力工具(我使用了他们的Windows控件),但是看起来DevExpress有一个称为Refactor的C ++重构器!对于C ++。我没有立即发现我们要寻找的功能,但是也许他们有?
尝试使用PC-Lint。查找冗余代码非常好。
我还没有尝试过版本9. 版本8确实需要花费一些时间来配置。
尝试在线互动演示。
棘手的一点是,即使没有调用C ++中的许多函数,它们也必须存在。
Boost尤其会引起这种情况,但是即使是常规STL代码也可以做到这一点。和代码必须一起玩。我们可能会定义一个副本ctor,因为std :: vector正式需要它。但是,如果我们不实例化任何确实复制T的std :: vector成员,则复制ctor将保持未使用状态。
即使没有必要,它们通常也是出于安全考虑而存在。例如,声明私有副本构造函数可以防止对象意外复制。如果没有私有声明,编译器将为我们定义一个公共的,按成员复制的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配置为忽略这些,但这是第一次完成大量工作。