我需要编写一个 C++ 代码覆盖程序,该程序接受另一个 C++ 程序(在文件中给出)并在其每个语句下面增强或添加对增加计数器的函数的调用。但是,我需要为每种类型的表达式使用不同的计数器(即我需要计算每种类型有多少个表达式)。为此,我需要确定每个 C++ 表达式的类型。IMO 我需要使用解析器 API 来解析每一行以获取其类型。你看到更好的解决方案了吗?否则,我在哪里可以找到解析 API?
谢谢
我需要编写一个 C++ 代码覆盖程序,该程序接受另一个 C++ 程序(在文件中给出)并在其每个语句下面增强或添加对增加计数器的函数的调用。但是,我需要为每种类型的表达式使用不同的计数器(即我需要计算每种类型有多少个表达式)。为此,我需要确定每个 C++ 表达式的类型。IMO 我需要使用解析器 API 来解析每一行以获取其类型。你看到更好的解决方案了吗?否则,我在哪里可以找到解析 API?
谢谢
“解析器”API 不会为您提供类型信息。它最多只能让您访问 AST。
您需要一个完整的 C++ 前端,它可以解析 C++ 代码、进行名称和类型解析,并且可以从字面上计算每个表达式的类型。最重要的是,您需要插入所需的工具,然后输出可编译的源代码。
我们的DMS 软件再造工具包及其C++ 前端具有执行此操作所需的所有功能。
DMS 已用于为 C++(和许多其他语言)构建测试覆盖率和分析器工具;你甚至可以下载并试一试,看看它们是什么样的。您可能会发现这篇关于使用 DMS 构建测试覆盖工具的论文很有趣,可以作为您想做的事情的基准。您的变体需要类型推断,但除此之外并没有太大的不同。