في هذه المقالة ، سأخبرك عن PVS-Studio ، وهو محلل لرمز C و C ++ ، وأريك كيف يمكنك استخدامه في بيئة Visual C ++. هذا الدليل مصمم خصيصًا للمستخدمين المبتدئين.
تثبيت محلل
يدعم PVS-Studio Microsoft Visual Studio 2019 و 2017 و 2015 و 2013 و 2012 و 2010. راجع
الوثائق الخاصة بمتطلبات النظام. حاليًا ، يمكن لـ PVS-Studio تحليل المشروعات المكتوبة بلغات C و C ++ و C # و Java. ومع ذلك ، تركز هذه المقالة على المبرمجين الذين يعملون في Visual C ++ ويبحثون عن مساعدة للبدء في استخدام المحلل.
يمكن تثبيت حزمة التثبيت
هنا . بعد تشغيله ، سيُعرض عليك عدد من خيارات التكامل (الشكل 1) للاختيار من بينها. الخيارات غير متاحة باللون الرمادي.
الشكل 1. نافذة اختيار مكونات التكامل.بعد تثبيت PVS-Studio ، افتح نافذة حول Visual Studio وتأكد من وجود المحلل بين المنتجات المثبتة.
التحقق من المشروع
بمجرد اكتمال التثبيت ، يمكنك المتابعة للتحقق من المشروع. يمكنك أيضًا محاولة تحليل الحل بالكامل. للقيام بذلك ، انقر فوق ملحقات → PVS-Studio → تحقق → الحل (الشكل 2).
الشكل 2. التحقق من حل مع PVS-Studio.إذا واجهت أية صعوبات في تشغيل الفحص ، فراجع قسم "
PVS-Studio: استكشاف الأخطاء وإصلاحها " على موقعنا. هذه ليست بعض التلميحات الغبية مثل "تأكد من توصيل القابس بالمأخذ". يصف القسم المشكلات النموذجية التي أبلغ عنها مستخدمونا وطرق حلها.
معالجة قائمة التحذيرات
بمجرد اكتمال الفحص ، ستظهر الرسائل التشخيصية في نافذة خاصة. تحتوي هذه النافذة على الكثير من العناصر ، والتي تعمل جميعها على معالجة القائمة بحيث يمكنك فقط عرض تحذيرات الاهتمام. في البداية ، قد يبدو الأمر معقدًا إلى حد ما.
الشكل 3. نافذة التحذيرات. انقر على الصورة للتكبير.يمكن العثور على النظرة العامة الكاملة لعناصر النافذة في
الوثائق ، لكن الآن سنركز فقط على العناصر الأساسية:
- مستويات اليقين التحذيرات. توضح لقطة الشاشة أعلاه المستويات المتوسطة والعالية الممكّنة. المستوى المنخفض يتعامل بشكل أكبر مع "كود الروائح" والتحذيرات التي ، للأسف ، تميل إلى إنتاج الكثير من الإيجابيات الخاطئة. لماذا يوجد الكثير من التحذيرات ذات المستوى المنخفض والمتوسط ولكن هناك القليل من التحذيرات عالية المستوى؟ الإجابة هي أن تشخيصات MISRA قد تم تمكينها ، والتي تحتوي على قواعد مثل "يجب أن تحتوي الوظيفة على نقطة خروج واحدة فقط". بالطبع ، لا تحتاج عادةً إلى هذه التشخيصات ، لذلك يتم تعطيلها افتراضيًا. ملاحظة: " كيفية التحقق بسرعة من التحذيرات المهمة التي يقدمها محلل PVS-Studio لرمز C و C ++؟ ".
- المرشح. يمكنك تصفية الرسائل حسب الكود أو CWE أو النص أو المشروع أو الملف.
- رقم خط التشغيل. يمكن أن تشير بعض التشخيصات إلى عدد من الأسطر: تحتوي هذه التحذيرات على علامة القطع بجانب رقم السطر.
كبار المستشارين
PVS-Studio هي أداة لاختبار أمان التطبيق الثابت (SAST) ، مما يعني أنه يمكن اكتشاف نقاط الضعف المحتملة في شفرة المصدر وإظهار معرف الضعف المقابل وفقًا لتصنيف معين.
يدعم PVS-Studio تصنيفات الضعف التالية:
- CWE
- SEI CERT
- ميسرا
لتمكين رموز CWE ، افتح القائمة المنسدلة لإطار محلل ، ثم حدد إظهار الأعمدة> CWE
الشكل 4. تمكين رموز CWE من القائمة المنسدلة.هناك طريقة أخرى للقيام بذلك وهي الإضافات> PVS-Studio> عرض رموز CWE في نافذة الإخراج على شريط قوائم Visual Studio
الشكل 5. قائمة PVS-Studio الفرعية في قائمة الإضافات.على عكس ذلك ، يتم تمكين تشخيصات MISRA في نافذة الخيارات:
الشكل 6. قائمة نقاط الضعف القابلة للكشف.يمكنك معرفة المزيد عن هذه التصنيفات
هنا .
التحقق من المشاريع من سطر الأوامر
PVS-Studio_Cmd.exe أداة مساعدة للتحقق من مشاريع C ++ .vcxproj والحلول من سطر الأوامر. يمكن أن يكون مفيدًا إذا كنت تريد أتمتة عملية التحليل. يمكن العثور على البرنامج في دليل التثبيت ، والذي هو 'C: \ Program Files (x86) \ PVS-Studio' بشكل افتراضي.
تحتوي الأداة على العديد من
المعلمات ، لكنك ستحتاج إلى ثلاثة فقط للبدء:
- - الهدف: ملف المشروع أو الحل المراد التحقق منه.
- - الإخراج: ملف plog لتخزين تقرير التحليل إلى.
- - التقدم: تتبع تقدم التحليل.
هذا ما ستراه بعد بدء الفحص:
الشكل 7. إخراج الأداة المساعدة PVS-Studio_Cmd.exeبمجرد الانتهاء من التحقق ، سيتم إنشاء ملف plog يحتوي على تقرير التحليل في الدليل المحدد في معلمات البدء. يمكن تحويل هذا التقرير إلى تنسيقات أخرى باستخدام الأداة المساعدة PlogConverter.exe ، وإذا كنت ترغب في فتح التقرير في IDE ، فما عليك سوى النقر نقرًا مزدوجًا فوق ملف plog في مستكشف Windows.
يمكن أيضًا فتح ملف التقرير من قائمة الإضافات: الإضافات> PVS-Studio> فتح / حفظ> فتح تقرير التحليل ...
الشكل 8. فتح تقرير تحليل من قائمة البرنامج المساعد.راجع
الوثائق للحصول على تفاصيل حول الأداة المساعدة ومعلماتها.
قمع ايجابيات كاذبة
يوفر المحلل مجموعة متنوعة من الوسائل لقمع الإيجابيات الخاطئة. يتم وصفها بالتفصيل في الأقسام التالية:
- ضبط غرامة .
- قمع الكتلة ، وهو مفيد بشكل خاص عندما تريد قمع فقط تلك التحذيرات التي تشير إلى رمز جديد أو معدل.
نموذج تحذير
دعنا نلقي نظرة على مثال تحذير أصدره المحلل. مقتطف الشفرة التالي مأخوذ من مشروع ReactOS:
VOID NTAPI AtapiDmaInit(....) { .... ULONG treg = 0x54 + (dev < 3) ? (dev << 1) : 7; .... }
الرسالة التشخيصية لـ PVS-Studio: V502 ربما يعمل المشغل '؟: بطريقة مختلفة عما كان متوقعًا. لدى المشغل "؟:" أولوية أقل من المشغل "+". uniata id_dma.cpp 1610
سيتم دائمًا تقييم التعبير
0x54 + (dev <3) إلى
صواب : يتم إضافة الثابت غير الفارغ
0x54 أولاً إلى نتيجة التعبير
(dev <3) ، والذي يمكن تقييمه إما إلى 0 أو 1 ، وعندها فقط القيمة الناتجة مقارنة مع صفر.
هذا هو ما يبدو الإصدار الصحيح:
VOID NTAPI AtapiDmaInit(....) { .... ULONG treg = 0x54 + ((dev < 3) ? (dev << 1) : 7); .... }
لقد حللنا المشكلة من خلال تضمين العملية
"؟:" بين قوسين بحيث تعتمد نتيجتها الآن على نتيجة التعبير
(dev <3) .
استنتاج
كانت تلك مقدمة مختصرة لبدء استخدام PVS-Studio لـ Visual C ++. لا يغطي كل الجوانب ، بالطبع ، مرحبًا بك في
مدونتنا ، حيث نوضح بالتفصيل كيفية العمل مع المحلل ، ونرى
الوثائق للحصول على وصف كامل لرسائل التشخيص وإعدادات الأداة.