هل يكتشف Klocwork لم يسمى الوظائف أبدًا؟
سؤال
الكود الخاص بي هو مزيج من القطع والقطع المختلفة من الكود الأقدم.
أرغب في محو جميع الوظائف أبدًا من أجل الحفاظ على الكود بسيطًا.
هل Klocwork هو الأداة؟ كيف فعلتها؟
شكرًا،
موشيه.
المحلول
يمكنك استخدام -p
أو -pg
خيارات ل gcc
لإضفاء إضافة رمز إلى المقدمة والخاتمة لكل وظيفة بحيث تتم كتابة قاعدة بيانات ملف تعريف عند تنفيذ البرنامج. الأداة prof
يستخدم لتحليل الإخراج من -p
و gprof
ل -pg
. تنتج هذه الأدوات تقارير توضح الوظائف التي تم استخدامها ، وعدد المكالمات ، وعدد الوقت الذي قضيته في كل منهما. سوف تكون الوظائف غير المستخدمة مفقودة من قاعدة بيانات الملف الشخصي.
يمكنك أيضا استخدام gcov
للحصول على تقرير عن خطوط الكود التي تم تنفيذها بالفعل. سيتم تنفيذ الوظائف التي لم تسمى أبداً 0 مرات ....
نصائح أخرى
سوف يجد Klocwork وظيفة/طرق غير مستخدمة. هناك حزمة مدقق خاصة يمكنك تنزيلها على my.klocwork.com (إذا كان لديك حساب) من شأنه أن يمنحك هذه الفحصات الخاصة.
أنا لست على دراية بـ Klocwork ، لكن gcc
لديه خيار التحذير -Wunused-function
التي تكتشف معظم الوظائف غير المصالحة. -Wunused-function
هو جزء من -Wall
.
Klockwork لا يكتشف الوظائف غير المصالحة. تستخدم لتحليل ثابت فقط.
يمكنك التحقق من ذلك مثل هذا:
foo()
{
char *a;
a = malloc(100);
}
bar()
{
char a[100];
}
main()
{
bar();
}
من المحتمل أن هذا من شأنه أن يبلغ عن تسرب في وظيفة foo التي لا مبرر لها بالفعل. ومع ذلك ، كما اقترح Schot ، يمكنك النظر في خيارات البرمجيات.