অর্থগত পার্থক্য ইউটিলিটিস [বন্ধ]


105

আমি সিমেটিক ডিফ / মার্জ ইউটিলিটির কয়েকটি ভাল উদাহরণ খুঁজতে চেষ্টা করছি। সোর্স কোড ফাইলগুলির সাথে তুলনা করার traditionalতিহ্যবাহী দৃষ্টান্ত লাইন এবং অক্ষরগুলির সাথে তুলনা করে কাজ করে .. তবে সেখানে কোনও ইউটিলিটি রয়েছে (কোনও ভাষার জন্য) যা ফাইলের সাথে তুলনা করার সময় কোডের কাঠামোটি বিবেচনা করে ?

উদাহরণস্বরূপ, বিদ্যমান ডিফ প্রোগ্রামগুলি "লাইন 125 এর 2 টি অক্ষরে প্রাপ্ত পার্থক্যের প্রতিবেদন করবে File ফাইল এক্সে শূন্যস্থান রয়েছে, যেখানে ফাইল ওয়াইতে বুল রয়েছে"। একটি বিশেষায়িত সরঞ্জাম "রিটার্ন টাইপ মেথডথ ডুসোমথিং () অকার্যকর থেকে বুলে পরিবর্তিত হয়েছে" প্রতিবেদন করতে সক্ষম হওয়া উচিত।

আমি যুক্তি দিয়ে বলব যে কোডটির তুলনা করার সময় ব্যবহারকারী এই ধরণের শব্দার্থক তথ্যটি আসলে যা খুঁজছিল তা হ'ল এবং পরবর্তী প্রজন্মের প্রগামিং সরঞ্জামগুলির লক্ষ্য হওয়া উচিত। উপলব্ধ সরঞ্জামগুলিতে এর কোনও উদাহরণ রয়েছে?


3
দেখে মনে হচ্ছে গাছ সম্পাদনার দূরত্ব নিয়ে কিছু গবেষণা হয়েছে। এটিটি এএসটির প্রয়োগের পরে মনে হচ্ছে এটি প্রথম চেষ্টা করা হবে। (যদি কেউ এই ধরণের জিনিস লেখার চেষ্টা করতে চান))
জে কমিনেক

2
আমি নিশ্চিত না এটি সত্যিই কার্যকর হবে কিনা। আপনি উল্লেখ করেছেন এমনটির মতো পার্থক্য পড়ার চেয়ে সহজেই দেখা যায়, বিশেষত যদি আপনার কাছে কোনও লাইনের মধ্যে পার্থক্য হাইলাইট করার সরঞ্জাম থাকে । কিছু কোড সবেমাত্র অপরিবর্তিত হয়ে প্রায় সরানো হয়েছে কিনা সনাক্ত করার ক্ষমতাটি সহজ এবং আরও দরকারী হবে, তাই না!
আঙ্কেলজিভ

2
@ ইউঙ্কলেজিভ আমি আশা করব যে বৈশিষ্ট্যটি স্বাভাবিকভাবেই সরঞ্জামটির প্রকৃতি অনুসরণ করবে। এছাড়াও, এটি সনাক্ত করতে সক্ষম হবে যে কেউ যদি কোঁকড়া ধনুর্বন্ধনী বা ইনডেন্ট শৈলীর মধ্য দিয়ে যায় এবং কোনও পরিবর্তন করে থাকে তবে উদাহরণস্বরূপ, বা স্ট্যাটিক পদ্ধতিগুলি গোষ্ঠীভুক্ত করা হয় তাই ফাইলটিকে পুনর্বিন্যাস করা যায় ...
জেসনম্রে

8
আমার এখন ভিজ্যুয়াল স্টুডিওতে এটি দরকার। একটি দলের মধ্যে বিকাশকারীদের ডিফ্সগুলির সুবিধার্থে একই বিন্যাস কাঠামোটি ব্যবহার করতে বাধ্য করা পিছনের দিকের চিন্তাভাবনা। কোডটি চেক-ইনের কিছু মানকটিতে ফর্ম্যাট করা উচিত এবং যে কোনও সময় কোনও বিকাশকারী কোনও ফাইল খোলার সময় এটি তাদের পছন্দ অনুসারে ফর্ম্যাট করা উচিত। আমি হতবাক হয়েছি এই ধরণের চিন্তাভাবনা এই মুহুর্তে আরও প্রশস্ত নয়।
ল্যাংডন

3
আইএমএইচএও এটি একটি সূক্ষ্ম বিষয় O আপনি যদি এটি সম্মত হন তবে "পুনরায় খুলুন"
ইরা

উত্তর:


37

আমরা এমন একটি সরঞ্জাম তৈরি করেছি যা এই দৃশ্যের সাথে সুনির্দিষ্টভাবে কাজ করতে সক্ষম। পরীক্ষা করে দেখুন http://www.semanticmerge.com

এটি কোড স্ট্রাকচারের ভিত্তিতে এবং পাঠ্য-ভিত্তিক অ্যালগরিদম ব্যবহার না করে মার্জ (এবং ডিফার্স) করে, যা আপনাকে মূলত শক্তিশালী চুল্লী জড়িত, নিম্নলিখিতগুলির মতো মামলাগুলি মোকাবেলা করার অনুমতি দেয়। এটি নীচের মত দেখতে পাওয়ায় পার্থক্য এবং মার্জ সংঘাত উভয়ই রেন্ডার করতে সক্ষম:

এখানে চিত্র বর্ণনা লিখুন

এবং পাঠ্য ব্লকগুলি সরিয়ে নিয়ে যাওয়ার সাথে বিভ্রান্ত হওয়ার পরিবর্তে, যেহেতু এটি প্রথমে বিশ্লেষণ করে, এটি প্রতি পদ্ধতির ভিত্তিতে বিবাদগুলি প্রদর্শন করতে সক্ষম হয় (আসলে উপাদান হিসাবে)। আগের মত কেস এমনকি ম্যানুয়াল দ্বন্দ্ব সমাধান করতে হবে না।

এখানে চিত্র বর্ণনা লিখুন

এটি একটি ভাষা-সচেতন সংশ্লেষের সরঞ্জাম এবং অবশেষে এই SO প্রশ্নের উত্তর দিতে সক্ষম হয়ে দুর্দান্ত হয়েছে :-)


এটি কি এসভিএন এর সাথে সংহত করা সম্ভব?
সত্য

1
তবে লিনাক্স এবং ম্যাক সংস্করণগুলি প্রাচীন।
মাইকেল পিফেল

29

গ্রহনের এই বৈশিষ্ট্যটি দীর্ঘকাল ধরে রয়েছে। একে "স্ট্রাকচার তুলনা" বলা হয় এবং এটি খুব সুন্দর। এখানে জাভা জন্য একটি নমুনা স্ক্রিনশট, একটি এক্সএমএল ফাইলের জন্য অন্য পরে:

(উপরের ফলকে পদ্ধতিতে বিয়োগ ও প্লাস আইকনগুলি নোট করুন))

Eclipse এর জাভা স্ট্রাকচারের তুলনা করুন এক্সিলিপসের এক্সএমএল স্ট্রাকচার তুলনা করুন


3
কাঠামো কি তুলনা করে আপনাকে অন্যান্য উত্স নিয়ন্ত্রণ মার্জ সম্পাদকদের মতো পরিবর্তনগুলিকে মার্জ করার অনুমতি দেয়? অর্থাৎ এই সংস্করণটি থেকে অন্য সংস্করণে এই পদ্ধতিটি অনুলিপি করুন।
জোনাথন পার্কার

1
হ্যাঁ, আপনি যখন কোনও পরিবর্তন বা কোনও পার্থক্য নির্বাচন করেন (উপরের বা নীচের অংশে), তখন সরঞ্জামদণ্ডের বোতামগুলি (স্ক্রিনশটগুলিতে প্রদর্শিত) আপনাকে বাম থেকে ডানে বা তদ্বিপরীত পরিবর্তনটি অনুলিপি করার বিকল্প দেয়।
হোসাম অলি

1
দুর্ভাগ্যক্রমে, স্ক্রিনশটগুলি আপনার (সর্বোচ্চ-আপভোটেড এবং স্বীকৃত!) উত্তরে আর দৃশ্যমান নয়। আপনি তাদের আবার জমা দিতে পারেন?
blubb

@ ব্লুব আমাকে জানানোর জন্য ধন্যবাদ আমি জাভা তুলক ইমেজ দিয়ে ত্রুটি সংশোধন করেছি। আমি শীঘ্রই এক্সএমএল স্ট্রাকচার তুলনার জন্য একটি স্ক্রিনশট যুক্ত করার চেষ্টা করব।
হোসাম আলি

1
এবং এটি জাভা বাদে অন্য ভাষার জন্য কাজ করে?
einpoklum

14

"শব্দার্থত তুলনা" ভাল করার জন্য, আপনাকে ভাষাগুলির সিনট্যাক্স গাছগুলির তুলনা করতে হবে এবং প্রতীকগুলির অর্থ বিবেচনা করা উচিত। সত্যিই ভাল শব্দার্থক পার্থক্য ভাষা শব্দার্থবিজ্ঞান বুঝতে পারে এবং বুঝতে পারে যখন কোডের একটি ব্লক অন্যটির সাথে সমান হয়। এদিকে যাওয়ার জন্য একটি উপপাদ্য প্রবাদ প্রয়োজন, এবং এটি অত্যন্ত চতুর হলেও, বর্তমানে কোনও বাস্তব সরঞ্জামের জন্য ব্যবহারিক নয়।

এর একটি কার্যক্ষম আনুমানিকতা কেবল সিনট্যাক্স গাছের সাথে তুলনা করা এবং structuresোকানো, মুছে ফেলা, সরিয়ে নেওয়া বা পরিবর্তিত কাঠামোগত শর্তগুলির পরিবর্তনের প্রতিবেদন করা। কোনও "শব্দার্থক তুলনা" এর কিছুটা কাছাকাছি পৌঁছনোর পরে, যখন কোনও সনাক্তকারী কোডের ব্লক জুড়ে ধারাবাহিকভাবে পরিবর্তন করা যায় তখন কেউ রিপোর্ট করতে পারে।

সিনট্যাক্স ট্রি-ভিত্তিক তুলনা ইঞ্জিনের জন্য অনেকগুলি ভাষার সাথে কাজ করে এমন আমাদের সিনেমার জন্য আমাদের http://www.semanticdesigns.com/Products/SmartDifferencesr/index.html দেখুন , যা উপরোক্ত আনুমানিকভাবে কাজ করে।

সম্পাদনা জানুয়ারী ২০১০: সি ++, সি #, জাভা, পিএইচপি, এবং কোবোলের জন্য সংস্করণ উপলব্ধ। এইগুলির বেশিরভাগের জন্য নির্দিষ্ট উদাহরণগুলি ওয়েবসাইট দেখায় shows

২০১০ এর মে মে সম্পাদনা: পাইথন এবং জাভাস্ক্রিপ্ট যুক্ত।

সম্পাদনা অক্টোবর 2010: ইজিএল যুক্ত হয়েছে।

EDIT নভেম্বর 2010: ভিবি 6, ভিবিএস স্ক্রিপ্ট, ভিবি নেট যোগ হয়েছে


2
হাই ইরা, আপনি কি আপনার ভিন্ন অ্যালগরিদমের উপর একটি কাগজ প্রকাশ করেছেন? গাছ-সম্পাদনার দূরত্বের বিবিধ সাহিত্য খুঁজে পেতে আমার সমস্যা হচ্ছে। ধন্যবাদ, টেরেন্স।
টেরেন্স পারর

আরও সুনির্দিষ্টভাবে জানার জন্য, ডিফফ 3 সন্ধান করুন প্লেইন ডিফফ 2
টেরেন্স পারর

2
@ টেরেন্স: আমাদের পৃথক অ্যালগরিদমের কোনও প্রকাশনা নেই। এটি একটি লেভেনস্টিন ন্যূনতম দূরত্বের গণনা যা সমান সাবটিরিগুলি সনাক্ত করতে প্রত্যয় গাছ ব্যবহার করে কিছু নামকরণ পুনরায় নামকরণ করতে পারে। আইআইআরসি, ইয়াং এর সফ্টওয়্যার অনুশীলন এবং অভিজ্ঞতা সম্পর্কে একটি কাগজ ছিল। আমাদের এবং ইয়াং এর পার্থক্য রয়েছে, পৃথক নয়।
ইরা

@ ইরাক্যাক্সটার লিঙ্কটি বর্তমানে ভাঙ্গা হয়েছে এবং গুগল লিঙ্ক থেকে খোলার সময় সাইটটি ডাউন বলে মনে হচ্ছে।
রেজওয়ান ফ্ল্যাভিয়াস পান্ডা

সাইট ব্যাক আপ হয়েছে, লিঙ্কটি ঠিক আছে।
ইরা

12

আপনি যার জন্য গ্রোপ করছেন তা হ'ল "ট্রি ডিফ"। দেখা যাচ্ছে যে একটি সাধারণ লাইন-ভিত্তিক পাঠ্য বিভাজনের চেয়ে এটি করা আরও বেশি শক্ত, যা সত্যিই দুটি ফ্ল্যাট সিকোয়েন্সগুলির তুলনা মাত্র।

" একটি সূক্ষ্ম XML স্ট্রাকচারাল তুলনা পদ্ধতির " অংশটি এই অংশে শেষ হয়েছে:

আমাদের তাত্ত্বিক অধ্যয়নের পাশাপাশি আমাদের পরীক্ষামূলক মূল্যায়ন থেকে প্রমাণিত হয়েছিল যে একই পদ্ধতিতে জটিলতা থাকার সময় প্রস্তাবিত পদ্ধতিটি বিদ্যমান বিকল্পগুলির সাথে সম্মতভাবে কাঠামোগত মিলের ফলাফলের উন্নতি করেছে (ও (এন ^ 2))

(জোর আমার)

প্রকৃতপক্ষে, আপনি যদি গাছের পার্থক্যের আরও উদাহরণ খুঁজছেন তবে আমি এক্সএমএলকে কেন্দ্র করে ফোকাস করার পরামর্শ দিচ্ছি যেহেতু এটি সেই অঞ্চলে বাস্তবিক অগ্রগতি চালাচ্ছে।


লিঙ্কের জন্য ধন্যবাদ। আমি সিমেটিক ডিফ সরঞ্জামগুলি প্রয়োগ করার জন্য কয়েকটি ভিন্ন পদ্ধতির কথা ভাবতে পারি এবং আপনি সঠিক - বেশিরভাগটিকে "ট্রি ডিফ" এ বিমূর্ত করা যেতে পারে। আরও জটিল পরিস্থিতিতে এমনকি "গ্রাফ ডিফ" এ বিমূর্ত করা প্রয়োজন হতে পারে।
জেসমনরে

হ্যাঁ। আইবিএমের রেশনাল মডেলার (গ্রহণে নির্মিত) ইউএমএল মডেলগুলির সাথে এটি করার চেষ্টা করে (দুটি মডেলের মধ্যে পার্থক্য চিত্রগতভাবে দেখায়)। আমি ফলাফলগুলির দরকারীতার বিষয়ে মন্তব্য করতে পারি না কারণ আমি এটি বেশি ব্যবহার করি না।
বেন্ডিন

আমি সম্মত হই যে এক্সএমএল শুরু করার জন্য একটি ভাল জায়গা, কারণ আপনি অন্যান্য কাঠামোর প্রতিনিধিত্ব করার জন্য স্কিমার সাথে সহজেই আসতে পারেন (যেমন জাভা কোড, উদাহরণস্বরূপ), এবং কোড ডিফ প্রয়োগ করতে এক্সএমএল ভিত্তিক ট্রি-ডিফ ব্যবহার করতে পারেন।
জেসমনরে

"এটি করুন" => "গ্রাফ ডিফার" এর অনুরূপ কিছু করুন।
বেন্ডিন

1
সিনট্যাক্স ট্রি-ভিত্তিক তুলনামূলক ইঞ্জিনের জন্য semdesigns.com/Products/SmartDifferencesr/index.html দেখুন যা অনেক ভাষার সাথে কাজ করে।
ইরা বাক্সটার


2

এর সমাধান প্রতি ভাষা ভিত্তিতে হবে। উদাহরণস্বরূপ, যদি না এটি কোনও প্লাগইন আর্কিটেকচারের সাহায্যে ডিজাইন করা থাকে যা কোডটিকে গাছের মধ্যে অনেকগুলি পার্সিং এবং কোনও ভাষা নির্দিষ্ট প্লাগইনের সাথে শব্দার্থক তুলনা করে তবে তা একাধিক ভাষাকে সমর্থন করা খুব কঠিন হবে। আপনি কোন ভাষা (গুলি) এর জন্য এমন একটি সরঞ্জাম রাখার বিষয়ে আগ্রহী? ব্যক্তিগতভাবে আমি সি # এর জন্য একটি পছন্দ করতাম।

সি # এর জন্য রিফ্লেক্টরে অ্যাড-ইন-এর বিধানসভা আছে তবে এটি কেবল সি # এর চেয়ে আলাদা নয় #

আপনি এখানে পৃথক অ্যাড-ইন ডাউনলোড করতে পারেন [জিপ] বা কোডড্লেক্স সাইটে প্রকল্পে যেতে পারেন এখানে


1
ভাষা প্লাগইন স্টাইলটি হুবহু সঠিকভাবে ব্যবহার করে বহু ভাষা নিয়ে কাজ করে এমন একটি সিনট্যাক্স ট্রি-ভিত্তিক তুলনা ইঞ্জিনের জন্য semdesigns.com/Products/SmartDifferencesr/index.html দেখুন । এখনও প্রকাশ করা হয়নি, তবে একটি সি # সংস্করণ খুব কাছাকাছি।
ইরা বাক্সটার

জানুয়ারী 2010: সি # স্মার্ট ডিফারেন্সার প্রকাশিত হয়েছে।
ইরা

2

জয়নামিকস নামে একটি সংস্থা একটি বাইনারি-স্তরের সিনমেটিক ডিফ সরঞ্জাম সরবরাহ করে। এটি বাইনারিটির 2 টি সংস্করণের গ্রাফ-তাত্ত্বিক বিশ্লেষণ করতে রিয়েল নামে একটি মেটা-অ্যাসেম্বলি ভাষা ব্যবহার করে এবং তাদের মধ্যে পার্থক্য বর্ণনা করার জন্য একটি বর্ণ-কোড কোডযুক্ত গ্রাফ তৈরি করে। আমি দাম সম্পর্কে নিশ্চিত নই, তবে সন্দেহ করি এটি নিখরচায়।


বাইনারি-স্তরের
সিনমেটিক

2

http://prettydiff.com/

মন্তব্যগুলি এবং অপ্রয়োজনীয় সাদা স্থান অপসারণ করার জন্য প্রেটি ডিফ প্রতিটি ইনপুটকে ছোট করে তোলে এবং তারপরে পৃথক অ্যালগরিদমের আগে কোডটি সুন্দরী করে। আমি এর চেয়ে বেশি কোড সিমেন্টিক হয়ে উঠতে চাই না। এবং এর লিখিত জাভাস্ক্রিপ্ট তাই এটি সরাসরি ব্রাউজারে চলে।


5
তাহলে আপনার একটা সীমাবদ্ধ কল্পনা! কোনও ফাইলে দুটি পদ্ধতির অবস্থানগুলি অপরিবর্তিত রেখে অদলবদল সম্পর্কে কী? রিফ্যাক্টরিংস সম্পর্কে কী?
রবিন সবুজ

(আপনি জাভাতে এইভাবে ডেটা ডিক্লেয়ারেশনের চারপাশে অদলবদল করতে পারবেন না এবং প্রবর্তকদের কারণে এখনও সমতুল্যতা রয়েছে; আমি ধরে নিচ্ছি সি # এর মতোই সমস্যা আছে)। আপনি যদি খাঁটি শব্দার্থক পার্থক্যের জন্য যান তবে আপনি টুরিং মেশিনের সমতুল্যতা সমাধান করার চেষ্টা করছেন। খাঁটি পাঠ্যের সাথে আরও ভাল মিলের জন্য আরও অনেক পরিসীমা রয়েছে এবং টুরিংয়ের চেয়েও অসম্ভব।
ইরা

@ ইরাক্যাক্সটার এই সরঞ্জামটি ধারণাগতভাবে কেবল সমমানের জিনিস হিসাবে দেখাবে যা আসলে সমতুল্য। যদি সঠিকভাবে কোডিং করা থাকে তবে এতে যে ধরণের সমস্যাটি উল্লেখ করা হচ্ছে তা এতে থাকবে না।
রেজওয়ান ফ্ল্যাভিয়াস পান্ডা

"যথাযথভাবে কোডিং" এর অর্থ আপনি যদি চূড়ান্ত সরঞ্জামটি চান তবে অ্যালগরিদম সমতা প্রমাণ করে। অ্যালগরিদম সমতুল্য প্রমাণগুলি সাধারণত টিউরিং-হার্ড, তাই আপনি অনুশীলনে এমন একটি সরঞ্জাম পাচ্ছেন না। আপনি যা পেতে পারেন তা হ'ল এমন একটি সরঞ্জাম যা কেবল বাক্য গঠন পরিবর্তনের পরিবর্তে কিছু সমতুল্যতা পরিচালনা করে । আজ অবধি, আমি এই ধরণের সরঞ্জাম তৈরির জন্য কেউ চেষ্টা করতে দেখিনি।
ইরা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.