شبكة بحوث وتقارير ومعلومات
تجربة هيدر2
اليوم: الاحد 28 ابريل 2024 , الساعة: 3:09 م


اخر المشاهدات
الأكثر قراءة
اعلانات

مرحبا بكم في شبكة بحوث وتقارير ومعلومات


عزيزي زائر شبكة بحوث وتقارير ومعلومات.. تم إعداد وإختيار هذا الموضوع [ تعرٌف على ] تكرار الكود # اخر تحديث اليوم 2024-04-28 فإن كان لديك ملاحظة او توجيه يمكنك مراسلتنا من خلال الخيارات الموجودة بالموضوع.. وكذلك يمكنك زيارة القسم , وهنا نبذه عنها وتصفح المواضيع المتنوعه... آخر تحديث للمعلومات بتاريخ اليوم 23/03/2024

اعلانات

[ تعرٌف على ] تكرار الكود # اخر تحديث اليوم 2024-04-28

آخر تحديث منذ 1 شهر و 5 يوم
2 مشاهدة

تم النشر اليوم 2024-04-28 | تكرار الكود

كيفية خلق المكررات


يوجد العديد من الأسباب لظهور تكرار الرموز، ومن ضمنهم: برمجة النسخ واللصق، حيث يتم نسخ جزء من الكود «لأنه يعمل». وفي معظم الحالات تتضمن تلك العملية تعديلات بسيطة في الكود المنسوخ مثل إعادة تسمية المتغيرات أو إدخال/حذف جزء من الكود.
وجود وظيفة مماثلة بشكل كبير لوظيفة أخرى مطلوبة في برنامج أخر فيكتب المبرمج بشكل مستقل كود مشابه لما هو موجود سابقاً.
سرقة فكرية، حيث يتم نسخ الكود بدون إذن أو إسناد.

مثال على التماثل الوظيفي


لاحظ هذا المثال المأخوذ من قصاصة رمز لحساب الـالمتوسط الرياضي لـمجموعة هيكل البيانات لـالأعداد الصحيحة extern int array1[];
extern int array2[];

int sum1 = 0;
int sum2 = 0;
int average1 = 0;
int average2 = 0;

for (int i = 0; i < 4; i++)
{
sum1 += array1[i];
}
average1 = sum1/4;

for (int i = 0; i < 4; i++)
{
sum2 += array2[i];
}
average2 = sum2/4; يمكن كتابة الحلقتين التكرارتين كمعادلة واحدة: int calcAverage (int* Array_of_4)
{
int sum = 0;
for (int i = 0; i < 4; i++)
{
sum += Array_of_4[i];
}
return sum/4;
} باستخدام المعادلة السابقة ينتج كود مصدري ليس له حلقة مكررة: extern int array1[];
extern int array2[]; int average1 = calcAverage(array1);
int average2 = calcAverage(array2);

أدوات


تتضمن أدوات تحليل تكرار الكود التالي: Atomiq – تجاري
Black Duck Suite – تجاري (سلسلة برامج تحليلية)
CCFinder (C/C++، جافا، كوبول، فورتران، الخ / غير متكافئ مع نظم تشغيل غير ويندوز)
Checkstyle (جافا)
CloneAnalyzer (C/C++ وجافا / برنامج مساعدة ايكليبس فقط)
Clone Digger (بايثون وجافا)
CloneDR – تجاري (أيدا, C, C++, C#, جافا، كوبول, فورترن، بايثون, VB.net, VB6, PHP4/5, PLSQL, SQL2011, XML, وأخرون)
مكتشف النسخ/اللصق (CPD) من بي ام دي (جافا، بي اتش بي، فورترن JSP, C, C++,)
ConQAT (مصدر مفتوح، يدعم: ABAP، أيدا، كوبول، C/C++، C#، جافا، PL/I، PL/SQL، بيثون، نص، إجراء SQL، فيجوال بيسك، XML)
JPlag (جافا، C#، C، C++، نص لغات طبيعية ومتداخلة)
Pattern Miner (CP Miner) - تجاري
Simian (برنامج) - تجاري
CodePro Analytix – تجاري

اكتشاف تكرار الرموز


تم اقتراح عدد من الخوارزميات المختلفة لاكتشاف تكرار الكود. على سبيل المثال: خوارزمية بيكر.
خوارزمية سلسلة بحث رابين كارب.
استخدام شجرة التركيب المجردة.
كشف الاستنساخ البصري.

شرح مبسط


إن تكرار الكود هو مصطلح لبرمجة الحاسوب للتعبير عن تعاقب كود مصدري لأكثر من مرة، سواء أن كان في نفس البرنامج أو في برامج مختلفة مملوكة من قبل نفس الكيان. يعتبر تكرار الكود ظاهرة غير مرغوب بها لعدة أسباب.[1] إن الحد الأدنى المطلوب يُطبق على مقدار من الكود التي يجب أن تظهر بشكل متسلسل حتى تعتبر مكررة فضلاً عن اعتبارها متشابهة بمحض الصدفة. تسلسل تكرار الكود أحيانا تُعرف باستنساخات.
الطرق التالية تشير إلى كيفية تكرار الكود المتسلسلة:
شاركنا رأيك

 
التعليقات

لم يعلق احد حتى الآن .. كن اول من يعلق بالضغط هنا

أقسام شبكة بحوث وتقارير ومعلومات عملت لخدمة الزائر ليسهل عليه تصفح الموقع بسلاسة وأخذ المعلومات تصفح هذا الموضوع [ تعرٌف على ] تكرار الكود # اخر تحديث اليوم 2024-04-28 ويمكنك مراسلتنا في حال الملاحظات او التعديل او الإضافة او طلب حذف الموضوع ...آخر تعديل اليوم 23/03/2024


اعلانات العرب الآن