يقدم فريق PVS-Studio ومنتجنا مساهمة كبيرة في تطوير جودة البرنامج. علاوة على ذلك ، بالإضافة إلى الاكتشاف الواضح للأخطاء في المشروعات المغلقة والمفتوحة ، هناك مساهمة غير مباشرة في تطوير المجمعين وأدوات تحليل الشفرة الأخرى. يسعدنا أننا في بعض الأحيان من المألوف وقررنا تكريس ملاحظة صغيرة لهذا على مدونتنا.
PVS-Studio هو محلل ثابت للكشف عن الأخطاء ونقاط الضعف المحتملة في الكود المصدري للبرامج المكتوبة بلغات C و C ++ و C # و Java.
لتعميم منهجية تحليل الشفرة الثابتة وأداتنا ، نكتب ملاحظات حول التحقق من مختلف
المشاريع مفتوحة المصدر. على وجه الخصوص ، نتحقق من المترجمين المختلفين من وقت لآخر. على سبيل المثال ، فحصنا ووجدنا أخطاء في مشاريع مثل: GCC، LLVM، PascalABC.NET، Roslyn.
لقد لاحظنا مرارا حقيقة مثيرة للاهتمام. حالما نتحقق ، على سبيل المثال ، LLVM أو GCC ، بعد إصدار واحد أو اثنين من هذه المترجمات ، تظهر بعض التشخيصات الجديدة ، بهدف تحديد الأخطاء التي يمكن أن يجدها PVS-Studio في الكود :). لسوء الحظ ، لم نخمن أن نكتب التواريخ والروابط إلى الابتكارات ذات الصلة ، لذلك عليك أن تأخذ الكلمة الخاصة بنا هنا. يستعير العديد من المترجمين C ++ بعض التشخيصات الخاصة بنا ، ونعتقد أن هذا أمر طبيعي تمامًا وصحيح ومفيد!
بالإضافة إلى المترجمين C ++ ، يتم الآن تحليل أجهزة تحليل C # لاستعارة التشخيص. هذا يعني أن محلل C # المطبق في PVS-Studio يصبح نموذجًا مختلفًا! تحقيق هذا هو لطيف وكبير.
في هذه الحالة ، يمكنني إصلاح ، في الوقت الحقيقي ، كيف يحدث هذا. في 13 أغسطس 2019 ، نشرنا
مقالة كبيرة مخصصة للتحقق من مكتبات .NET Core (CoreFX). من بين أشياء أخرى ، في هذه المقالة وصفنا نمط الخطأ المرتبط باستخدام سلاسل محرف (انظر
تشخيصات V3138 ). كان مطورو CoreFX مهتمين جدًا بنشرنا وبدأوا في إصلاح الأخطاء التي وجدناها. وبالفعل في 14 آب (أغسطس) ، توصلوا إلى الأخطاء التي وجدناها متعلقة بهذه الخطوط المحرف للغاية:
إصلاح عدد قليل من الدولارات المفقودة لاستكمال السلسلة في التتبع .
الآن الجزء الممتع. في نفس اليوم ، ظهرت مهمة في مشروع Roslyn Analyzers لتنفيذ عمليات التشخيص الجديدة "
قاعدة جديدة: سلاسل محرفية تفتقد إلى الحرف الخاص $ # 2767 " ، وهو متصل بدقة بالأخطاء التي تم إصلاحها في CoreFX.
يسعدنا أن عملنا كان مفيدًا لمطوري CoreFX وأن تشخيصاتنا أصبحت مثالًا على مطوري Roslyn Analyzers لمتابعة ذلك. من المؤسف أن أداة PVS-Studio لم يتم ذكرها في أي مكان في المناقشة. اتضح أنه كما لو أنهم أنفسهم وجدوا هذه الأخطاء وتوصلوا إلى تشخيصاتهم الخاصة. بالطبع ، سنكون ممتنين إذا ذكرنا كمصدر. حسنا
لماذا قررنا أن نكتب عن كل هذا؟ نحن سعداء للغاية ، ونحن فخورون بأنفسنا! دراسة لتجربتنا ، يقوم مترجمون آخرون بتطبيق تشخيصات جديدة ، مما يحسن من جودة البرامج المطورة ككل. أفهم أننا لا نؤثر فقط على تطوير قدرة المترجمين على العثور على الأخطاء. ومع ذلك ، يسعدنا أن ندرك أننا نساهم في هذه العملية.
هل يزعجنا أن الأدوات الأخرى تتعلم تدريجياً للعثور على نفس الأخطاء مثل PVS-Studio؟ لا. أداة لدينا موجودة فقط وتباع لسبب أننا دائما في مقدمة المترجم. مهمتنا هي أن نبقى دائما إلى الأمام. إن إدراكنا لحقيقة أننا نتعرض باستمرار للانهيار لا يسمح لنا بالاسترخاء ، وهو يفيد الجميع. بالإضافة إلى ذلك ، يجب أن يفهم المرء أن PVS-Studio ليس مجرد تحذيرات ، ولكن أيضًا:
- دعم سريع وعالي الجودة (فقط المبرمجون يجيبون على الرسائل) ؛
- التكامل مع Visual Studio و IntelliJ IDEA و SonarQube و Jenkins و IncrediBuild ؛
- القدرة على الاستخدام محليا وفي السحابة (Docker، Travis CI) ؛
- أدوات لدمج التحليل في المشاريع القديمة الكبيرة (قمع الكتلة) ؛
- وثائق مفصلة مع أمثلة لكل نمط خطأ.
- آلية إرسال الرسائل إلى المطورين (BlameNotifier) ؛
- رصد المترجم
- و هكذا.
شكرا لاهتمامكم آمل أن تكونوا سعداء معنا لبرنامج PVS-Studio.
وجرب محللنا لمراقبة الجودة المستمرة لرمز مشاريعك.
روابط إضافية:
- الجدول الزمني لتطوير القدرات التشخيصية في PVS-Studio .
- التقنيات المستخدمة في محلل كود PVS-Studio للبحث عن الأخطاء ونقاط الضعف المحتملة .

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