代码之家  ›  专栏  ›  技术社区  ›  levzettelin

如何为每个函数创建包含LOC的列表(C++)[closed]

  •  1
  • levzettelin  · 技术社区  · 10 年前

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

    foo.cpp,foobar,42
    foo.cpp,foozar,13
    goo.cpp,bla,666
    

    如果文件foo.cpp包含一个函数foobar,该函数的主体为42行,等等。。。

    你能推荐什么工具吗?

    2 回复  |  直到 10 年前
        1
  •  1
  •   Ira Baxter    10 年前

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

    • 爱迪生设计集团C++前端
    • 宗族
    • 全球通信中心
    • 我们的DMS软件重组工具包及其C++前端
    • 艾尔莎(如果仍然保持)

    这些是大型、复杂的引擎,需要为您的任务进行配置(特别是GCC,无论您希望它是什么,它都希望成为编译器)。另外一个复杂的问题可能对你很重要,也可能不重要:如果我理解正确的话,Clang、GCC和Elsa不会处理MS方言。

    如果你不在乎你是否一直得到正确的答案,你可以建立一个非常简单的扫描器来寻找明显的函数头,计数{…}和(…),以确保你知道函数体的终止位置。您可能需要识别名称空间和类构造,才能知道在它们内部查找函数声明。这似乎是最简单的解决方案,因此时间最快,工作量最小。

        2
  •  0
  •   Daniel    10 年前

    你可以为 clang 它非常适合这些类型的扩展。