我需要将我的一些C ++类,函数和命名空间重命名为构建脚本的一部分,该脚本由我的CI系统运行。
不幸的是,一个简单的sad / awk / gsar / ...技术是不够的,我需要智能的重命名重构,仔细分析我的代码。
实际上我发现,CDT C / C ++重命名重构确实是我需要的。但它是从Eclipse IDE完成的。所以我需要找到一种方法从命令行启动它,并使其成为我的CI构建脚本的一部分。
我知道Eclipse有eclipsec可执行文件,它允许从命令行(see e.g. here)运行一些Eclipse函数。
但我找不到任何合适的功能文档,CDT导出到命令行。我发现唯一的事情是this。但它并没有解决我的问题。
所以,我需要帮助从命令行运行CDT重命名重构(或者像那样)。如果不可能,可能有人会建议另一个工具,可以从命令行重命名C ++的重构?
答案 0 :(得分:2)
“我需要重命名为构建脚本的一部分”
这听起来有点像设计问题。但是,我记得曾经在AIX / Win32上编写C ++应用程序时犯了同样的错误:最值得注意的是,我希望能够链接共享对象的“冲突”版本。我使用这样一个简单的预处理程序来解决它:
# makefile
#if($(ALTERNATIVE))
CPPFLAGS+=-DLIBNAMESPACE=MYLIB_ALTERNATIVE
#else
CPPFLAGS+=-DLIBNAMESPACE=MYLIB
#endif
./obj64/%.o: %cpp
xlC++ $(CPPFLAGS) $^ -o %@
示例源/头文件:
namespace MYLIB
{
class LibService :
{
};
}
如您所见,这只需要一个
find -iname '*.[hc]pp' -o -iname '*.[hc]' -print0 |
xargs -0 sed -i 's/OldNamespace/MYLIB/g'
您可以 have a look at eclim ,它会对您描述的内容做大部分(如果不是全部),但它会针对vim编辑器。
eclim所说的是来自外部程序的完全日食整合(完成,重构,使用搜索等)。我没有完全了解eclim的后端,但我知道它适用于暴露vim插件使用的服务接口的 eclimd服务器进程。
我怀疑你应该能够重用eclimd中的代码,如果不是只是为了你的目的使用eclim。
答案 1 :(得分:0)
我们正在为C ++完成一个命令行重命名工具,它使用编译器准确的解析和名称解析,包括处理阴影名称。如需了解更多详情,或者您可能对测试版感兴趣,请与我联系(请参阅bio)。