ฉันกำลังมองหาแอปพลิเคชันที่สามารถเปรียบเทียบสองแหล่ง C ++ และค้นหาความแตกต่างที่มีความหมายรหัส (เพื่อเปรียบเทียบรุ่นที่อาจมีการจัดรูปแบบแตกต่างกัน) อย่างน้อยที่สุดสิ่งที่มีความสามารถในการเพิกเฉยต่อการเปลี่ยนแปลงในพื้นที่สีขาวพื้นที่แท็บและการขึ้นบรรทัดใหม่ซึ่งไม่ส่งผลกระทบต่อการทำงานของแหล่งที่มา (โปรดทราบว่าการขึ้นบรรทัดใหม่นั้นถือเป็นช่องว่างขึ้นอยู่กับภาษาและ C และ C ++ ) และสิ่งที่สามารถระบุความแตกต่างที่มีความหมายรหัสทั้งหมด ฉันอยู่ภายใต้ Ubuntu
ตามที่diff --help | grep ignore
ฉันคาดหวังว่าdiff -bBwZ
จะทำงานได้อย่างสมเหตุสมผล (ฉันคาดว่าจะได้รับผลกระทบเชิงลบบางอย่างที่จะได้รับการจัดการในภายหลัง) อย่างไรก็ตามมันไม่ได้
หากฉันมีไฟล์ต่อไปนี้พร้อมตัวอย่าง
test_diff1.txt
else if (prop == "P1") { return 0; }
และ test_diff2.txt
else if (prop == "P1") {
return 0;
}
แล้วก็
$ diff -bBwZ test_diff1.txt test_diff2.txt
1c1,3
< else if (prop == "P1") { return 0; }
---
> else if (prop == "P1") {
> return 0;
> }
แทนผลลัพธ์ที่ว่างเปล่า
การใช้ตัวจัดรูปแบบรหัสเป็น "ตัวกรอง" ในอินพุตทั้งสองอาจกรองความแตกต่างเหล่านี้ แต่ผลลัพธ์ที่ได้จะต้องเชื่อมโยงกลับไปที่อินพุตดั้งเดิมสำหรับการรายงานขั้นสุดท้ายของความแตกต่างเพื่อเก็บข้อความและหมายเลขบรรทัดจริง ดังนั้นวัตถุประสงค์สามารถบรรลุได้โดยไม่ต้องใช้คอมไพเลอร์อย่างถูกต้อง ... ฉันไม่รู้ว่ามีบางอย่างพร้อมใช้งานหรือไม่
สามารถบรรลุวัตถุประสงค์ได้diff
หรือไม่
มิฉะนั้นจะมีทางเลือกอื่น (โดยเฉพาะอย่างยิ่งสำหรับบรรทัดคำสั่ง)?