কোড সাদৃশ্য নির্ধারণ করার জন্য কি সরঞ্জাম আছে? [বন্ধ]


37

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


5
এটি কোন শ্রেণির জন্য বা কোনও কিছুর জন্য?
TheLQ

1
@ দ্য এলকিউ - আমি ক্লাসরুমের সেটিংয়ের বাইরে একাধিক মামলার কথা ভাবতে পারি যেখানে আমি "কাট এবং পেস্টের পুনরায় ব্যবহার করছি, তাই না?" ব্রিগেড পেরিয়ে গেছে।
এমআইএ

স্টিভ স্মিথের আতমিকের কথা ভুলে যাবেন না ।
জিম জি

মন্তব্য এবং আউটপুট বার্তাগুলি (ত্রুটি ইত্যাদির মতো) প্রায়শই আসল কোডের চেয়ে ফিঙ্গারপ্রিন্ট কোড আরও ভাল করতে পারে।
বোরক ব্ল্যাট

উনীতে তারা সর্বদা আমাদেরকে হুমকি দিয়েছিল, এ জাতীয় সরঞ্জামটি আসলেই আছে কিনা তা দেখতে আকর্ষণীয় হবে।
জেক

উত্তর:


10

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

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


ধন্যবাদ, আমি ঠিক এর মতো কিছু খুঁজছিলাম :)
উলিচ ড্যাঞ্জেল

8

আপনি যা খুঁজছেন তা পেতে আপনি পিএমডি সরঞ্জামটি ব্যবহার করতে সক্ষম হতে পারেন । এটি কোনও কোড বেসের মধ্যে কাটা এবং আটকানো বোঝানো হয়েছে তবে আপনি যদি সন্দেহযুক্ত উত্স প্রকল্পের উত্সটি অন্তর্ভুক্ত করেন তবে এটি আপনাকে কোডটি অনুলিপি করা হয়েছিল তা দেখতে সহায়তা করতে পারে।


হ্যাঁ - আমরা আমাদের কোডে পিএমডি থেকে সিপিডি ব্যবহার করি
জোসেকে

কিন্তু পিএমডি শুধু জাভার জন্য, তাই না?
জানুস লেনার

5

আপনি যা সন্ধান করছেন তার সাথে আমি সবচেয়ে কাছের জিনিসটি জানি ক্লোন ডিটেকটিভ। এটি একটি ভিজ্যুয়াল স্টুডিও প্লাগ-ইন।

ক্লোন ডিটেক্টিভ একটি ভিজ্যুয়াল স্টুডিও সংহত যা আপনাকে অন্য কোথাও সদৃশ কোডের সোর্স কোডের জন্য সি # প্রকল্প বিশ্লেষণ করতে দেয়। সদৃশ থাকা সহজেই অসঙ্গতি সৃষ্টি করতে পারে এবং প্রায়শই দুর্বল ফ্যাক্টর কোডের একটি সূচক।


4

মনে হচ্ছে আপনি দুটি বিমূর্ত সিনট্যাক্স ট্রি (এএসটি) এর মধ্যে পার্থক্যটি গণনা করতে চান, সুতরাং আপনি স্মার্ট ডিফারেন্সার সরঞ্জামটিতে আগ্রহী হতে পারেন ।

Https://stackoverflow.com/questions/974855/eclipse-abstract-syntax-tree-diff এ পাওয়া গেছে ।


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

1

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

অন্যদিকে, যদি আপনি না জানেন যে অনুরূপ কোডটি কোথায় রয়েছে তবে আপনি কেবল ভাবছেন যে কোথাও কোথাও উপস্থিত রয়েছে ... আপনি কী খুঁজছেন? চৌর্যবৃত্তি সনাক্ত করার জন্য একটি স্বয়ংক্রিয় সরঞ্জাম? আমি নিশ্চিত নই যে এ জাতীয় কোনও জিনিস রয়েছে।


যদি এটি হয়ে থাকে তবে এসসিও আইবিএম :-)

1

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


1

আপনি যা করতে চান তা হ'ল দুটি প্রকল্পের জুড়ে কোড ক্লোনড (অনুলিপি করা হয়েছে) রয়েছে (উভয় প্রকল্পই সম্ভবত বড় আকারের ফাইল রয়েছে)। আপনি ক্লোন সনাক্তকরণ সরঞ্জাম চালিয়ে এটি করতে পারেন। উইকিপিডিয়া তাদের বিভিন্ন তালিকাবদ্ধ করে।

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

আপনি যদি অনুলিপি-অতীত সম্পাদনা কোডের অনুলিপিটির বিশদটি দেখতে চান তবে আপনার কাছে এমন একটি ক্লোন ডিটেক্টর দরকার যা "প্যারামিটারাইজড" ক্লোনগুলি খুঁজে পায়। টোকেন ভিত্তিক সনাক্তকারীরা সম্পাদনাগুলির জন্য এটি করেন যা কেবলমাত্র পরিবর্তনশীল নাম বা ধ্রুবক প্রতিস্থাপন করে।

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

আমাদের ক্লোনডিআর সরঞ্জামটি এমন একটি ডিটেক্টর।

আমি এমন সরঞ্জামগুলি সম্পর্কে জানি না যা প্রকৃতপক্ষে "সমতুল্য" কোড (বিপরীত শর্তসাপেক্ষে) ইত্যাদি খুঁজে পাবে cl


1

আমি সত্যিই পছন্দ করি যে সিসিফিন্ডারএক্স কীভাবে সাদৃশ্যটি রূপায়িত করে , তাই আপনি এটিও পরীক্ষা করতে চাইতে পারেন। বেশ কয়েকটি ভাষার সমর্থন করে এটি সেটআপ করার জন্য নিখরচায় এবং মোটামুটি সহজ (পাইথন ২.6)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.