是否有任何工具/方法可以检测/删除c ++代码中所有未使用的变量,宏,标题(包括)和函数?

Sre*_*kar 14 c++ devtools code-cleanup

我必须自定义一些为其他目的而编写的项目,但是我的项目的一些核心功能是相同的,并且按原样工作.但是有很多变量,宏,函数等......这些对我当前的上下文没用,它们只是让代码非常难以阅读而且不必要的大.

所以我开始使用Netbeans中的"查找引用"和"显示调用图"来删除变量宏函数等.我正在使用netbeans远程开发工具来实现c/c ++.但它繁琐.那么有没有工具可以做到这一点清理?

bit*_*tek 10

据我所知,目前还没有工具可以完成你提到的所有事情,但有一个工具可以帮助清理未使用的包含标题:include-what-you-use

" 包括你使用的东西 "意味着:对于你在foo.cc中使用的每个符号(类型,函数变量或宏),foo.cc或foo.h应该#include一个.h文件,导出该声明符号.include-you-you-use工具是一个可以使用clang库构建的程序,用于分析源文件的#includes以查找包含 - 使用中的违规行为,并为它们提供修复建议.

包括你使用什么的主要目标是删除多余的#includes.它通过确定此文件实际上不需要#includes(对于.cc和.h文件)以及在可能的情况下将#includes替换为forward-declares来实现这一点.

人们可能会认为Clang静态分析仪会这样做,但从我看到的可用性检查不提供这样的东西.

这可能是某人向分析仪建议功能请求或使用LibTooling创建单独工具的好时机,与Clang Tools中描述的工具类似

在此期间,我建议您启用-Wall-Wextra编译器标志,这将触发以下警告(以及其他)(请参阅下面的GCC文档):

  • -Wunused功能
  • -Wunused标签
  • -Wunused价值
  • -Wunused可变
  • -Wunused参数
  • -Wunused-但设置参数

如果由于某种原因你不想这样做,你可以添加-Wunused,这将只启用上述-Wunused选项,而不使用-Wall或-Wextra添加的其他标志.

但是为了获得有关未使用的函数参数的警告,您必须指定-Wextra -Wunused(注意-Wall暗示-Wunused),或单独指定-Wunused-parameter.

当然,这意味着您必须手动进行清理

如果你想变得更加迂腐,你可以通过添加-pedantic-errors标志将所有警告转换为错误

有关更多详细信息,请阅读GCC警告选项文档.