11

Tôi đang tìm một công cụ sao chép mã không phải là ngôn ngữ bất khả tri. Thật dễ dàng để tìm các công cụ sao chép mã ngôn ngữ cụ thể (cho Java, C, PHP, ...), nhưng tôi muốn chạy một số phân tích trùng lặp mã trên một mẫu trong một cú pháp tùy chỉnh.công cụ phát hiện mã trùng lặp chung

Tôi không quan tâm đến phân tích cú pháp nâng cao cú pháp, chỉ cần so sánh chuỗi gốc dựa trên chuỗi thô là tốt. Khớp không phân biệt khoảng trắng sẽ là dấu cộng, nhưng không bắt buộc. (Không khó để bình thường hóa/loại bỏ khoảng trống của bản thân mình.)

Có ai biết một công cụ có thể được sử dụng cho một thứ như thế này không?

Cảm ơn.

+0

Bạn nhận được phát hiện bản sao nghèo nếu các máy dò không biết gì về cú pháp ngôn ngữ. Hầu hết các bản sao không phải là văn bản giống nhau; chúng là văn bản copy-paste- * edited *, do đó, để tìm chúng chính xác, bạn cần phải khớp với * tương tự * nhưng không giống các đoạn mã giống hệt nhau. Có các trình dò ​​bản sao nhận biết cú pháp, và ở mức độ nhỏ hơn hoặc lớn hơn, chúng có thể được cấu hình để biết cú pháp langauge chính xác. –

+0

có thể trùng lặp của [Mẹo để hiển thị điểm tương đồng trong tệp] (http://stackoverflow.com/questions/1536643/tips-to-show-similarities-in-files) –

+0

Tôi thực sự nghĩ bạn sẽ tập trung tốt nhất vào việc sao chép logic thay vì sao chép chuỗi thô. Một số ngôn ngữ có thể hơi sôi nổi nhưng loại trùng lặp đó không trùng lặp lỗi. Đó là khi bạn có cùng một logic, không tầm thường ở hai nơi của hệ thống gây ra gánh nặng bảo trì không cần thiết. –

Trả lời

8

Có giao diện Simian, bạn có thể sử dụng nó cho Java, C#, C, C++, COBOL, Ruby, JSP, ASP, HTML, XML, Visual Basic, mã nguồn Groovy và thậm chí cả tệp văn bản thuần túy.

Ngoài ra, một câu hỏi tương tự here.

+0

Simian có vẻ là những gì tôi đang tìm kiếm, cảm ơn. – Stefaan