在Eclipse中更改命名方案

时间:2012-05-08 13:11:20

标签: regex eclipse naming-conventions eclipse-cdt

有没有办法在Eclipse(特别是Eclipse CDT)中更改变量的命名约定?例如,我可以使用need_foo等名称对变量进行搜索和替换,并将其更改为NeedFoo吗?

显然,添加和删除下划线很容易,但我没有看到改变大小写的方法。 Perl的正则表达式有大约和小写字符的\u\l修饰符,但Eclipse显然没有。

1 个答案:

答案 0 :(得分:1)

在CDT中没有自动批量重命名多个不符合函数名称的方法。但是,有一个代码分析规则,旨在指出这些事情。它使用Eclipse Regex described in their online help。这些将在您的问题视图中为您提供“信息”级别标记。

它们的工作方式是将正则表达式与每个函数名称进行匹配,并在不返回匹配项时引发错误/警告/信息。您可以通过“Window-> Preferences-> C / C ++ - > Code Analysis”访问它们。它大约是滚动列表的一半(在Eclipse Indigo中)。

要直接回答你的第二段,Eclipse没有等效的Perl \u\l,它最接近的是(?ismd-ismd),它允许你打开基于案例匹配

取决于代码分析工具是否返回5或50,000个错误:

只需重命名的几个功能定义

您可以使用标准重构重命名工具。右键单击函数名称,“Refactor-> Rename”将用您的新函数名称替换对该函数的所有引用(尊重不同的范围)。

许多错误

这是......不太好。看到没有内置方法,您需要在外部进行。我要采取的第一种方法是查看是否存在可以执行此操作的现有插件。

如果做错了,您可能会做的是使用代码分析工具来识别不符合要求的函数名称,然后使用它的输出作为自定义Perl脚本的输入?你可以在几个阶段做到这一点:

void FooBar(void) {}
int main(int argc, char *argv[])
{
    FooBar();
    return 0;
}

1)运行代码分析,并将警告复制并粘贴到文本文件中:

Bad function name "FooBar" (pattern /^(?-i:([a-z]+_[A-Z])|[a-z])(?i:[a-z]*)\z/) main.c  /TestMultiThread    line 47 Code Analysis Problem

2)更改功能定义fooBar() - > FooBar(),使用上述错误作为perl脚本的输入(请注意,您具有符合条件的函数名称,文件名和行号)。

3)编译它然后使用编译器undefined reference to fooBar()的输出重命名任何引用:

undefined reference to `FooBar' main.c  /TestMultiThread    line 50 C/C++ Problem

此方法会有一些缺点,例如编译器会因为编译终止“早期”而提供未定义引用的部分列表,在这种情况下,您需要多次运行它。

要看的另一件事是Refactor Scripts(Refactor - > Apply Script),但是从我看到的那个小小的东西,我认为它不会做你想要的。

总而言之,我发现Eclipse CDT中的重构工具并不像Java那样强大(从我记忆中)。虽然仍然比记事本更好(同样,不是抨击CDT,它是一个很棒的开发环境!)