2012-02-22 38 views
7

Các biến thể của câu hỏi này đã được hỏi, nhưng không cụ thể với GNU/Linux và C. Tôi sử dụng Komodo Edit làm Editor thông thường của tôi, nhưng tôi thực sự thích cái gì đó có thể được sử dụng từ CLI. Tôi không cần hỗ trợ C++; sẽ tốt nếu công cụ chỉ có thể xử lý đồng bằng C.Công cụ tái cấu trúc mã cho C, có thể sử dụng trên GNU/Linux? FOSS thích hợp

Tôi thực sự đánh giá cao bất kỳ hướng nào, vì tôi không thể tìm thấy bất kỳ điều gì. Tôi hy vọng tôi không bị buộc phải 'cuộn' thứ gì đó cho bản thân mình.

LƯU Ý: Vui lòng không đề cập đến vim; Tôi biết nó tồn tại và khả năng của nó là gì. Tôi cố tình chọn để tránh vim, đó là lý do tại sao tôi sử dụng Komodo (hoặc nano trên máy chủ).

+0

Bạn có phản đối emacs không? –

+0

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

+2

Tái cấu trúc mã cho C? Coccinelle: http: //coccinelle.lip6.fr/ – ninjalj

Trả lời

4

Tôi không nghĩ rằng công cụ tái cấu trúc bảng điều khiển thuần túy sẽ tốt đẹp để sử dụng.
Tôi sử dụng CDT Eclipse trên Linux để viết và viết lại C-Code.
Cũng tồn tại Xrefactory cho Emacs http://www.xref.sk/xrefactory/main.html

nếu công cụ tái cấu trúc bảng điều khiển không phải là o.k cho bạn.

+0

... Tôi ghét Eclipse, tôi là một anh chàng Komodo. Với điều đó đã nói ... Người duy nhất của bạn thực sự đã cố gắng trả lời câu hỏi của tôi. Vì vậy, mặc dù chúng có thể không phù hợp với tôi, nhưng chúng chạy trên Linux. – TechZilla

0

Bạn có thể xem xét mã hóa plugin GCC hoặc mở rộng MELT (MELT là ngôn ngữ dành riêng cho miền để mở rộng GCC) cho nhu cầu của bạn.

Tuy nhiên, cách tiếp cận như vậy sẽ đưa bạn một thời gian, bởi vì bạn sẽ cần phải hiểu một số nội bộ GCC.

0

Đố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 đó.

+0

Khá rõ ràng từ ngữ cảnh '... bất kỳ hướng nào ...', mà tôi đang đề cập đến bất kỳ hướng nào đối với các yêu cầu đã nêu của tôi. Câu hỏi chưa bao giờ là "giúp tôi tìm thấy * BẤT K * công cụ tái cấu trúc". Ngoài ra ... khi tôi nói 'cuộn của riêng tôi', tôi đã nói về 'lăn' giải pháp của riêng tôi. Chăm sóc vấn đề, có thể bằng cách tạo ra một số kịch bản lệnh shell, tôi sẽ không bao giờ xem xét việc tạo một dự án tái cấu trúc toàn bộ. Tôi chỉ không ở cấp độ đó, và tôi đã biết điều này trong một thời gian rất dài. – TechZilla

+0

@TechZilla: Khi bạn nói "bất kỳ hướng nào", bạn cast một mạng lưới rất rộng. Khi tôi nghe ai đó nói "cuộn" (của riêng họ), tôi giải thích rằng "sẵn sàng xây dựng một cái gì đó" với nỗ lực đáng kể; Tôi đáp lại lời giải thích đó. Tôi cho rằng những người khác cũng vậy. [FWIW, DMS dường như hoạt động tốt dưới Wine trên Linux, nhưng hầu hết người dùng Linux dường như đều ghét giải pháp đó.] –

Các vấn đề liên quan