我使用Clang编译器的python绑定重构C++代码(cindex)。使用它,我分析AST并准备更改。最后,我列出了一系列类似于以下内容的操作:
DELETE line 10
INSERT line 5 column 32: << "tofu"
REPLACE from line 31 colum 6 to line 33 column 82 with: std::cout << "Thanks SO"
...
我的问题是如何将这些更改转化为实际的文件更改。
直接用python做这件事似乎很乏味:补丁需要以正确的顺序应用,并检查其一致性。它看起来很难而且容易出错。你知道吗
我也找不到一个好的库来提供帮助(clang确实有一个名为Rewriter的东西,但是它没有用Python封装。如果可能的话,我真的希望避免C++重构。你知道吗
也许一个想法是生成补丁并用git应用它们,也许?但即使这样看起来也有点乏味。你知道吗
有什么想法吗?你知道吗
所以我推出了自己的。代码几乎可以肯定是有缺陷的,不是很漂亮,但我张贴它,希望它可以帮助一些人,直到找到更好的解决方案。你知道吗
只需创建一个
PatchRecord
对象,使用create
、replace
和delete
方法添加更改,并在准备就绪时用apply
应用它们。你知道吗相关问题 更多 >
编程相关推荐