2012-02-22 12 views
7

Odmian tego pytania zostało zadanych, ale nie dotyczy to GNU/Linux i C. Używam Komodo Edit jako mojego zwykłego edytora, ale wolałbym coś, co można wykorzystać z CLI. Nie potrzebuję obsługi C++; jest w porządku, jeśli narzędzie obsługuje tylko zwykły C.Narzędzia do refaktoryzacji kodu dla C, dostępne na GNU/Linux? FOSS preferable

Naprawdę doceniam każdy kierunek, ponieważ nie mogłem niczego znaleźć. Mam nadzieję, że nie jestem zmuszony do samodzielnego "rzucania".

UWAGA: Proszę nie wspominać o vim; Wiem, że istnieje i jakie są jego możliwości. Celowo wybieram unikanie vim, dlatego używam Komodo (lub nano na serwerach).

+0

Czy jesteś także przeciwnikiem emacs? –

+0

Tak, wybrałbym 'vim' zamiast' emacs' ... ale nienawidzę ich obu z pasją. Jestem jedynym sysadminem w pracy, który mówi "nie", kiedy zapytam, który wolę. Używam 'nano' na serwerach i Komodo Edit na moim lokalnym komputerze. To było oczyszczające, nigdy więcej nie dotykając 'vim'. – TechZilla

+2

Kodowanie refaktoryzacji dla C? Coccinelle: http: //coccinelle.lip6.fr/ – ninjalj

Odpowiedz

4

Nie sądzę, że czyste narzędzie do refaktoryzacji konsoli byłoby miłe w użyciu.
Używam Eclipse CDT na Linuksie do pisania i refaktoryzacji kodu C.
Istnieje również Xrefactory dla Emacs http://www.xref.sk/xrefactory/main.html

jeśli nie narzędziem refaktoring konsola jest o.k dla Ciebie.

+0

... Nienawidzę Eclipse, jestem facetem z Komodo. Powiedziawszy to ... Twój jedyny, który rzeczywiście próbował odpowiedzieć na moje pytanie. Tak więc, chociaż mogą nie być dla mnie odpowiednie, działają na Linuksie. – TechZilla

0

Można rozważyć kodowanie wtyczki GCC lub rozszerzenie MELT (MELT jest językiem specyficznym dla danej domeny w celu rozszerzenia GCC) do własnych potrzeb.

Jednak takie podejście zajmie Ci trochę czasu, ponieważ będziesz musiał zrozumieć niektóre z wewnętrznych elementów GCC.

0

tylko dla systemu Windows, a nie FOSS ale powiedział „każdy kierunek ...”

Nasz DMS Software Reengineering Toolkit" z jego C Front End można zastosować transformacje do kodu źródłowego C. DMS może być skonfigurowany do przeprowadzania niestandardowych, złożonych transformacji niezawodny, chociaż konfiguracja nie jest tak proste, jak wpisanie tylko polecenia typu "refrakcja frazzle by doobaz".

Jednym z głównych przeszkód wciąż jest preprocesor. DMS może przekształcać kod, który ma dyrektywy preprocesora w typowych miejscach (wokół instrukcji, wyrażeń, jeśli/dla/podczas głowic pętli, deklaracji itp.), Ale inne "nieuporządkowane warunki" dają mu kłopot. Możesz uruchomić DMS, rozszerzając dyrektywy preprocesora, lub co ważniejsze, rozszerzając te, które sprawiają kłopoty, ale w większości ludzie tego nie lubią, ponieważ wolą zachować swoje wstępne dyrektywy. Więc nie jest doskonały.

[Kolejna odpowiedź zasugerowała Concinelle, która wygląda całkiem nieźle z mojego punktu widzenia. O ile mi wiadomo, w ogóle nie obsługuje dyrektyw preprocesorów; Mogę się mylić i może poradzić sobie z niektórymi przypadkami, jak robi to DMS, ale jestem pewien, że nie poradzi sobie z wszystkimi przypadkami].

Nie chcesz rozważać toczenia własnego. Budowanie narzędzia do transformacji/refaktoryzacji jest o wiele trudniejsze, niż mogłoby się wydawać, że nigdy go nie wypróbowałeś. Potrzebujesz pełnego, dokładnego parsera dla interesującego dialektu (C) i to jest trudne. Potrzebujesz preprocesora, tablic symboli, analizy przepływu, transformacji, maszyn do regeneracji kodu, ... to wymaga wiele lat wysiłku, aby zbudować i uzyskać prawo. Zaufaj mi, byłeś tam, zrobiłeś to.

+0

Jest to dość oczywiste z kontekstu "... w dowolnym kierunku ...", że odnosiłem się do dowolnego kierunku w stosunku do moich określonych wymagań. Pytanie nigdy nie było "pomóż mi znaleźć * DOWOLNE * narzędzie do refaktoryzacji". Ponadto ... kiedy powiedziałem "roll your own", mówiłem o "tarzeniu" mojego własnego rozwiązania. Zajmując się problemem, prawdopodobnie tworząc kilka skryptów powłoki, nigdy nie rozważałbym stworzenia całego projektu refaktoryzacji. Po prostu nie jestem na tym poziomie i znam to od bardzo dawna. – TechZilla

+0

@TechZilla: Kiedy mówisz "w dowolnym kierunku", rzucasz bardzo szeroką sieć. Kiedy słyszę, jak ktoś mówi "roll" (własny), interpretuję to jako "skłonny do zbudowania czegoś" z dużym wysiłkiem; Odpowiedziałem na tę interpretację. Zakładam, że inni też to robią. [FWIW, DMS wydaje się działać dobrze pod Wine na Linuksie, ale większość użytkowników Linuksa nie lubi tego rozwiązania.] –