İki farklı C ++ kaynağı karşılaştırmak ve kod anlamlı farklılıkları (farklı biçimlendirilmiş sürümleri karşılaştırmak için) bulmak bir uygulama arıyorum. En azından, kaynağın işlevselliğini etkilemeyen beyaz boşluklar, sekme boşlukları ve yeni satırlardaki değişiklikleri göz ardı etme yeteneğine sahip bir şey (bir satırsonunun boşluk boşluğunun dile bağlı olup olmadığı ve C ve C ++ bunu yaptığına dikkat edin) ). Ve ideal olarak, tüm kod-anlamlı farklılıkları tam olarak tanımlayabilen bir şey. Ubuntu'dayım.
Buna göre diff --help | grep ignore
, makul bir şekilde iş diff -bBwZ
yapmayı bekledim (daha sonra ele alınacak yanlış negatifler almayı bekledim). Yine de öyle değil.
parçacıkları olan aşağıdaki dosyalara sahipsem
test_diff1.txt
else if (prop == "P1") { return 0; }
ve test_diff2.txt
else if (prop == "P1") {
return 0;
}
sonra
$ diff -bBwZ test_diff1.txt test_diff2.txt
1c1,3
< else if (prop == "P1") { return 0; }
---
> else if (prop == "P1") {
> return 0;
> }
boş sonuçlar yerine.
Her iki girişte de bir kod biçimlendiricisinin "filtre" olarak kullanılması bu farklılıkları filtreleyebilir, ancak daha sonra elde edilen çıktının, gerçek metin ve satır numaralarını tutmak için farklılıkların son raporlaması için orijinal girdilere bağlanması gerekir. Yani amaca uygun bir derleyiciye ihtiyaç duyulmadan ulaşılabilir ... Yine de bir şey olup olmadığını bilmiyorum.
Hedefe ulaşılabilir diff
mi?
Aksi takdirde, bir alternatif var mı (tercihen komut satırı için)?