2009-08-10 41 views
7

Tôi chỉ tìm thấy các dự án, lý thuyết và danh sách tính năng bị bỏ rơi. Nhưng tôi không thể tìm thấy một công cụ có thể so sánh hai tệp nguồn C++ và cho thấy sự khác biệt ngữ nghĩa.Có công cụ Semantic Diff hoạt động cho C++ không?

Tất nhiên tôi sẽ không so sánh hai tệp không liên quan hoặc thay đổi được tích luỹ trong suốt 10 năm phát triển và bảo trì. Nhưng các thay đổi thường được thảo luận tại một đánh giá mã sẽ được hiểu dễ dàng hơn, nếu được trình bày cùng với ý nghĩa thích hợp, thay vì các thay đổi văn bản ở cấp độ char/word/line

Trả lời

-1

Không thể nói chung. Một chương trình thậm chí không thể biết liệu một chương trình khác có chấm dứt (số Halting Problem) nổi tiếng hay không. Đối với các chương trình hạn chế hơn (vòng kết nối hữu hạn, và có thể là các ràng buộc khác) bạn có thể làm nhiều hơn, nhưng đó là công việc nặng nhọc, và ngôn ngữ sẽ phải là, không phải C++ nhưng ít phức tạp hơn, một tập con giới hạn hoặc một ngôn ngữ đơn giản hơn. Đó có lẽ là lý do tại sao bạn không tìm thấy gì hơn là bắt đầu.

0

Có, nó được gọi là "viết nhận xét cho cam kết" và "theo dõi vấn đề". Hãy xem xét nó siêu dữ liệu cho phân tích ngữ nghĩa.

+0

Nhưng đó sẽ là ISO lớp 8 xử lý thông tin, thay vì sử dụng một công cụ – CsTamas

+0

True. Mọi điều khiển phiên bản đều có thể hiển thị lịch sử với các nhận xét, nhưng tôi chưa bao giờ thấy nó được tích hợp vào công cụ hợp nhất, trên cơ sở thay đổi. Có thể trở thành một tính năng khá hữu ích ... mặt khác, có thể đụng độ với các chú thích trong mã. – ima

+0

Được tích hợp vào công cụ hợp nhất? Giống như Git? – greyfade

3

"Sự khác biệt ngữ nghĩa" thực sự là không thể. Closer sẽ là một công cụ so sánh hai tệp nguồn để xem cách một tệp được bắt nguồn từ các tác vụ chỉnh sửa trừu tượng (xóa, sao chép, di chuyển, đổi tên) trên cấu trúc chương trình (biến, biểu thức, câu lệnh, phương thức). Xem Smart Differencer của chúng tôi để biết công cụ thực hiện điều này cho một vài ngôn ngữ, với C++ sắp có.

tháng 3 năm 2013: Các phương ngữ GCC/MS của C++ 11 được hỗ trợ.

+0

Làm thế nào sớm? Tất cả các công cụ tương tự đã được bắt đầu ... – CsTamas

+0

Dự kiến ​​trong 30-60 ngày. –

+0

Tháng 3 năm 2010: Nó đã có sẵn trong vài tháng, vừa trở lại câu hỏi SO cụ thể này. –

1

Có một cho C được các nhà phát triển hạt nhân Linux sử dụng. Không cho C++ mặc dù

http://coccinelle.lip6.fr

+0

@Brad: họ nói về các bản vá lỗi ngữ nghĩa, nhưng dường như ý nghĩa của chúng là "các mẫu phù hợp" không nhạy cảm với các thay đổi trong không gian trắng, tên biến, v.v ... trên nhiều phiên bản của một tệp, nhưng không rõ ràng chúng * so sánh * hai tệp để xác định rằng chúng tương tự nhau.Bạn có thể chỉ cụ thể đến nơi họ nói điều đó không? –

+0

Bạn có công cụ spdiff để suy ra các bản vá lỗi ngữ nghĩa http://www.diku.dk/hjemmesider/ansatte/jespera/doc.html. – LB40

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