gpt4 book ai didi

c++ - 将c++代码转换为xml文件进行代码分析

转载 作者:行者123 更新时间:2023-11-30 02:30:04 25 4
gpt4 key购买 nike

我想要一个简单的 windows 工具,用于将 c++\c 头文件和源代码转换为 xml 以供分析。

例如,

#include "something.h"
void CSomething::CheckIt(DWORD x)
{
if (x > 1)
{
// Do something
}
}

将转换为

<XML>
<CodeFile>
<IncludeCommand filename="something.h"/>

<Function namespace="CSomething" name="CheckIt" returnType="void"/>
<Arguments>
<Argument name="x" type="DWORD" />
</Arguments>
<Body>
<IfCondition>
<Expression ... />
<Body>
...
</Body>
</IfCondition>
</Body>
</Function>

</CodeFile>

商业产品也可以,但开源(简单)解决方案最好。

最佳答案

“简单”、“C++”和“工具”这三个词不属于同一个句子。

如果您想分析 C++ 代码,您可能需要准确的答案,而这需要准确的解析器。

我们的 DMS Software Reengineering Toolkit与其 C++14 front end可以做到这一点。 DMS在windows下运行,其C++前端可以处理C++的ANSI C++14、GCC/Clang或Visual Studio方言。

您可以在 get human readable AST from c++ code 查看 DMS 生成的示例 ASTDMS 可以选择将此类 AST 导出为 XML,这将满足 OP 明确规定的要求。

他可能真的不想要这个。对于任何大块的源代码,这样的 XML 文件都是巨大的。一千行 C++ 程序将产生大约 10,000 行/500K 字符的 XML 输出。这对生产/读取/处理来说很笨拙。如果包含典型的头文件,您可以轻松达到 100K 行 C++ 代码;如果将它们排除在外,则无法很好地分析代码。 DMS 本身提供了许多机制来导航它生成的 AST;使用 DMS 提供的机制编写分析器要比重新发明所有这些来使用 XML 容易得多。

实际上,要对 C++ 进行任何认真的分析,您需要的信息相当于符号表信息,并且您可能需要控制和数据流分析信息。 DMS 也可以提供这些。参见 Life After Parsing .

关于c++ - 将c++代码转换为xml文件进行代码分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39013196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com