Tôi đang tìm kiếm một ứng dụng có thể so sánh hai nguồn C ++ và tìm sự khác biệt có ý nghĩa mã (để so sánh các phiên bản có thể được định dạng lại khác nhau). Ở mức tối thiểu, một cái gì đó có khả năng bỏ qua các thay đổi trong khoảng trắng, không gian tab và dòng mới không ảnh hưởng đến chức năng của nguồn (lưu ý rằng một dòng mới được coi là khoảng trắng phụ thuộc vào ngôn ngữ và C và C ++ làm như vậy ). Và, lý tưởng nhất, một cái gì đó có thể xác định chính xác tất cả các khác biệt có ý nghĩa mã. Tôi đang dùng Ubuntu.
Theo diff --help | grep ignore
, tôi dự kiến sẽ diff -bBwZ
làm công việc hợp lý (tôi dự kiến sẽ nhận được một số tiêu cực sai, sẽ được xử lý sau). Tuy nhiên, nó không.
nếu tôi có các tệp sau với đoạn trích
test_diff1.txt
else if (prop == "P1") { return 0; }
và test_diff2.txt
else if (prop == "P1") {
return 0;
}
sau đó
$ diff -bBwZ test_diff1.txt test_diff2.txt
1c1,3
< else if (prop == "P1") { return 0; }
---
> else if (prop == "P1") {
> return 0;
> }
thay vì kết quả trống rỗng.
Sử dụng một bộ định dạng mã làm "bộ lọc" cho cả hai đầu vào có thể lọc ra những khác biệt này, nhưng sau đó đầu ra kết quả sẽ phải được gắn lại với đầu vào ban đầu để báo cáo cuối cùng về sự khác biệt để giữ số văn bản và số dòng thực tế. Vì vậy, mục tiêu có thể đạt được mà không cần một trình biên dịch đúng cách ... Tuy nhiên, tôi không biết nếu có một cái gì đó có sẵn.
Mục tiêu có thể đạt được với diff
?
Nếu không, có một sự thay thế (tốt nhất là cho dòng lệnh)?