سؤال

نستخدم حاليًا gcov مع مجموعة الاختبار الخاصة بنا لتطبيق Linux C++، وهي تقوم بعمل جيد في قياس تغطية الخط.

هل يمكن لـ gcov إنتاج تقرير تغطية الوظيفة/الطريقة بالإضافة إلى تغطية الخط؟

بالنظر إلى المعلمات التي يقبلها gcov، لا أعتقد أن ذلك ممكنًا، ولكن ربما أفتقد شيئًا ما.أو، ربما، هل هناك أي أداة أخرى يمكنها إنتاج تقرير تغطية الوظيفة/الطريقة من خلال الإحصائيات التي تم إنشاؤها بواسطة دول مجلس التعاون الخليجي؟

تحديث: أعني بتغطية الوظيفة/الطريقة النسبة المئوية للوظائف التي يتم تنفيذها أثناء الاختبارات.

هل كانت مفيدة؟

المحلول

أعتقد أن ما تقصده هو الخيار -f، والذي سيعطيك النسبة المئوية للأسطر المغطاة لكل وظيفة.هناك مقال مثير للاهتمام حول gcov على دكتور.دوب والتي قد تكون مفيدة.إذا لم يُظهر "man gcov" العلامة -f، فتحقق مما إذا كان لديك إصدار حديث إلى حد ما من مجموعة gcc.

يحرر: للحصول على النسبة المئوية للوظائف التي لم يتم تنفيذها، يمكنك ببساطة التحليل من خلال مخرجات تغطية الوظيفة، حيث يجب أن تكون التغطية بنسبة 0.00% مكافئة إلى حد كبير لعدم الاتصال.يطبع هذا البرنامج النصي الصغير النسبة المئوية للوظائف التي لم يتم تنفيذها:

#!/bin/bash

if test -z "$1"
then
    echo "First argument must be function coverage file"
else
    notExecuted=`cat $1 | grep "^0.00%" | wc -l`
    executed=`cat $1 | grep -v "^0.00%" | wc -l`

    percentage=$(echo "scale=2; $notExecuted / ($notExecuted + $executed) * 100" |bc)

    echo $percentage
fi

نصائح أخرى

لقد بدأنا في استخدام gcov و lcov معاً.تتضمن نتائج lcov النسبة المئوية للوظائف التي يتم تنفيذها لـ "الوحدة النمطية" التي تنظر إليها.

يحرر: ال وحدة يمكن الانتقال من الدلائل إلى الملفات.

أريد أيضًا أن أضيف أنه إذا كنت تستخدم بالفعل أدوات مترجم GNU، فلن يكون تشغيل gcov/lcov صعبًا للغاية وستكون النتائج التي تنتجها مثيرة للإعجاب للغاية.

الأداة المساعدة lcov رائعة ونحن نستخدمها.لكنني لست متأكدًا مما إذا كنت في حاجة إليها لما تريد.

نحن

  1. استخدم العلامات (ويكيبيديا; sourceforge) للعثور على جميع الوظائف المعلنة في ملفات الرأس ذات الصلة.

  2. قم بتشغيل GCOV للحصول على تغطية الخط لكل وظيفة في الملف الثنائي.

  3. قارن قائمة الوظائف من 1 و2 لإنتاج "الوظائف المطلوبة"/"الوظائف المتاحة".

نحن نسميها "تغطية واجهة برمجة التطبيقات" نظرًا لأننا نطبق الخطوة رقم 1 على رؤوس واجهة برمجة التطبيقات العامة فقط.ولكن يمكنك القيام بذلك على جميع الرؤوس أو على مجموعة فرعية فقط حسب اختيارك.أعتقد أن النسبة التي ننتجها بهذه الطريقة هي النسبة التي تبحث عنها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top