فيروس تاكو
Tcov هي أداة لتحليل تغطية الكود المصدري وتحديد خصائص كل عبارة على حدة للبرامج المكتوبة بلغات Fortran و C و C++ . تُنشئ Tcov إحصاءات دقيقة لعدد مرات تنفيذ كل عبارة في البرنامج، وتُضيف تعليقات توضيحية إلى الكود المصدري لتسهيل عملية التحليل. وهي أداة قياسية، تُقدم مجانًا مع برنامج Sun Studio .
تُوفّر أداة tcov معلومات حول عدد مرات تنفيذ أجزاء من التعليمات البرمجية في البرنامج . وتُنتج نسخة من ملف المصدر، مُعلّمة بترددات التنفيذ. يُمكن إضافة التعليقات التوضيحية على مستوى الكتلة الأساسية أو على مستوى سطر المصدر. وبما أن التعليمات في الكتلة الأساسية تُنفّذ العدد نفسه من المرات، فإن عدد مرات تنفيذ الكتلة الأساسية يُساوي عدد مرات تنفيذ كل تعليمة في الكتلة. لا تُنتج أداة tcov أي بيانات زمنية.
وصف
يُنتج الأمر tcov تحليلًا لتغطية الاختبار لبرنامج مُجمَّع . يأخذ tcov ملفات المصدر كوسائط، ويُنتج قائمة مصدر مُعلَّقة. تُسبق كل كتلة أساسية من التعليمات البرمجية (أو كل سطر إذا تم تحديد خيار معين لـ tcov) بعدد مرات تنفيذها؛ أما الأسطر التي لم تُنفَّذ فتُسبق بـ "#####".
تُضيف أداة tcov أيضًا ملخصًا في نهاية قائمة البرنامج المُعلّقة. تُعرض إحصائيات الكتل الأساسية الأكثر تنفيذًا مُرتبةً حسب تكرار التنفيذ. رقم السطر هو رقم السطر الأول في الكتلة.
يوجد تطبيقان لـ tcov:
- تحليل التغطية بالطريقة القديمة: [ 1 ] في هذا التطبيق، المعروف أيضًا باسم tcov الأصلي، يقوم المترجم بإنشاء ملف بيانات تغطية باللاحقة .d لكل ملف كائن . عند اكتمال البرنامج ، يتم تحديث ملفات بيانات التغطية.
- تحليل التغطية بأسلوب جديد: [ 2 ] في هذا التطبيق، المعروف أيضًا باسم tcov المحسّن، لا يتم إنشاء ملفات إضافية أثناء وقت الترجمة. بدلاً من ذلك، يتم إنشاء دليل لتخزين بيانات الملف التعريفي، ويتم إنشاء ملف بيانات تغطية واحد يسمى tcovd في ذلك الدليل.
يتغلب تحليل التغطية المحسن على بعض أوجه القصور في أداة التحليل الأصلية، مثل: [ 3 ]
- يوفر دعمًا أكثر اكتمالًا للغة C++.
- يدعم الكود الموجود في ملفات الرأس #include ويصحح عيبًا كان يحجب أرقام التغطية لفئات القوالب والوظائف.
- وقت تشغيل أكثر كفاءة من وقت تشغيل tcov الأصلي.
- يدعم جميع المنصات التي تدعمها المترجمات.
تطبيق
لإنشاء شفرة مصدرية مشروحة، يلزم اتباع الخطوات الثلاث التالية: [ 4 ]
- تجميع الكود باستخدام خيار المُجمِّع المناسب
- تنفيذ البرنامج لتجميع بيانات الملف الشخصي
- تنفيذ أمر tcov لإنشاء ملفات مشروحة
تُضاف بيانات التغطية إلى ملف بيانات الملف الشخصي مع كل تشغيل لاحق. تُمسح بيانات كل ملف كائن عند تشغيل البرنامج لأول مرة بعد إعادة تجميعه. تُمسح بيانات البرنامج بالكامل عن طريق حذف ملف tcovd. [ 5 ]
الخطوات المذكورة أعلاه موضحة أدناه لكل من النسخة الأصلية والمحسّنة من tcov:
تحليل تغطية النمط القديم
يُجمَّع الكود المصدري باستخدام الخيار -xa لبرامج C، والخيار -a لبرامج Fortran وC++. يُنشئ المُجمِّع ملف بيانات تغطية باللاحقة .d لكل ملف كائن. يُنشأ ملف بيانات التغطية في الدليل المُحدد بواسطة متغير البيئة TCOVDIR . إذا لم يتم تحديد TCOVDIR ، يُنشأ ملف بيانات التغطية في الدليل الحالي. يُشغَّل الإصدار المُجهَّز أعلاه، وعند اكتمال البرنامج، تُحدَّث ملفات .d . أخيرًا، يُشغَّل الأمر tcov لإنشاء ملفات المصدر المُعلَّقة. صيغة الأمر tcov هي كما يلي:
خيارات tcov قائمة ملفات المصدر
هنا، تُشير source-file-list إلى قائمة بأسماء ملفات الشيفرة المصدرية. لعرض قائمة بالخيارات، يكون الناتج الافتراضي لـ tcov عبارة عن مجموعة من الملفات، كل منها يحمل اللاحقة .tcov ، ويمكن تغيير ذلك باستخدام الخيار -o filename.
يمكن تشغيل برنامج تم تجميعه لتحليل تغطية التعليمات البرمجية عدة مرات (مع مدخلات متغيرة محتملة)؛ ويمكن استخدام tcov على البرنامج بعد كل تشغيل لمقارنة السلوك.
تحليل تغطية مجلة نيو ستايل
يتم تجميع الكود المصدري باستخدام الخيار -xprofile=tcov . على عكس الوضع الأصلي، لا يُنشئ tcov المُحسّن أي ملفات أثناء التجميع. [ 6 ] عند تشغيل النسخة المُجهزة المذكورة أعلاه، يتم إنشاء مجلد لتخزين بيانات الملف التعريفي، ويُنشأ ملف بيانات تغطية واحد يُسمى tcovd في ذلك المجلد. يحتوي tcovd على معلومات حول أرقام الأسطر وعدد مرات التنفيذ. وهو ملف نصي عادي. افتراضيًا، يُنشأ المجلد في موقع تشغيل البرنامج، ويُسمى باسم الملف التنفيذي ويُلحق به اللاحقة .profile . يُعرف المجلد أيضًا باسم " مخزن بيانات الملف التعريفي" . يمكن تغيير موقع مخزن بيانات الملف التعريفي عن طريق تعيين متغيرات البيئة SUN_PROFDATA_DIR أو SUN_PROFDATA . أخيرًا، يُشغّل أمر tcov لإنشاء ملفات المصدر المُعلّقة. صيغة أمر tcov هي نفسها صيغة الأمر الأصلي، باستثناء الخيار الإلزامي -x .
خيارات tcov -x profilebucket source-file-list
الفرق الوحيد في الأمر عن tcov الأصلي هو الإضافة الإلزامية لخيار -x dir للدلالة على tcov المحسن.
مثال
البرنامج التالي، المكتوب بلغة البرمجة C ، يقوم بالتكرار على الأعداد الصحيحة من 1 إلى 9 ويختبر قابليتها للقسمة باستخدام عامل باقي القسمة (%).
#include <stdio.h>int main ( void ) { int i ;for ( i = 1 ; i < 10 ; i ++ ) { if ( i % 3 == 0 ) printf ( "%d يقبل القسمة على 3 \n " , i ); if ( i % 11 == 0 ) printf ( "%d يقبل القسمة على 11 \n " , i ); }return 0 ; }لتمكين اختبار التغطية، يجب تجميع البرنامج باستخدام الخيارات التالية:
لتغطية التعليمات البرمجية بالطريقة القديمة ،
cc -xa cov.c
ولتغطية رموز الأنماط الجديدة ،
cc -xprofile=tcov -o cov cov.c
حيث يُمثل cov.c اسم ملف البرنامج. يُنشئ هذا ملفًا تنفيذيًا مُجهزًا يحتوي على تعليمات إضافية تُسجل عدد مرات تنفيذ كل سطر من البرنامج. يُستخدم الخيار -o لتعيين اسم الملف التنفيذي. يجب بعد ذلك تشغيل الملف التنفيذي لإنشاء بيانات التغطية. يختلف إنشاء هذا الملف وموقعه بين تحليل الكود القديم والجديد. في التحليل القديم ، يتم تحديث هذا الملف ذو الامتداد .d ، الذي يُنشأ بعد التجميع ، إما في دليل TCOVDIR أو الدليل الحالي، ببيانات التغطية. أما في التحليل الجديد ، فيتم إنشاء ملف بيانات التغطية، باسم tcovd ، في دليل <اسم الملف التنفيذي>.profile . يمكن تحليل هذه البيانات باستخدام الأمر tcov واسم ملف المصدر.
لتغطية التعليمات البرمجية بالطريقة القديمة ،
tcov cov.c
ولتغطية رموز الأنماط الجديدة ،
tcov -x cov.profile cov.c
الوسيط الإضافي في تحليل النمط الجديد هو "مجموعة الملفات الشخصية ". يُنتج الأمر tcov نسخةً مُعلّقة من ملف المصدر الأصلي ، بامتداد الملف '.tcov'، تحتوي على عدد مرات تنفيذ كل سطر.
#include <stdio.h>int main ( void ) { 1 int i ;10 for ( i = 1 ; i < 10 ; i ++ ) { 9 if ( i % 3 == 0 ) 3 printf ( "%d يقبل القسمة على 3 \n " , i ); 9 if ( i % 11 == 0 ) ###### printf ("%d يقبل القسمة على 11\n", i); 9 }1 return 0 ; 1 }تُضيف أداة tcov أيضًا ملخصًا في نهاية قائمة البرنامج المُعلّقة. تُعرض إحصائيات الكتل الأساسية الأكثر تنفيذًا مُرتبةً حسب تكرار التنفيذ. رقم السطر هو رقم السطر الأول في الكتلة.
خيارات سطر الأوامر
تدعم أداة سطر الأوامر Tcov الخيارات التالية أثناء إنشاء ملفات مشروحة من بيانات الملف الشخصي: [ 7 ]
- -a : يعرض عدد مرات تنفيذ كل عبارة. إذا لم يتم تحديد هذا الخيار، فسيتم عرض عدد مرات التنفيذ فقط لقائد كتلة التعليمات البرمجية .
- -n : عرض جدول بأرقام أسطر العبارات الأكثر تنفيذًا وعدد مرات تنفيذها.
- -o filename : توجيه الإخراج إلى اسم الملف بدلاً من file.tcov . يمكن استخدام هذا الخيار لتوجيه الإخراج إلى الإخراج القياسي عن طريق تحديد - .
- -x dir : هذا الخيار مدعوم في تحليل التغطية الجديد. في حال عدم تحديده، يُفترض استخدام تغطية tcov القديمة.
انظر أيضاً
- Sun Studio ، مجموعة المترجمات التي توفر Tcov
- رخصة التطوير والتوزيع المشتركة
- تغطية التعليمات البرمجية
- Gcov ، أداة تغطية التعليمات البرمجية المقدمة من GCC
مراجع
- ↑ "تحليل Tcov الأصلي لكل بيان على حدة" . تم الاطلاع عليه بتاريخ 6 فبراير 2012 .
- ↑ "تحليل محسّن لبيانات Tcov" . تم الاطلاع عليه بتاريخ 6 فبراير 2012 .
- ↑ "ميزات محسّنة لـ tcov مقارنةً بـ tcov الأصلي" . تم الاطلاع عليه بتاريخ 6 فبراير 2012 .
- ↑ oracle.com. "الخطوات المطلوبة لإنشاء شفرة مصدرية مشروحة" .
- ↑ www.sics.se. "صفحة دليل SunOS" .
- ↑ docs.oracle.com. "enhanced tcov" .
- ↑ developers.sun.com. "وثائق Tcov" . تم الاطلاع عليها في 7 فبراير 2012 .
- مقاييس البرمجيات
- أدوات اختبار البرمجيات
