如何扫描 C++ 源代码以清除它?

use*_*312 1 c# c++

假设有一个广泛的 C++ 框架。该框架有多个模块。我需要开发一种工具,可以扫描框架中的所有 *.cpp、*.h、*.hpp 文件,隔离与一个可执行文件相关的文件,然后从那些编译指定文件不需要的文件中删除所有源代码可执行的。

例如,该框架具有用于查询关系数据库、文档数据库、键值存储、面向列的数据库和图形数据库的模块。

我只想隔离那些与关系数据库相关的文件,然后我想删除所有那些关系数据库中未使用的代码。

假设框架有一个文件,format_string.hpp.该文件包含 73 个函数,可以以各种方式格式化字符串。但是,关系数据库相关模块仅使用该文件中的 15 个函数。因此,我想从该文件中删除其余 58 个函数。

注意:我经常需要研究 C++ 源代码并将该源代码翻译/转换为其他编程语言。这个工具将帮助我理解算法。

删除/清除不是永久性的。它仅用于学习目的。这是为了减少进一步手动检查的源代码量。

问题:

我已经使用 C# 实现了文件隔离部分。

但是,我不知道如何实现第二部分。

我需要使用正则表达式吗?或者我需要一个词法分析器和一个解析器?

PMF*_*PMF 6

虽然有一些限制,但在 C# 中使用反射是可能的,但对于 C++,您基本上需要为此编写一个编译器。如果编译器在启用优化的情况下使用,它会为您执行此操作并删除未使用的代码,但这是编译(或更确切地说,链接)的最后一步。通过纯文本分析来做到这一点几乎是不可能的,因为即使没有字面上提及,也可以通过太多方式来引用代码(例如宏或虚拟函数)。