有没有办法在Visual C ++ 2008 Professional中识别未使用的属性/方法?如果默认情况下不可行,那么第三方工具的推荐也非常受欢迎。
谢谢,
弗洛里安
编辑: nDepend仅适用于.NET程序集。我正在寻找可以与原生C ++应用程序一起使用的东西。
答案 0 :(得分:6)
试试PC-Lint。它非常适合查找冗余代码。 我还没有尝试过版本9。版本8确实需要一些时间来配置。 试试在线互动演示。
答案 1 :(得分:0)
我没有亲自使用他们的生产力工具(我使用他们的Windows控件套装),但看起来DevExpress有一个名为Refactor! for C++的C ++重构器。我没有立即发现你正在寻找的功能,但也许他们有它?
答案 2 :(得分:0)
棘手的一点是C ++中的许多函数必须存在,即使它们没有被调用。 特别是Boost会导致这种情况,但即使是常规的STL代码也能做到这一点。你的代码必须发挥作用。您可以定义一个副本ctor,因为std :: vector正式要求它。但是,如果您没有实例化任何实际复制T的std :: vector成员,那么您的副本将保持未使用状态。
即使他们不必,但他们经常为了安全而存在。例如,声明私有拷贝构造函数可以防止对象意外复制。如果没有私有声明,编译器将为您定义一个公共的成员复制ctor。现在,这是“未使用”,你想要被警告吗?
答案 3 :(得分:0)
Coverage Validator可以显示未使用的C ++代码(但不显示属性)。它动态执行,因此您必须'exersize'应用程序才能获得结果: http://successfulsoftware.net/2008/03/10/coverage-validator/
答案 4 :(得分:0)
PC-Lint非常强大,但很难瘦。当然,很好地描述了C和C ++不是吗?
我认为非常出色的另一个工具是Whole Tomato的 Visual Assist X ,它集成到IDE中。
在搜索未引用的代码时,C ++中存在一些重大问题:模板,回调和消息处理程序可能对您的项目至关重要,但从不直接调用。例如,线程的处理程序不是直接调用的,而是在创建新线程时的参数。 MFC或WTL项目中的“On_buttonpress”类型消息也将显示为未调用的方法。
一旦找到它们,您可以配置PC-Lint忽略这些,但第一次通过它的大量工作。
答案 5 :(得分:-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