۱۳۸۷/۰۸/۰۹

تشخيص خودكار كدهاي تكراري در يك پروژه Visual Studio



آيا مي‌دانيد چند درصد از كدهاي يك پروژه شما در قسمت‌هاي مختلف آن تكراري هستند و تا چه حد نياز به refactoring كدهاي موجود جهت مديريت و نگهداري ساده‌تر از آن پروژه وجود دارد؟
اخيرا پروژه سورس بازي در سايت CodePlex به نام Clone detective ارائه شده است كه اين كار را به صورت خودكار با يكپارچه شدن با Visual studio براي شما انجام مي‌دهد. اين افزودني از آدرس زير قابل دريافت است:
http://www.codeplex.com/CloneDetectiveVS


بهترين آموزش نحوه استفاده از آن هم از طريق ويديوي زير در دسترس است:
مشاهده

در نگارش فعلي آن تنها پروژه‌هاي سي شارپ پشتيباني مي‌شوند و در نگارش‌هاي آتي آن قرار است VB.net و CPP نيز افزوده شوند.

به چه دليلي به اين ابزار نياز داريم؟
فرض كنيد كلاسي را جهت انجام مقصودي خاص توسعه داده‌ايد. در كلاسي ديگر براي اتمام آن، 15 سطر از يكي از توابع كلاس اول را كپي كرده و مورد استفاده قرار داده‌ايد. در يك پروژه بزرگ از اين موارد شايد زياد رخ دهد (خصوصا در يك كار تيمي كه ممكن است قسمتي از كار شما به‌عنوان پايه اوليه كاري ديگر مورد استفاده قرار گيرد). پس از مدتي، تغييراتي را در كلاس اول ايجاد كرده و يك سري از عيوب آن 15 سطر را كه جزئي از يك تابع است برطرف خواهيد كرد. بسيار هم خوب! آيا اين پايان كار است؟ خير!
آيا اين مورد به كل پروژه منتقل شده است؟ آيا نگهداري يك پروژه بزرگ كه داراي قسمت‌هاي تكراري زيادي است كار ساده‌اي است؟

علاوه بر ابزار فوق، برنامه ديگري نيز جهت تشخيص كدهاي تكراري در يك پروژه به نام Simian موجود است. Simian را از آدرس زير مي‌توانيد دريافت كنيد:
http://www.redhillconsulting.com.au/products/simian/overview.html
اين ابزار به صورت يك افزودني VS.net ارائه نشده است اما مي‌توان از طريق منوي tools آنرا به مجموعه ابزارهاي مورد استفاده اضافه كرد. نحوه انجام اينكار به صورت مصور در وبلاگ زير بيان شده است:
مشاهده

همچنين از ابزارهاي ديگري از اين دست مي‌توان به برنامه رايگان CCFinder‌ اشاره كرد: (ثبت نام دريافت آن رايگان است)
http://www.ccfinder.net