如何创建包含每个函数LOC的列表(c++)

How to create a list containing the LOC for each function (C++)

本文关键字:LOC 列表 c++ 函数 包含每 何创建 创建      更新时间:2023-10-16

我想确保每个函数的函数体适合屏幕。因此,我想生成一个包含每个函数LOC的列表(在.cpp/.h -文件中,或者最好在目录中的所有源代码文件中)。例如,列表可以是一个包含

的csv文件。
foo.cpp,foobar,42
foo.cpp,foozar,13
goo.cpp,bla,666

如果文件foo.cpp包含一个函数foobar,它有42行,等等…

你能推荐一些工具吗?

问题很简单。如果无论遇到什么c++都希望获得准确的数据,则需要一个具有预处理器功能的完整c++解析器。由于c++的复杂性,这是非常难以构建的(现在c++ 11是相当标准的,c++ 14也不甘落后)。基本上你的选择仅限于:

  • Edison Design Group c++前端
  • 叮当声
  • GCC
  • 我们的DMS软件再造工具包及其c++前端
  • Elsa(如果仍在维护)

这些都是大而复杂的引擎,需要为你的任务进行配置(尤其是GCC,无论你想要它成为什么,它都想成为一个编译器)。还有一个额外的复杂问题,可能对你有影响,也可能无关紧要:Clang、GCC和Elsa不处理MS方言,如果我理解正确的话。

如果你不关心你是否总是得到正确的答案,你可以构建一个非常简单的扫描仪来寻找明显的函数头,计数{…}和(…)以确保您知道函数体终止的位置。您可能需要识别名称空间和类结构,以便在其中查找函数声明。这似乎是最简单的解决方案,因此最快,最省力。

你可以为clang写一个插件。