我需要编写一个 C++ 代码覆盖率程序,该程序接受另一个 C++ 程序(在文件中给出),并在其每个语句下面增强或添加对增加计数器的函数的调用。但是,我需要为每种类型的表达式使用不同的计数器(即我需要计算每种类型有多少个表达式)。为此,我需要计算每个 C++ 表达式的类型。 IMO 我需要使用解析器 API 来解析每一行以获取其类型。 您看到更好的解决方案吗? 不然哪里可以找到解析API?
谢谢
最佳答案
“解析器”API 不会为您提供类型信息。它最多只能让您访问 AST。
您需要一个完整的 C++ 前端,它可以解析 C++ 代码、进行名称和类型解析,并且可以按字面意思计算每个表达式的类型。最重要的是,您需要插入所需的工具,然后吐出可编译的源代码。
我们的DMS Software Reengineering Toolkit及其C++ Front End拥有执行此操作所需的所有功能。
DMS 已用于构建 C++(以及许多其他语言)的测试覆盖率和分析器工具;您甚至可以下载并尝试一下,看看它们是什么样的。您可以在 building test coverage tools with DMS 上找到这篇论文有趣的作为你想做的事情的基线。您的变体需要类型推断,但除此之外它并没有太大不同。
关于c++ - 如何在运行时计算 C++ 表达式类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11023187/