يوم واحد من دعم مستخدم PVS-Studio

الصورة 2

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

حول محلل


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

هناك ثلاثة استمارات للتواصل معنا:

  1. ردود الفعل
  2. طلب محاكمة
  3. طلب السعر

ليلة الخميس


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

قررت الإجابة يوم الجمعة أو حتى خلال الأسبوع التالي:

مرحبا قسنطينة

سنراجع تحذيراتك. الأسبوع القادم سأعلق على الأماكن المشبوهة :-)

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

بعد إذن المستخدم ، سأذكر لك رسائلنا:

البريد الإلكتروني 1

تحذيرات V712 إيجابية كاذبة:

uint32_t StartUpCounter = 0, HSEStatus = 0; RCC->CR |= ((uint32_t)RCC_CR_HSEON); /* Wait till HSE is ready and if Time out is reached exit */ { HSEStatus = RCC->CR & RCC_CR_HSERDY; StartUpCounter++; } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); // V712... 

البريد الإلكتروني 2

V715 كاذبة إيجابية لنفس الشظية:

 { // V715 ... lpmode.cpp 356 HSEStatus = RCC->CR & RCC_CR_HSERDY; StartUpCounter++; } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); 

البريد الإلكتروني 3

القطط المقدسة ، مثل هذا المكان المسكون! يشكو المحلل من نفس الجزء (انظر الكود من رسائل البريد الإلكتروني السابقة):

V560 جزء من التعبير الشرطي صحيح دائمًا: (StartUpCounter! = ((Uint16_t) 0x5000)). lpmode.cpp 356

V776 حلقة لا نهائية محتملة. المتغير في شرط خروج الحلقة 'HSEStatus == 0' لا يغير قيمته بين التكرارات. lpmode.cpp 356

ربما لا أحصل على شيء؟ لكن في الممارسة العملية ، كل شيء يعمل ، وإذا لم يبدأ الكوارتز ، فإننا نخرج من هذا الجزء عند انتهاء المهلة ؛-)

البريد الإلكتروني 4 (الرد)

مرحبا قسنطينة

سنراجع تحذيراتك. الأسبوع القادم سأعلق على الأماكن المشبوهة :-)

البريد الإلكتروني 5

اللعنة! فقط بعد بريدك الإلكتروني ، لاحظت أن العبارة "do" قد فاتتها ... أخيرًا ، سقطت جميعها في أخدود! يبدو أنني فقدت تماما عيني الحدة ٪)

افعل {...} بينما (...) ؛

استنتاج


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

قصة مماثلة مع نهاية سعيدة: " كيف أثبت PVS-Studio أن يكون أكثر انتباهاً من ثلاثة ونصف مبرمجين "

استخدم أجهزة التحليل الثابتة في مشروعك. لا تحل محل مراجعة الكود مع الزملاء ، ولكنها تضيف دعمًا لمراقبة جودة الكود.

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


All Articles