Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> автоматический рефакторинг кода 
:(
    Опции темы
_hunter
  Дата 12.11.2007, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



Добрый день.

Есть ли какие-то утилиты, которые могут выполнять рефакторинг автоматически? Нужно в куче исходников вызов одной функции заменить вызовом другой функции...
Хотелось бы чтобы эта утилита не требовала создание проекта и не зависела от МС Студии...

Так же я в Эклипсе присмотрел учень удобную фичу -- автоматическое форматирование кода. Хотелось бы и такое заиметь. -- Нужно чтобы между именем функции и скобкой в definition-е гарантированно был пробел. И чтобы его гарантированно небыло в reference-е...

С уважением..


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
virtual09
Дата 12.11.2007, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 3.10.2007

Репутация: нет
Всего: нет



 smile 

_hunter, почему у вас Регистрация: 1.8.2007, а репутации есть и в 2006
PM MAIL   Вверх
dumb
Дата 12.11.2007, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 8
Всего: 158



Цитата(_hunter @  12.11.2007,  12:41 Найти цитируемый пост)
Нужно в куче исходников вызов одной функции заменить вызовом другой функции...
а обычный поиск-замена с регулярками не канает? много-файловую обработку умеет делать например uedit. и он точно не одинок.

Цитата(_hunter @  12.11.2007,  12:41 Найти цитируемый пост)
автоматическое форматирование кода
sourcestyler?

Цитата(virtual09 @  12.11.2007,  12:54 Найти цитируемый пост)
_hunter, почему у вас Регистрация: 1.8.2007, а репутации есть и в 2006
почему тебя это так интересует, что ты готов оффтопить в тематической ветке форума? smile
PM MAIL   Вверх
virtual09
Дата 12.11.2007, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 3.10.2007

Репутация: нет
Всего: нет



Цитата(dumb @  12.11.2007,  12:58 Найти цитируемый пост)
почему тебя это так интересует

может это глюк на vingrad'e 
Цитата(dumb @  12.11.2007,  12:58 Найти цитируемый пост)
что ты готов оффтопить в тематической ветке форума? 

нет, извиняюсь, если администрация прочитала мои посты, то можете их удалить

Это сообщение отредактировал(а) virtual09 - 12.11.2007, 13:14
PM MAIL   Вверх
_hunter
Дата 12.11.2007, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



проблема в том, что некоторые имена содержатся в других. т.е. нужно заменить open не заменяя fopen...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
DjoNIK
Дата 12.11.2007, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 28.9.2006
Где: Питер/Георгиевск

Репутация: 4
Всего: 5



Цитата(_hunter @  12.11.2007,  14:36 Найти цитируемый пост)
проблема в том, что некоторые имена содержатся в других. т.е. нужно заменить open не заменяя fopen...

А замена слова целиком (Match whole word)?

Это сообщение отредактировал(а) DjoNIK - 12.11.2007, 15:10


--------------------
- Плесни-ка мне холодного кипятку.
- Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды?
- Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку.
(разговор петербуржца и москвича)
PM MAIL ICQ   Вверх
maxim1000
Дата 12.11.2007, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 17
Всего: 110



хм... пришло в голову: изменяем имя функции как-нибудь (например open -> open1)
компилируем
используем список ошибок компиляции для нахождения строк, в которых надо сделать замену
только может плохо сработать, если в одной строке есть вызовы одноимённых функций от разных объектов (типа file.open, box.open), тогда надо будет что-то более интеллектуальное придумывать smile


--------------------
qqq
PM WWW   Вверх
SergeCpp
Дата 12.11.2007, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 15
Всего: 124



Можно заменить, используя Perl, к примеру (выражение \<open\> не пропустит fopen)

P.S. Если используемый диалект Perl не поддерживает \< и \>, то можно вот так вот: \bopen\b

P.P.S. Word Boundaries


Это сообщение отредактировал(а) SergeCpp - 12.11.2007, 17:09
PM MAIL WWW ICQ   Вверх
maxim1000
Дата 12.11.2007, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 17
Всего: 110



не, без анализа семантики нормально не получится из-за ситуаций типа file.open и box.open


--------------------
qqq
PM WWW   Вверх
_hunter
Дата 12.11.2007, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



решил поробовать рег-экспы -- почти все хорошо, но есть один момент: хотелось бы заменять только вызовы функций. т.е. заменять "open(" и не заменять "open". Но тут появляется одна проблема: в исходниках я встречал пару мест, где вместо пробела стоял таб и одно место new line.
Как бы эти случаи учесть?

maxim1000, тут мне повезло (хотя это как посмотреть) -- проект чисто С-шный...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
dumb
Дата 12.11.2007, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 8
Всего: 158



Код

\<open[\s\n\r]*\(

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1155 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.