Tôi đang tìm kiếm một công cụ có thể so sánh mã nguồn tương tự.Máy phát hiện mã tương tự
Hiện tại, chúng tôi có một hệ thống rất nhỏ, có số lượng dương tính giả lớn và những mặt tích cực thực sự có thể dễ dàng bị chôn vùi trong đó.
yêu cầu của tôi là:
- lượng một cách hợp lý nhỏ dương tính giả
- tỷ lệ phát hiện tốt (yeah những đang đi với nhau)
- lý tưởng với một đầu ra phức tạp hơn chỉ là một giá trị duy nhất
- có thể sử dụng cho C (C99) và C++ (C++ 03 và tối ưu C++ 11)
- vẫn được duy trì
- có thể sử dụng cho đồng mparing hai tập tin nguồn với nhau
- khác có thể sử dụng trong chế độ không tương tác
EDIT:
Để tránh nhầm lẫn, hai đoạn mã sau đây là giống hệt nhau và cần được phát hiện như vậy:
for (int i = 0; i < 10; i++) { bla; }
int i; while (i < 10) { bla; i++; }
cùng ở đây:
int x = 10; y = x + 5;
int a = 10; y = a + 5;
Khác biệt có đáp ứng một số nhu cầu của bạn không? –
@HighPerformanceMark LOL, không phải vậy. –
có vẻ như bạn muốn một công cụ so sánh sự giống nhau về ngữ nghĩa của 2 mã, chứ không phải là cú pháp. Tôi nghi ngờ rằng đây là một vấn đề chưa được giải quyết và rằng SO sẽ đấu tranh để tìm một giải pháp thỏa đáng cho bạn. Tôi nghĩ rằng, như được viết, câu hỏi ban đầu của bạn sẽ đánh lừa rất nhiều độc giả cũng giống như nó đã lừa dối tôi. Tôi cũng nghĩ rằng bạn nên viết lại nó hoàn toàn để nêu rõ loại so sánh mà bạn quan tâm. –