1

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

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

4

1 回答 1

1

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

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

要直接回答您的第二段,Eclipse 没有等效于 Perl 的\uand \l,它最接近的是 (?ismd-ismd),它允许您打开基于大小写的匹配。

根据代码分析工具是否返回 5 或 50,000 个错误:

只需重命名几个函数定义

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

许多许多错误

这……不是很好。鉴于没有内置方法,您需要在外部进行。我采取的第一种方法是看看是否有一个现有的插件可以做到这一点。

如果做不到这一点,您也许可以做的是使用代码分析工具来识别不符合要求的函数名称,然后将其输出用作自定义 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

这种方法会有一些缺点,例如由于编译“提前”终止,编译器会给出未定义引用的部分列表,在这种情况下,您需要多次运行它。

另一件事是重构脚本(重构 --> 应用脚本),但从我所见的一点点来看,我认为它不会做你想做的事。

总而言之,我发现 Eclipse CDT 中的重构工具远没有 Java 中的重构工具强大(据我记忆)。不过仍然比记事本中的好(而且,不是抨击 CDT,它是一个很棒的开发环境!)

于 2012-05-20T23:57:56.027 回答