
اليوم هو يوم مهم - بعد 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 هو أنه ظهر :). نحن ندعو مطوري جافا إلى تنزيل الأداة والتحقق من المشروعات التي يعملون عليها.
لقد أتاحنا للمستخدمين أكثر الطرق شيوعًا لدمج المحلل في نظام التجميع:
- البرنامج المساعد ل Maven.
- البرنامج المساعد ل Gradle.
- البرنامج المساعد ل IntelliJ IDEA.
في حالة استخدام أنظمة التجميع المكتوبة ذاتيا ، من الممكن تشغيل المحلل مباشرة من خلال سرد المصادر و
classpath .
يمكنك العثور على معلومات مفصلة حول جميع طرق بدء تشغيل المحلل في صفحة الوثائق "
كيفية بدء تشغيل PVS-Studio Java ".
لم نتمكن من تجاهل نظام التحكم في جودة كود SonarQube ، وهو أمر شائع بين مطوري Java ، لذلك أضفنا دعم لغة Java إلى
المكون الإضافي SonarQube .
C ، C ++
في عام 2018 ، عمل فريقنا بنشاط على تطوير محلل C ++. لقد ظهرت العديد من التشخيصات الجديدة ، فضلاً عن
الخوارزميات المحسنة التي تتيح لك جمع ومعالجة المعلومات التي تم استردادها من شجرة بناء الجملة.
CWE ، CERTتم تصنيف الرسائل من المحلل اللغوي C ++ (وكذلك المحلل اللغوي C #) وفقًا لتعداد الضعف العام (
CWE ). CWE هو نظام تصنيف لثغرات أمنية محتملة ومؤكدة. يتم دعمه من قبل المجتمع لتحديد مشكلات البرامج وإنشاء أدوات آلية يمكن استخدامها لتحديد هذه المشكلات وحلها.
بالإضافة إلى ذلك ، تم تصنيف الرسائل وفقًا لمعيار CERT C Coding و 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 ++
ملاحظتان على دعم الأنظمة المدمجة:
- يتم تكييف PVS-Studio 6.22 محلل الكود الثابت لمجمعي ARM (Keil ، IAR) .
- قدم PVS-Studio دعمًا لسلسلة أدوات GNU Arm Embedded Toolchain .
ملحق شرح مخصصفي بعض الأحيان تستخدم المشروعات تطبيقاتها الخاصة لمختلف وظائف النظام ، على سبيل المثال ،
memcpy ،
malloc ، إلخ. يعتبر المحلل جيدًا في البحث عن الأخطاء باستخدام الوظائف القياسية ، لكن كان من المستحيل استخدام هذه الخوارزميات في كود المستخدم حتى وقت قريب. الآن ، باستخدام التعليق التوضيحي
V_FUNC_ALIAS ، يمكنك مطابقة أسماء
وظائفك مع وظائف النظام.
تنسيق التعليق:
- مفتاح التنفيذ - يعين اسم الوظيفة القياسية التي يتم تعريف الاسم المستعار لها.
- مفتاح الوظيفة - لتعيين اسم الاسم المستعار. يجب أن يتطابق توقيع الوظيفة التي تم تحديد اسمها في هذا المفتاح مع توقيع الوظيفة المحددة في مفتاح التنفيذ.
- الفئة الرئيسية هي اسم الفصل. قد تكون غائبة.
- مفتاح مساحة الاسم هو اسم مساحة الاسم. قد تكون غائبة.
النظر في مثال:
الآن سيقوم المحلل بمعالجة المكالمات إلى وظيفة
MyMemCpy بنفس طريقة استدعاءات
memcpy . على سبيل المثال ، سيتم إصدار تحذير V512 لمثل هذا الرمز:
int buf[] = { 1, 2, 3, 4 }; int out[2]; MyMemCpy (out, buf, 4 * sizeof(int));
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 لتحذيرات محلل:
بغض النظر عن هذه المعلمة ، سيكون البحث متاحًا
لعلامات misra و
pvs -studio # في نتائج التحليل. تمت إضافة معلومات حول عدد تنبيهات MISRA التي تم العثور عليها أيضًا إلى المقاييس ، والتي ستتم مناقشتها لاحقًا.
4. مقاييس جديدةفي القائمة
مشاريع -> مشروعك -> تدابير تتوفر مقاييس الرموز المختلفة ، ومن بينها هناك الآن معلومات مختلفة من PVS-Studio:
لكل مقاييس ، يمكنك إنشاء رسوم بيانية ومراقبة ديناميكيات ظهور مجموعات التحذير المختلفة للمحلل.
4. التحولات متعددة الخطوطتصدر بعض تشخيصات المحلل تحذيرات على عدة أسطر من الملف. في بعض الأحيان تكون متباعدة للغاية. في الإصدار الجديد ، أضفنا انتقالات متعددة الأسطر:
SonarQube يدعم أيضا التحولات بين الملفات المختلفة. سنقوم لاحقًا بإضافة مثل هذه التحولات للتشخيص ، حيث يوجد تحليل متعدد الوسائط.
6. الوثائقشهدت الوثائق تغييرات كبيرة. PVS-Studio هو منتج متعدد اللغات ومتعدد اللغات ، لذا كانت جميع المعالجات تهدف إلى كتابة تعليمات أكثر عمومية ومفهومة للعمل على نظام معين.
SAST
حتى وقت قريب ، في مقالاتنا ، وضعنا PVS-Studio كأداة لاكتشاف الأخطاء في التعليمات البرمجية. في الوقت نفسه ، لم نعتبر PVS-Studio تقريبًا في سياق الأمان. قمنا هذا العام بتصحيح هذا الموقف ونظرنا إلى الأداة من وجهة نظر اختبار أمان التطبيق وممارسات DevSecOps.
PVS-Studio هي أداة لاختبار أمان التطبيق الثابت (اختبار أمان التطبيق الثابت ، SAST). بمعنى آخر ، لا يكتشف محلل PVS-Studio الأخطاء المطبعية والرموز الميتة وغيرها من الأخطاء فحسب ، بل يكتشف أيضًا نقاط الضعف المحتملة.
لراحة المتخصصين الذين سيستخدمون PVS-Studio كأداة SAST ، يعرض المحلل تحذيراته على
معايير تعداد الضعف الشائعة ومعايير ترميز SEI CERT . جداول الامتثال لتشخيصات PVS-Studio وفقًا لمعايير مختلفة:
- CWE الامتثال
- الامتثال SEI CERT
تم وصف هذا الموضوع بمزيد من التفصيل في مقالة "
PVS-Studio كحل SAST ".
نعرض أيضًا التعرف على المنشورات:
- كيف يمكن لـ PVS-Studio المساعدة في البحث عن الثغرات الأمنية؟
- نحن اطلاق النار في القدم ، ومعالجة بيانات الإدخال .
- نحن نوفر محلل PVS-Studio لخبراء الأمن .
PVS- ستوديو مجاني
عشية الاحتفال بالعام 2019 الجديد ، قرر فريق PVS-Studio تقديم هدية ممتعة لجميع المساهمين في المشاريع مفتوحة المصدر المستضافة على GitHub أو Bitbucket. يتم منحهم الفرصة لاستخدام محلل ثابت PVS-Studio مجانًا لتطوير مشاريع مفتوحة المصدر.
التفاصيل: "
PVS-Studio مجاني لأولئك الذين يطورون مشاريع مفتوحة المصدر ."
ماك
في عام 2018 ، تعلمت PVS-Studio العمل تحت سيطرة macOS. كرس فريقنا فحص XNU Kernel لهذا الحدث: "إصدار
PVS-Studio لنظام التشغيل macOS: 64 نقطة ضعف في Apple XNU Kernel ".
XNU هي جوهر أنظمة تشغيل الكمبيوتر التي طورتها شركة Apple وتستخدم في عائلة OS X من نظام التشغيل (MacOS ، iOS ، tvOS ، watchOS).

إذا كنت ترغب في مشاركة هذا المقال مع جمهور ناطق باللغة الإنجليزية ، فيرجى استخدام الرابط الخاص بالترجمة: Andrey Karpov ، Svyatoslav Razmyslov.
PVS-Studio 7.00 .