gpt4 book ai didi

c++ - 自动重构

转载 作者:搜寻专家 更新时间:2023-10-31 01:55:37 26 4
gpt4 key购买 nike

请推荐一个可以自动替换的工具,例如:

Mutex staticMutex = Mutex(m_StaticMutex.Handle());
staticMutex.Wait();

boost::unique_lock<boost::mutex> lock(m_StaticMutex);

如您所见,必须考虑参数。有没有比正则表达式更简单的方法?

最佳答案

如果您可以通过少量手动工作(甚至包括“搜索和替换”)来完成此操作,那么此答案不相关。

如果代码变化太多(缩进、注释、不同的变量名)并且有很多这样的代码,您可能需要 Program Transformation工具。此类工具倾向于对抽象语法树等程序表示进行操作,因此不会受到布局或空格甚至因基数而拼写不同但实际上具有相同值的数字的困扰。

我们的 DMS Software Reengineering Toolkit是其中之一,并且有一个 C++ Front End .

你需要给它一个像下面这样的重写规则:

 domain Cpp; -- tell DMS to use the C++ front end for parsing and prettyprinting

rule replace_mutex(i:IDENTIFIER):statements -> statements
"Mutex \i = Mutex(m_StaticMutex.Handle());
\i.Wait();" =>
"boost::unique_lock<boost::mutex> lock(m_StaticMutex);";

在两个地方使用元变量 \i 将确保只有在两个地方的名称完全相同时才会触发规则。

我不清楚你想要完成什么;看起来您想用一个全局互斥锁替换每个私有(private)互斥锁,但我不是提升专家。如果您尝试这样做,我希望您的程序表现不同。

关于c++ - 自动重构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8238492/

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