Đối với Windows mà thôi, chứ không phải phần mềm nguồn mở nhưng bạn nói "bất kỳ hướng ..."
DMS Software Reengineering Toolkit" với C Front End có thể áp dụng biến đổi của nó vào mã nguồn C của chúng tôi. DMS có thể được cấu hình để thực hiện tùy chỉnh, phức tạp đáng tin cậy biến đổi, mặc dù cấu hình không phải là dễ dàng như gõ chỉ là một lệnh như "refactor frazzle bởi doobaz".
Một trong những trở ngại chính vẫn là bộ tiền xử lý. DMS có thể chuyển đổi mã có các chỉ thị tiền xử lý ở các vị trí điển hình (xung quanh các câu lệnh, các biểu thức, các đầu lặp if/for/while, các khai báo, vv), nhưng các "điều kiện phi cấu trúc" khác gây rắc rối. Bạn có thể chạy DMS bằng cách mở rộng các chỉ thị tiền xử lý ra khỏi sự tồn tại, hoặc nhiều hơn, mở rộng ra những cái gây khó khăn cho nó, nhưng hầu hết mọi người không thích điều này bởi vì họ muốn giữ các chỉ thị tiền xử lý của họ. Vì vậy, nó không phải là hoàn hảo.
[Một câu trả lời khác gợi ý Concinelle, trông khá tốt từ quan điểm của tôi. Theo như tôi biết, nó không xử lý các chỉ thị tiền xử lý ở tất cả; Tôi có thể sai và nó có thể xử lý một số trường hợp như DMS, nhưng tôi chắc chắn nó không thể xử lý tất cả các trường hợp].
Bạn không muốn cân nhắc việc cuộn của riêng mình. Xây dựng một công cụ chuyển đổi/tái cấu trúc là khó khăn hơn nhiều so với bạn có thể đoán không bao giờ thử nó. Bạn cần các trình phân tích cú pháp đầy đủ, chính xác cho phương ngữ quan tâm (C) và điều đó khá khó để có được quyền. Bạn cần một bộ tiền xử lý, bảng biểu tượng, phân tích dòng chảy, chuyển đổi, máy móc tái tạo mã, ... công cụ này mất nhiều năm nỗ lực để xây dựng và có được quyền. Hãy tin tôi, đã ở đó, làm điều đó.
Nguồn
2012-02-22 23:33:58
Bạn có phản đối emacs không? –
Vâng, tôi sẽ chọn 'vim' trên 'emacs' ... nhưng ghét cả hai với một niềm đam mê. Tôi là sysadmin duy nhất trong công việc mà nói "không", khi được hỏi mà tôi thích. Tôi sử dụng 'nano' trên các máy chủ, và Komodo Edit trên máy cục bộ của tôi. Nó đã được cathartic, không bao giờ chạm vào 'vim' một lần nữa. – TechZilla
Tái cấu trúc mã cho C? Coccinelle: http: //coccinelle.lip6.fr/ – ninjalj