gpt4 book ai didi

c++ - 任何基于 libclang 的 C/C++ 重构工具? (甚至最简单的 "toy example")

转载 作者:IT老高 更新时间:2023-10-28 13:58:22 38 4
gpt4 key购买 nike

正如我已经指出的 - here - 似乎 clang 的 libclang 应该非常适合执行 C/C++ 代码分析和修改这一艰巨任务(check out video presentation and slides)。

你知道任何基于 libclang 的 C/C++ 重构工具吗?

“Any”甚至包括简单的 alpha 状态项目,支持一种重构技术。它可以没有预处理器支持。作为我正在谈论的功能示例:更改方法名称,它是否支持多个文件或一次只支持一个文件。您可能想知道要求即使是小的工作示例的目标是什么我的想法是在一个地方创建一个代码示例和小工具列表将提供更好的资源来学习如何使用 libclang 实现重构。我相信从简单的项目可能会发展成更大的项目——以适当的开源方式:)。

最佳答案

Clang 包含一个名为“CIndex”的库,我相信它是为在 IDE 中完成代码而开发的。它也可用于解析 C++ 和遍历 AST,但没有任何重构方式。参见 Eli Bendersky 的文章 here .

我最近开始了这样一个项目:cmonster .它是一个基于 Python 的 API,用于解析 C++(使用 libclang)、分析 AST,以及用于“重写”(即插入/删除/修改源范围)的接口(interface)。 (目前)还没有很好的方法来修改函数名称并将其转换为源代码修改,但这样做并不难。

我尚未创建具有此功能的版本(尽管它位于 github 存储库中),因为我正在等待 llvm/clang 3.0 的发布。

另外,我要指出几点:

  • 代码非常粗糙,称它为 alpha 可能会很慷慨。
  • 我绝不是这方面的专家(不像那边的 Ira Baxter 博士)。

适当调整预期。

更新: cmonster 0.2 已发布,其中包含所描述的功能。看看on Github .

关于c++ - 任何基于 libclang 的 C/C++ 重构工具? (甚至最简单的 "toy example"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7969109/

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