PVS-Studio 7.00

PVS-Studio C # \ Java \ C ++ اليوم هو يوم مهم - بعد 28 إصدارًا من الإصدار السادس ، نقدم PVS-Studio 7.00 ، والذي يكون فيه الابتكار الرئيسي هو دعم لغة Java. ومع ذلك ، خلال عام 2018 ، استحوذنا على العديد من التغييرات المهمة الأخرى المتعلقة بـ C ++ و C # والبنية التحتية ودعم معايير الترميز. لذلك ، نلفت انتباهك إلى ملاحظة تلخص التغييرات الرئيسية التي حدثت في PVS-Studio للمرة الأخيرة.

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

مجموعة واسعة من الأخطاء الموجودة في التعليمات البرمجية أثناء عمليات التحقق من مختلف المشاريع مفتوحة المصدر توضح بوضوح قدرات المحلل.

سنبدأ بتغيير بسبب قررنا تغيير رقم الإصدار من 6.x إلى 7.x. هذا هو محلل دعم لغة جافا ، والتي تتطلب وقتا طويلا من التحضير .

جافا


الشيء الأكثر أهمية في محلل Java هو أنه ظهر :). نود دعوة مطوري Java لتنزيل الأداة والتحقق من المشروعات التي تعمل عليها حاليًا.

لقد أتاحنا أكثر الطرق شيوعًا لتكامل المحلل في نظام الإنشاء للمستخدمين:

  • البرنامج المساعد ل Maven.
  • البرنامج المساعد ل Gradle.
  • البرنامج المساعد ل IntelliJ IDEA.

في حالة استخدام أنظمة الإنشاء المكتوبة ذاتيا ، لدينا القدرة على تشغيل المحلل مباشرةً ، مع سرد المصادر و classpath .

يمكنك العثور على معلومات مفصلة حول جميع طرق كيفية تشغيل المحلل في صفحة الوثائق " كيفية تشغيل PVS-Studio Java ".

لم نتمكن من الابتعاد عن منصة SonarQube الخاصة بمراقبة جودة الكود ، والتي تحظى بشعبية كبيرة بين مطوري Java ، لذلك أضفنا دعمًا بلغة Java في المكون الإضافي لبرنامج SonarQube .

C ، C ++


في عام 2018 ، كان فريقنا يعمل بنشاط على تطوير محلل C ++. ظهرت العديد من التشخيصات الجديدة جنبًا إلى جنب مع الخوارزميات ، والتي تسمح بجمع ومعالجة البيانات المستخرجة من شجرة بناء الجملة.

CWE ، CERT

تم تصنيف تحذيرات محلل C ++ (و C #) وفقًا لتعداد الضعف الشائع ( CWE ). CWE هو نظام لتصنيف الثغرات المحتملة والمؤكد. يتم دعمه من قِبل المجتمع بهدف تحديد مشاكل البرامج وإنشاء أدوات آلية يمكن استخدامها لتحديد هذه المشكلات وحلها.

بالإضافة إلى ذلك ، تم تصنيف الرسائل وفقًا لمعيار CERT C الترميز ومعيار CERT C ++ القياسي. معايير ترميز SEI CERT هي مجموعة من المعايير لكتابة البرامج في C و C ++ و Java و Perl ، تم تطويرها بواسطة CERT (مركز تنسيق CERT ، CERT / CC) لتحسين موثوقية البرنامج وأمانه.

يسمح تصنيف تشخيصات C و C ++ وفقًا لهذه التحذيرات باستخدام PVS-Studio كحل SAST .

ميسرا

في عام 2018 ، أصبح محلل الكود الثابت PVS-Studio قادرًا على تصنيف تحذيراته وفقًا لمعايير MISRA C و MISRA C ++. بسبب دعم هذه المعايير ، أصبح من الممكن استخدام المحلل بفعالية لزيادة مستوى الأمان وإمكانية نقل وموثوقية البرامج للأنظمة المدمجة.

اقرأ المزيد: " PVS-Studio: دعم معايير الترميز MISRA C و MISRA C ++ ."

أصبح دعم MISRA ذا صلة فيما يتعلق بتطوير دعم النظم المضمنة المتنوعة ، والتي ستتم مناقشتها في القسم التالي من هذه المقالة.

التنمية جزءا لا يتجزأ

في عام 2018 ، تم دعم برامج التحويل البرمجي المدمجة التالية في PVS-Studio:

  • نوافذ IAR Embb Workbench، C / C ++ Compiler for ARM C، C ++
  • ويندوز / لينكس Keil µVision ، DS-MDK ، ARM Compiler 5/6 C، C ++
  • ويندوز / لينكس Texas Instruments Code Composer Studio، ARM Code Generation Tools C، C ++
  • ويندوز / لينكس / ماك. GNU Arm Embedded Toolchain ، مترجم Arm Embedded GCC ، C ، C ++

ملاحظتان حول موضوع دعم الأنظمة المدمجة:

  1. ثابت محلل رمز PVS- ستوديو 6.22 الآن يدعم مترجمين أرمينيا (كيل ، IAR) .
  2. يدعم برنامج PVS-Studio الآن مجموعة أدوات GNU Arm المضمنة .

تمديد التعليقات التوضيحية المخصصة

في بعض الأحيان ، يتم استخدام مثل هذه التطبيقات المخصصة لمختلف وظائف النظام ، على سبيل المثال ، memcpy ، malloc وما إلى ذلك في المشروعات. يمكن للمحلل اكتشاف الأخطاء في التعليمات البرمجية التي تستخدم وظائف قياسية على ما يرام ، ولكن في كود مخصص ، كان من المستحيل تطبيق هذه الخوارزميات حتى وقت قريب. الآن باستخدام التعليق التوضيحي V_FUNC_ALIAS ، يمكنك إدخال أسماء وظائفك بما يتوافق مع وظائف النظام.

تنسيق التعليق:

//V_FUNC_ALIAS, implementation:sysf, function:f, namespace:ns, class:c 

  • مفتاح التنفيذ - يحدد اسم الوظيفة القياسية لتحديد الاسم المستعار.
  • مفتاح الوظيفة - يحدد اسم الاسم المستعار. يجب أن يتطابق توقيع الوظيفة ، الذي تم تحديد اسمه في هذا المفتاح ، مع توقيع الوظيفة ، المحدد في مفتاح التنفيذ.
  • مفتاح الفصل هو اسم الفصل. قد تكون في عداد المفقودين.
  • مفتاح مساحة الاسم هو اسم مساحة الاسم. قد تكون في عداد المفقودين.

لنلقِ نظرة على مثال:

 //V_FUNC_ALIAS, implementation:memcpy, function:MyMemCpy 

الآن سيقوم المحلل بمعالجة استدعاءات دالة MyMemCpy بنفس طريقة استدعاءات memcpy . على سبيل المثال ، سيصدر تحذير V512 لمثل هذا الرمز:

 int buf[] = { 1, 2, 3, 4 }; int out[2]; MyMemCpy (out, buf, 4 * sizeof(int)); // Warning! 

C #


هذا العام لم تكن هناك تغييرات كبيرة في محلل C #. كانت هناك بعض التحسينات في التشخيص وإصلاح الأخطاء. تم تصنيف تحذيرات محلل C # ، وكذلك تحذيرات محلل C ++ وفقًا لتعداد الضعف العام ( CWE ). يتم هنا تعيين خرائط لتشخيصات C # مع معرّفات CWE (انظر التشخيصات بالأرقام 3xxx).

نحن نخطط للعودة إلى تطوير أكثر نشاطًا لمحلل C # في عام 2019. نخطط أيضًا لتطوير تشخيصات جديدة وتحسين آلية تحليل تدفق البيانات.

تقرير المحولات


يتم تضمين الأدوات المساعدة PlogConverter.exe ومحول plog في توزيعات PVS-Studio لنظامي التشغيل Windows و Linux / macOS ، على التوالي. بالإضافة إلى ذلك ، يتوفر كود المصدر لهذه الأدوات المساعدة على جيثب .

مع ظهور PVS-Studio for Java ، قمنا بإعادة تصميم الكود الذي يميز C و C ++ و C # وقمنا بإضافة Java بتنسيق FullHtml ( لمتصفح الويب ).

بالإضافة إلى ذلك ، تمت إضافة عمود MISRA للتقرير بهذا التنسيق.

تقرير المحولات


بالإضافة إلى معرف CWE ، يعد عمود MISRA اختياريًا ويتم تمكينه بواسطة مراجعي أمان التعليمات البرمجية عند التحقق من نتائج التحليل.

الإضافات SonarQube


1. التحديث الكامل

لقد أعدنا كتابة المكونات الإضافية باستخدام واجهة برمجة التطبيقات الجديدة. هذا سمح لنا بإضافة ميزات جديدة وتوفير التوافق مع SonarQube 7 x. الحد الأدنى للإصدار المدعوم هو SonarQube 6.7 LTS .

2. PVS- ستوديو لجافا

يتضمن الإصدار الجديد دعم التشخيصات في لغة Java. يمكنك الآن إضافة PVS-Studio إلى أدوات مراقبة الجودة الأخرى لمشروع Java الخاص بك.

3. MISRA قياسي

لقد أعلنا مؤخرًا عن دعم معايير MISRA C و MISRA C ++. الإضافات الجديدة تشمل أيضا دعمهم. على سبيل المثال ، تمت إضافة المعلمة التالية (بالإضافة إلى CWE):

 sonar.pvs-studio.misra=active 

الذي يتضمن إضافة معرف MISRA لتحذيرات محلل:

PVS-Studio ، ميسرة


بغض النظر عن هذه المعلمة ، سيكون البحث بالعلامات misra و pvs -studio # misra متاحًا في نتائج التحليل. تمت إضافة معلومات حول عدد تحذيرات MISRA التي تم العثور عليها في المقاييس أيضًا ، والتي ستتم مناقشتها بعد ذلك.

4. مقاييس جديدة

في قائمة المشروعات -> مشروعك -> التدابير ، تتوفر مقاييس رمز مختلفة ، من بينها هناك الآن معلومات مختلفة من PVS-Studio:

Sonarquube


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

4. التحولات متعددة الخطوط

تصدر بعض تشخيصات المحلل تحذيرات لعدة أسطر من التعليمات البرمجية. في بعض الأحيان تكون متباعدة للغاية. في الإصدار الجديد ، أضفنا انتقالات متعددة الأسطر:

Sonarquube


SonarQube يدعم أيضا التحولات بين الملفات المختلفة. سنقوم لاحقًا بإضافة مثل هذه التحولات للتشخيص ، حيث يوجد تحليل متعدد الوسائط.

6. الوثائق

شهدت الوثائق تغييرات كبيرة. يعد PVS-Studio منتجًا متعدد اللغات ومتعدد اللغات ، وبالتالي فقد ركزت جميع المعالجات على كتابة تعليمات أكثر شيوعًا وسهولة الفهم للعمل على أنظمة مختلفة.

SAST


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

PVS-Studio هي أداة اختبار أمان تطبيق ثابت (SAST). بمعنى آخر ، لا يكتشف محلل PVS-Studio الأخطاء المطبعية والرموز الميتة وغيرها من الأخطاء فحسب ، بل يكتشف أيضًا نقاط الضعف المحتملة.

لراحة المتخصصين الذين سيستخدمون PVS-Studio كأداة SAST ، يمكن للمحلل إنشاء تحذيرات بالتنسيقات التالية: التعداد العام للضعف ، معايير ترميز SEI CERT . تعيين جداول تشخيصات PVS-Studio وفقًا لمعايير مختلفة:

  1. تعيين CWE
  2. رسم خرائط سيرت SEI

تم وصف هذا الموضوع بمزيد من التفصيل في المقالة " PVS-Studio كحل SAST ".

نقترح أيضًا عرض هذه المنشورات:

  1. كيف يمكن لـ PVS-Studio المساعدة في الكشف عن نقاط الضعف؟
  2. أطلق النار على القدم عند التعامل مع بيانات الإدخال .
  3. تسليم تراخيص محلل PVS-Studio إلى خبراء الأمن .

PVS- ستوديو مجاني


عشية عام 2019 الجديد ، قرر فريق PVS-Studio تقديم هدية رائعة لجميع المساهمين في المشاريع مفتوحة المصدر المستضافة على GitHub أو Bitbucket. يتم منحهم الاستخدام المجاني لمحلل ثابت PVS-Studio لتطوير مشاريع مفتوحة المصدر.

التفاصيل: " PVS-Studio مجاني لأولئك الذين يطورون مشاريع مفتوحة المصدر ".

ماك


في عام 2018 ، بدأ PVS-Studio العمل تحت نظام macOS. قرر فريقنا إجراء فحص XNU Kernel ليتزامن مع هذا الحدث: " PVS-Studio متوفر الآن على نظام macOS: 64 نقطة ضعف في XNU Kernel من Apple ".

XNU هي نواة لأنظمة تشغيل الكمبيوتر التي طورتها شركة آبل وتستخدم في أنظمة التشغيل OS X (ماك ، آي أو إس ، تي أو أو إس ، آي أو إس أو إس).

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


All Articles