扫描头文件的程序,并报告可利用的代码?

时间:2012-11-22 06:36:52

标签: c++ c header static-analysis

当我包含一个头文件时,我常常想知道是什么内容。

  • 我现在可以使用哪些功能?
  • 我可以实例化哪些类以及它们的功能是什么?
  • 是否包装在命名空间中?
  • 全局命名空间中有什么内容吗?

文档并不总是回答这些问题,也不提供任何保证。

我可以查看源代码,但是对于包含其他标题树的大型头文件也很难观察到。
有什么好的程序可以做这种分析吗?

3 个答案:

答案 0 :(得分:5)

使用doxygen之类的工具。您可以将其提供给库的源代码,并输出交叉引用的文档。

答案 1 :(得分:2)

您可以使用编译器的-E(或/E;所有C和C ++编译器使用此选项使用此名称)选项来获取翻译单元的预处理输出。这会转储编译器看到的所有声明。看起来,你只是在函数和类之后,而-E选项也会编写所有声明。如果你真的只想要函数和类,你可以使用clang库来获取抽象语法树(AST)并将其转储出来。

答案 2 :(得分:0)

如果您使用的是Visual Studio,则可以选择使用MS intellisense,wholetomato visual assistresharper等代码帮助程序。这些可能会在给定的上下文中为您提供所有可访问的变量,类,函数,类型,命名空间,常量等。

其他IDE也可能提供此功能,但我从未在Visual Studio中使用过它。似乎QtCreator可能是指向here的好选择。