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.
Czy jesteś także przeciwnikiem emacs? –
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
Kodowanie refaktoryzacji dla C? Coccinelle: http: //coccinelle.lip6.fr/ – ninjalj