الشروع في العمل مع محلل ثابت PVS-Studio لتطوير C ++ تحت Linux

يدعم PVS-Studio تحليل المشروعات التي تم تطويرها في C و C ++ و C # و Java. يمكنك استخدام أداة التحليل ضمن Windows و Linux و macOS. ستخبرك هذه المقالة الصغيرة بأساسيات تحليل كود C و C ++ في بيئة Linux.

تركيب


هناك طرق مختلفة لتثبيت PVS-Studio في نظام Linux ، اعتمادًا على نوع التوزيع. الطريقة الأكثر ملاءمة والمفضلة هي استخدام المستودع ، لأنه يسمح بالتحديث التلقائي للمحلل عند إصدار إصدارات جديدة. خيار آخر هو استخدام حزمة التثبيت ، والتي يمكنك الحصول عليها هنا .

تختلف أوامر التثبيت اعتمادًا على توزيعة Linux التي تستخدمها. على سبيل المثال ، هكذا يبدو التثبيت من المستودع ضمن الأنظمة المستندة إلى دبيان:

wget -q -O - https://files.viva64.com/etc/pubkey.txt | sudo apt-key add - sudo wget -O /etc/apt/sources.list.d/viva64.list \ https://files.viva64.com/etc/viva64.list sudo apt update sudo apt install pvs-studio 

لتثبيت PVS-Studio من الحزمة القابلة للتنزيل ، يمكنك استخدام الأداة المساعدة gdebi :

 sudo gdebi pvs-studio-VERSION.deb 

تم وصف عملية التثبيت بمزيد من التفصيل في قسم وثائق " تثبيت وتحديث PVS-Studio على نظام Linux ". يمكنك أيضًا العثور على معلومات حول أنظمة غير دبيان هناك.

بمجرد تثبيت PVS-Studio ، ستحتاج إلى إدخال بيانات الترخيص. إليك الأمر لذلك:

 pvs-studio-analyzer credentials NAME KEY [-o LIC-FILE] 

NAME و KEY هما اسم المستخدم المسجل ومفتاح الترخيص على التوالي. تتيح لك المعلمة الاختيارية –o تحديد الموقع ، حيث سيتم إنشاء ملف الترخيص. بشكل افتراضي ، سيتم تخزينه في الدليل ~ / .config / PVS-Studio / .

إذا كنت بحاجة إلى مفتاح تجريبي ، يمكنك الحصول عليه في صفحة " تنزيل وتقييم PVS-Studio ".

التحقق من المشروع الخاص بك


بمجرد الحصول على تثبيت محلل ، يمكنك البدء في التحقق من المشاريع. هناك طريقتان رئيسيتان للقيام بذلك:

  1. رصد تجميع.
  2. يعمل من بناء النظم مباشرة.

دعنا نتحدث عن الطريقة الأولى. لإطلاق المراقبة في نظام Linux ، فأنت بحاجة إلى الأداة المساعدة. يستخدمه PVS-Studio لجمع قائمة ومعلمات العمليات التي تم إطلاقها أثناء الإنشاء.

استخدم الأمر أدناه لبدء الإنشاء:

 pvs-studio-analyzer trace -- make 

هنا ، يتم استخدام make ، ولكن أي أمر آخر تقوم بتشغيله لبناء مشروعك يمكن أن يكون في مكانه. إذا لزم الأمر ، يمكنك تمرير معلمات سطر الأوامر إليها بالطريقة المعتادة.

بعد الإنشاء ، سينشئ strace ملفًا ، والذي سيستخدمه المحلل للتحقق من شفرة المصدر. لبدء التحليل ، استخدم الأمر أدناه.

 pvs-studio-analyzer analyze -o /path/to/project.log 

نتيجة لذلك ، سيتم إنشاء ملف سجل مشفر ، يمكنك تحويله إلى أحد التنسيقات المدعومة. سنتحدث عن العمل مع التقارير في وقت لاحق.

إلى جانب الضيق ، يمكنك أن تبني التحليل على ملف compile_commands.json (قاعدة بيانات تجميع JSON). تحتوي العديد من أنظمة الإنشاء على وسائل مضمّنة لتصدير أوامر الترجمة ، أو يمكنك استخدام الأداة المساعدة BEAR للقيام بذلك. إليك الأمر لبدء التحليل في هذه الحالة:

 pvs-studio-analyzer analyze –f /path/to/compile_commands.json 

لاحظ أن المحلل يتعرف على المحول البرمجي ، المستخدم في عملية الإنشاء ، باسمه القابل للتنفيذ. إذا ظهرت رسالة الخطأ "لم يتم العثور على وحدات ترجمة" أثناء محاولة تحليل مشروعك ، فجرب تحديد اسم المترجم الخاص بك بشكل صريح عبر مفتاح سطر الأوامر –compiler أو –c :

 pvs-studio-analyzer analyze -c MyCompiler 

قد تحتاج إلى ذلك إذا كنت تستخدم التصنيف المتقاطع أو إذا كان المترجم الخاص بك له اسم قابل للتنفيذ غير قياسي.

إلى جانب وضع المراقبة ، يمكنك دمج محلل مباشرة في نظام البناء الخاص بك أو IDE. يوفر مستودع GitHub الرسمي لدينا أمثلة على المشروعات التي تم تكوين التكامل فيها بالفعل:


لمعرفة المزيد حول تشغيل المحلل ضمن Linux ، راجع الوثائق .

العمل مع التقارير


بعد التحقق من المشروع ، يقوم المحلل بإنشاء تقرير مشفر. لتحويلها إلى أحد التنسيقات المدعومة ، تحتاج إلى استخدام الأداة المساعدة plog-Converter ، التي تأتي مع تثبيت PVS-Studio.

فيما يلي قائمة بالتنسيقات المدعومة:

  • xml-a تنسيق مناسب لمزيد من المعالجة لنتائج التحليل ، وهو مدعوم بواسطة البرنامج المساعد لـ SonarQube ؛
  • csv - ملف مخازن البيانات الجدولية (الأرقام والنص) في نص عادي ؛
  • errorfile هو تنسيق الإخراج من مجلس التعاون الخليجي وكلانج.
  • قائمة المهام - تنسيق خطأ يمكن فتحه في QtCreator ؛
  • أتش تي أم أل - تقرير أتش تي أم أل مع وصف قصير لنتائج التحليل ؛
  • fullhtml - تقرير مع فرز نتائج التحليل وفقًا لمعايير مختلفة والتنقل على طول شفرة المصدر.

تنسيق fullhtml هو الأنسب لعرض التقرير ، لأنه يسمح بالانتقال إلى سطر الشفرة ، المقابلة للتحذير الذي تهتم به. يسمح لك الأمر التالي بتحويل التقرير إلى هذا التنسيق:

 plog-converter -a GA:1,2 -t fullhtml /path/project.log -o /path/report_dir 

عند تشغيله ، سيحتوي الدليل الذي تم إنشاؤه حديثًا باسم / path / report_dir على جميع ملفات التقرير.

انتبه إلى المعلمة -a . يسمح لك بتحديد أي التحذيرات يجب أن تظهر في التقرير الناتج. أنها مريحة إذا كنت بحاجة إلى تصفية إخراج المحلل. سيقوم الأمر أعلاه بإنشاء تقرير ، والذي سيحتوي فقط على رسائل تحليل عامة لمستويات اليقين الأولى والثانية ( عالية ومتوسطة ).

مثال تقرير:

صورة 9


من خلال النقر داخل خلية الموقع في إحدى الرسائل ، يمكنك الانتقال إلى سطر الشفرة المقابل:

الصورة 8


بالنقر فوق الرمز التشخيصي في عمود الرمز ، يمكنك فتح الوثائق الخاصة بهذا التشخيص.

قمع تحذيرات المحلل


عند استخدام أي محلل ثابت للتحقق من شفرة المصدر ، قد تحصل على إيجابيات كاذبة ، أو ببساطة تحذيرات من الضوضاء غير المرغوب فيها. PVS-Studio لديه وسائل لقمع مثل هذه الرسائل. لاستهداف التحذيرات الفردية ، يمكنك استخدام إحدى الطرق الموضحة في مقالة الوثائق " قمع الإنذارات الكاذبة ".

أيضًا ، عند التحقق من الشفرة القديمة ، قد ترغب في منع كل التحذيرات. كقاعدة عامة ، قد تحتاج إلى ذلك إذا كنت تريد فقط التحقق من التعليمات البرمجية الجديدة التي تضيفها إلى قاعدة بيانات موجودة. للقيام بذلك ، استخدم المعلمة suppress للأداة المساعدة pvs-studio-analys .

يمكنك كبح جماح التحذيرات في تقرير باستخدام هذا الأمر:

 pvs-studio-analyzer suppress /path/to/report.log 

يتم تخزين المعلومات المتعلقة بالتحذيرات المكبوتة في ملف باسم suppress_base.json ، والذي يقع بجوار المشروع. يتم استبعاد هذه الرسائل من التقارير المتعلقة بالتحققات اللاحقة.

يتم وصف هذه الآلية بالتفصيل هنا .

استنتاج


كانت هذه مقدمة موجزة لاستخدام PVS-Studio في نظام Linux. آمل أن تكون مفيدة وتمكنت من الإجابة على الأسئلة الأكثر شيوعا. إذا كنت بحاجة إلى مزيد من المعلومات حول موضوع هذه المقالة ، فراجع الوثائق هنا .

Source: https://habr.com/ru/post/ar462659/


All Articles