我需要编写一个C ++代码覆盖程序,该程序接收另一个C ++程序(在文件中给出)并在其下面的每个语句中增强或添加对增加计数器的函数的调用。但是,我需要为每种类型的表达式使用不同的计数器(即我需要计算每种类型有多少表达式)。为此,我需要计算每个C ++表达式的类型。 IMO我需要使用解析器API来解析每一行以获得其类型。 你看到更好的解决方案吗? 否则,我在哪里可以找到解析API?
由于
答案 0 :(得分:2)
“解析器”API不会为您提供类型信息。它最多可以让您访问AST。
您需要一个完整的C ++前端,它可以解析C ++代码,命名和键入分辨率,并且可以计算每个表达式的字面类型。最重要的是,您需要插入所需的检测,然后吐出可编译的源代码。
我们的DMS Software Reengineering Toolkit及其C++ Front End具备执行此操作所需的所有功能。
DMS已被用于为C ++(以及许多其他语言)构建测试覆盖率和分析器工具;你甚至可以下载并尝试一下,看看它们是什么样的。您可能会发现building test coverage tools with DMS上的这篇论文很有趣,可以作为您想要做的基准。您的变体需要类型推断,但不会有太多不同。