معرفی کوتاه: به دست آوردن تشابه بین کد منبع دو برنامه

موردی پیش اومد که باید چک می‌کردم که آیا پروژه‌ای که یکی از دوستان کار کرده بود از یه پروژه منبع باز مشهور کپی شده یا نه؟ با یه جستجوی کوتاه به MOSS رسیدم. MOSS مخفف Measure of Software Similarity (سنجه تشابه نرم‌افزار) در واقع یه وب سرویسه که تو دانش‌گاه استنفورد توسعه داده شده تا بتونه به اساتید اونجا کمک کنه تا بفهمن آیا دانشجوها برنامه‌هاشون رو از رو دست هم کپ زدن یا نه.

برای استفاده از MOSS اول باید ثبت نام کرد. برای این کار باید یه ایمیل به moss@moss.stanford.edu فرستاد که دقیقا این متن توش درج شده باشه:

registeruser
mail username@domain

جای username@domain.com ایمیل خودمون رو جایگزین کنیم. در جواب یه ایمیل دریافت می‌کنیم که یه اسکریپت پرل برای کار با MOSS توشه. البته می‌شه از اون اسکریپت استفاده نکرد. خود سایت اسکریپت‌های دیگه‌ای هم داره. برای کار با اسکریپت‌های دیگه کافیه کد کاربری که داخل اسکریپت فرستاده شده همراه با ایمیل هست رو استفاده کرد. البته به نظر من که اسکریپت اصلی به اندازه کافی خوبه.

بعد از ذخیره اسکریپت تو یه فایل مثلا به اسم moss و دادن مجوز اجرایی به اون فایل، مثلا برای مقایسه سورس کدی به زبان ‪C++‬ بین دو تا فولدر aaa و bbb می‌شه از دستور زیر استفاده کرد:
[bash]
./moss -l cc aaa/* bbb/*
[/bash]
پارامترها اونقده سرراستن که نیازی به توضیح نیست. در جواب MOSS یه URL بر می‌گردونه که نتیجه تحلیل توشه. تجربه من این بود که حتما باید نتایج رو شخصا بررسی کرد. چون بعضی جاها نرم‌افزار شباهت‌ها رو اشتباه تشخیص می‌ده.

پی‌نوشت: در مورد دوستم خوش‌بختانه کم‌تر از نیم درصد بین دو تا پروژه شباهت داشت. تا سیه‌روی شود کسی که وقتی نمی‌تونه برنامه‌ای رو بنویسه، تهمت می‌زنه.