2009-10-08 19 views
8

Trong một dự án, tôi đã tìm thấy một số tệp css "ngửi" giống như có các quy tắc sao chép trong đó.Mẹo để hiển thị những điểm tương đồng trong các tệp

Tôi tự hỏi chiến lược của bạn để phát hiện các công cụ sao chép-dán trong tệp là gì.

Chỉ cần tò mò tôi muốn nghe các mẹo và thủ thuật của bạn để hiển thị các điểm tương đồng về tệp!

+0

Câu hỏi liên quan - http://stackoverflow.com/questions/2490884/why-is-copy-and-paste-of-code-dangerous – Oded

+0

có thể trùng lặp của [Cách tìm đoạn mã tương tự?] (Http: //stackoverflow.com/questions/709744/how-to-find-a-similar-code-fragment) –

Trả lời

4

Hãy thử Simian.

Nó được sử dụng để sao chép-dán-phát hiện trong mã nguồn (Java, C#, C, C++, COBOL, Ruby, JSP, ASP, HTML, XML, Visual Basic, Groovy), nhưng bạn có thể chạy điều này trên đồng bằng các tệp văn bản.

+0

là có một cách để làm cho simian cho thấy sự tương đồng thực tế? Trong lần chạy thử nghiệm của tôi, nó chỉ hiển thị một bản tóm tắt rằng "dòng a đến b trong tệp X tương tự như các dòng c đến d trong tệp Y" ??? Hiển thị các dòng thực tế sẽ giúp làm rõ rất nhiều –

+0

Hoặc tốt hơn: có cách nào để làm cho nó hiển thị khác biệt cho các dòng tương tự? –

+0

Tôi e rằng bạn sẽ phải kiểm tra kết quả theo cách thủ công hoặc viết công cụ đánh giá kết quả Simian và đính kèm chúng vào trình xem tệp. Có thể bạn có thể sử dụng công cụ miễn phí khác (ví dụ: WinMerge, http://winmerge.org/) cho mục đích đó. Nếu bạn quyết định thứ hai: Tôi sẽ quan tâm đến một giải pháp như vậy quá ... –

3

Có dự án Phát hiện dán sao chép (CPD) trên sourceforge; http://pmd.sourceforge.net/cpd.html

Nhưng ngay cả trong các dự án lớn, tôi thấy kiến ​​thức của riêng mình về mã là cơ chế phát hiện đáng tin cậy (mặc dù không phải là không đáng tin cậy).

Đồng thời xem this question để biết các đề xuất khác.

+1

Công cụ CPD có vẻ rất hạn chế về ngôn ngữ. Và không có javascript hoặc CSS –

+0

Cảm ơn bạn đã trỏ đến "câu hỏi này". Rất giống với điều này, btw :) –

1

Semantic Designs CloneDR của chúng tôi là một công cụ phát hiện sao chép-dán-chỉnh sửa các khối mã, đối với nhiều ngôn ngữ: C, C++, Java, C++, COBOL, ECMAScript, PHP, VB6, VB.net, ...

Nó sử dụng các trình phân tích cú pháp chính xác ngôn ngữ để xây dựng các cây cú pháp trừu tượng, tương ứng với các cấu trúc chương trình chính xác, sau đó được so sánh với sự giống nhau. Điều này có nghĩa là nó không bị nhầm lẫn theo bất kỳ cách nào bởi khoảng trắng, định dạng, nhận xét hoặc thậm chí là "chính tả" khác nhau của các chữ (ví dụ: 3.14159 giống như .00314150E3).

Nó tạo báo cáo hiển thị chính xác cách các khối mã giống nhau và chính xác cách chúng khác nhau. Bạn có thể xem báo cáo mẫu tại liên kết.

+0

Liên kết của bạn không hoạt động? Bạn có thể vui lòng cập nhật câu trả lời của mình không? –

+0

... oops ... đã được sửa. –

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