2012-05-08 2 views
1

Есть ли способ изменить соглашения об именах переменных в Eclipse (в частности, Eclipse CDT)? Например, могу ли я выполнить поиск и замену переменных с именами вроде need_foo и изменить это на NeedFoo?Изменение схемы именования в Eclipse

Добавление и удаление символов подчеркивания легко, очевидно, но я не вижу способа изменить регистр. Регуляторы Perl имеют \u и \l модификаторы для прописных и строчных букв, но Eclipse, по-видимому, этого не делают.

ответ

1

Нет автоматизированного способа массового переименования нескольких несоответствующих имен функций в CDT. Существует, однако, правило анализа кода, которое предназначено для указания такого рода вещей. Он использует Eclipse Regex described in their online help. Они дадут вам маркер уровня информации в представлении проблем.

То, как они работают, соответствует регулярному выражению в отношении каждого имени функции и вызывает ошибку/предупреждение/информацию, если это не возвращает совпадение. Вы можете получить к ним доступ через «Window-> Preferences-> C/C++ -> Code Analysis». Это примерно на полпути вниз по списку прокрутки (в Eclipse Indigo).

Чтобы получить ответ на ваш второй абзац, Eclipse не имеет эквивалент в Perl \u и \l, ближе всего он имеет в (? Ismd-ismd), что позволяет включить соответствие на основе случае.

В зависимости от того, если инструмент анализа кода возвращает 5 или 50000 ошибки:

только несколько определений функций переименовать

Вы можете использовать стандартный инструмент рефакторинг переименования. Щелкните правой кнопкой мыши имя функции, «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 (Refactor -> Apply Script), но из тех немногих, что я видел, я не думаю, что это будет делать то, что вы хотите.

В целом, я нашел инструменты для рефакторинга в Eclipse CDT, которые не были такими же мощными, как и для Java (из того, что я помню). Тем не менее, все же лучше, чем в «Блокноте» (также, не избивая CDT, это потрясающая среда разработки!)

+0

Ах, если вы не выполняете функции, а переменные. Виноват. Должен был читать более внимательно. Имея быстрый взгляд на функцию анализа кода, для переменных нет эквивалента. Итак, я бы посмотрел на внешнее решение. Есть ли какие-то плагины для Линта, которые вы могли бы получить, вы вообще заглянули в Линт? – chrisb

+0

Я еще не смотрел на Линт, но это дает мне отличные места для начала. Благодарю. –

Смежные вопросы