في الآونة الأخيرة ، عززنا وجودنا في العديد من مؤتمرات تكنولوجيا المعلومات المتخصصة في روسيا والخارج. في معظم الأحداث ، نحاول الوقوف بموقف ؛ وفي بعض الحالات ، نقدم عروض تقديمية. تسمح لنا المؤتمرات ليس فقط بزيادة الاعتراف بمنتجنا (محلل الشفرة الثابتة PVS-Studio) ، ولكن أيضًا ، الأهم من ذلك ، التعرف على المستخدمين المحتملين والحاليين بشكل أفضل. بالتواصل مع الزوار في المنصة ، غالبًا ما يجيب موظفونا على نفس الأسئلة ، والتي تكون غريبة في بعض الأحيان. في هذه المقالة سأحاول الإجابة على الأسئلة الأكثر شيوعًا للزوار حول التحليل الثابت بشكل عام و PVS-Studio بشكل خاص.
بادئ ذي بدء ، القليل من الفكاهة حول موضوع "التوقع والواقع". نكتب الكثير من المقالات ونعتقد بسذاجة أنه إذا قرأها الناس ، فإنهم على الأقل بشكل عام يعرفون عن منتجاتنا وميزاته. لسوء الحظ ، ليس هذا هو الحال دائمًا. فيما يلي مثال للتواصل الحقيقي مع زائر في مؤتمر عقد مؤخرًا. الزائر: "قرأنا مقالاتك عن حبري. مثيرة للاهتمام. من المؤسف أن المحلل الخاص بك لا يناسبنا على الإطلاق. لدينا جميع رموز المصدر السرية ، لا يمكننا إرسالها. ولكن كل شيء
على السحابة يناسبك ".
ربما يكون لدى قسم التسويق لدينا شيء للعمل عليه.
بعد ذلك ، سأطرح أسئلة شائعة أخرى من الزائر العادي إلى جناحنا في المعرض ، بالإضافة إلى الإجابات عليها في شكل حوار مرتجل.
س: سمعت شيئًا عنك. من أين أنت وماذا تفعل وكيف تعرف المزيد عنك؟
ج: نحن فريق مستقل صغير من تولا. نقوم بتطوير PVS-Studio - محلل الكود الثابت للغات C و C ++ و C # و Java. يمكنك معرفة المزيد عنا على
موقع PVS-Studio . نكتب أيضًا مقالات وننشرها على
مدونتنا وعلى
حبري والموارد الأخرى.
س: ما هو نوع التحليل الثابت؟ فريقنا لديه ما يكفي من تحذيرات المترجم ومراجعات الشفرة المشتركة.
ج: إن المترجم قادر على الإشارة إلى الأخطاء الجسيمة والواضحة فقط. على سبيل المثال ، كود لا يمكن الوصول إليه أو استخدام متغيرات غير مهيأة. كشف الخطأ للمترجم هو مهمة جانبية. نعم ، أصبح المترجمون أذكياء مؤخرًا. لكن أي أداة متخصصة للعثور على الأخطاء في التعليمات البرمجية تتفوق بشكل كبير على المترجم ، مما يسمح لك بإجراء تحليل مفصل للشفرة وتحديد الأخطاء المطبعية والأخطاء المنطقية والاستخدام المحتمل للمؤشرات / الروابط الخالية ، إلخ.
مراجعات الكود المشترك هي تقنية جيدة تم اختبارها عبر الزمن. ولكن لها أيضًا عيوب مرتبطة بالحاجة إلى جذب موظفين إضافيين للعمل على كود الآخرين. هذا يزيد من تكلفة التطوير ، بينما يبقى احتمال تخطي الخطأ أو إضافة خطأ جديد ، لأنه من الطبيعة البشرية أن ترتكب أخطاء.
التحليل الثابت هو التحقق من شفرة المصدر للبرنامج دون الحاجة إلى تنفيذه. نوصي باستخدام أدوات تحليل التعليمات البرمجية الثابتة كحاجز
إضافي للخطأ.
س: هل يقوم PVS-Studio بتحليل الملفات القابلة للتنفيذ أو التعليمات البرمجية المصدر مباشرة؟
ج: إذا تحدثنا عن البحث عن الثغرات الأمنية ، فإن تحليل الكود القابل للتنفيذ يشبه إلى حد كبير كيفية عمل مكافحة الفيروسات من خلال البحث عن التوقيعات في رمز ثنائي من قاعدة بيانات معينة.
يحلل PVS-Studio
شفرة المصدر . هذا يسمح لك بتحديد مجموعة أكبر بكثير من الأخطاء ونقاط الضعف المحتملة ، ويزيد من سرعة العمل ويعطي نتائج أكثر موثوقية.
نعم ، بالطبع ، يمكنك محاولة فك الشفرة والعثور على الخطأ في الخوارزمية. ولكن عليك أن تفهم أنه في الشفرة الثنائية يتم فقدان الكثير من المعلومات. على سبيل المثال ، سيتم دائمًا حذف الشرط الحقيقي ببساطة عند تجميع الرمز ، ولا توجد طريقة لمعرفة أن هناك خطأ ما في هذا الشرط.
س: وما هي خيارات التكامل؟ هل لديك ملحقات لأي IDE؟
ج: في الوقت الحالي ، يتم دمج PVS-Studio في Visual Studio 2010-2017 كمكون إضافي. يوجد ملحق Java لـ IntelliJ IDEA. أيضا ، بفضل وحدة متخصصة ، يمكنك إدارة مشاريع CMake في Qt Creator و CLion.
يتطور المحلل باستمرار ، لذا يمكنك معرفة أحدث المعلومات حول ميزات المنتج من خلال زيارة
موقعنا على الإنترنت .
س: نستخدم SonarQube.
ج: خيار رائع. يسمح لك ملحق PVS-Studio لبرنامج SonarQube باستيراد نتائج التحليل إلى SonarQube والعمل معها بالطريقة المعتادة.
س: حسنًا ، أحتاج إلى دمج التحليل بطريقة أو بأخرى في نظام البناء لدينا.
ج: يمكن استخدام PVS-Studio من سطر الأوامر. يحتوي المحلل على مجموعة كبيرة من الإعدادات لحل مجموعة كبيرة من المهام. أيضًا ، بغض النظر عن سيناريو الاستخدام ، نقدم المساعدة لعملائنا خلال مرحلة تنفيذ المحلل والدعم الفني طوال فترة الترخيص.
س: كيف تجرب المحلل الخاص بك؟
ج: استخدم
صفحة التنزيل ، وقم بتنزيل مجموعة التوزيع اللازمة والعمل مع PVS-Studio في الوضع التجريبي. إذا كنت بحاجة إلى وقت إضافي لتقييم منتجنا أو إذا لم تكن راضيًا عن قيود الإصدار التجريبي ،
فاتصل بنا .
في المعارض أيضًا ، يمكن لزوارنا الحصول على مفتاح Enterprise ، صلاحيته شهر واحد. للقيام بذلك ، فقط تعال إلى جناحنا مع يونيكورن. بالإضافة إلى ذلك ، يمكنك أن تصبح عضوًا في اليانصيب والحصول على جائزة من PVS-Studio.
س: أنا طالب ، هل من الممكن استخدام PVS-Studio مجانًا؟
ج: هذا ممكن إذا قمت بإضافة تعليقات من نوع خاص إلى شفرة المصدر الخاصة بك. سيتم فحص الملفات التي تم وضع علامة عليها بهذه الطريقة بحثًا عن أخطاء دون أي قيود. يمكنك معرفة المزيد حول وضع التشغيل هذا من المقالة "
كيفية استخدام PVS-Studio مجانًا ".
س: من هم عملاؤك؟
ج: في الوقت الحالي ، أصبح أكثر من 200 شركة حول العالم من عملائنا. نطاق أنشطتها متنوع للغاية. يمكن العثور على قائمة العملاء الحاليين على
موقعنا .
س: هل لديك طريقة تشغيل محلية أم لا؟
ج: يتم تثبيت محلل PVS-Studio محليًا على جهاز (أجهزة) كمبيوتر مخصصة ويمكنه العمل بشكل منفصل تمامًا. يلزم وجود اتصال بالإنترنت لتلقي التحديثات ، بالإضافة إلى روابط سريعة إلى الوثائق (وصف التشخيص ، وما إلى ذلك) من المكونات الإضافية. نحن نفكر حاليًا في خيارات للعمل من خلال "السحابة" ، ولكن هذا سيكون إضافة إلى الوضع القياسي للعمل.
س: وماذا أنت أفضل بالضبط ، على سبيل المثال ، محلل Coverity؟
ج: من المستحيل إعطاء إجابة بسيطة وشاملة على هذا السؤال. فشلت كل محاولاتنا للمقارنة مع المحللين الآخرين. تم اتهامنا بالتحيز و "إنهاء" النتائج باستخدام قاعدة اختبار معدة خصيصًا وخطايا مميتة أخرى. بالإضافة إلى ذلك ، لا يمكن مقارنة المحللين ببساطة "وجها لوجه". كل أداة فريدة من نوعها ولها نقاط القوة والضعف الخاصة بها. تركز بعض الأدوات على الأداء ، بينما يركز البعض الآخر على إيجاد "الروائح" في الكود وتحسين التصميم. نحن نبحث عن الأخطاء ونقاط الضعف المحتملة.
إذا كانت لديك رغبة ومنهجية مناسبة ، يمكنك إجراء دراسة ومقارنة محللنا مع الآخرين ، ثم كتابة مقال حولها. للقيام بذلك ، سنقوم بإصدار مفتاح ترخيص مؤقت لك بدون قيود. لكن كن مستعدًا للنقد.
س: لا أفهم ، لذلك أنت تبحث عن أخطاء فقط في كود غير مترجم؟ أي أن البرنامج لم يجتاز حتى اختبار المترجم؟
ج: ليس الأمر كذلك. يبحث PVS-Studio ويجد أخطاء فقط في البرامج المترجمة. في التطبيقات الواقعية. لا يتم تجميع هذه البرامج فقط دون أخطاء ، ويتم فحص بعضها بواسطة محللين آخرين. وما زلنا نبحث عن أخطاء هناك. حول هذا ، غالبًا ما نكتب
مقالات على مدونتنا ، ونتحقق من المشاريع مفتوحة المصدر.
س: وما هي الأخطاء التي يمكن لـ PVS-Studio اكتشافها في مشروعنا؟ مجرد أخطاء إملائية؟
ج: بطبيعة الحال ، تنتمي الأخطاء المطبعية إلى فئة الأخطاء الكلاسيكية التي تم اكتشافها بواسطة التحليل الثابت. ولكن بالإضافة إلى ذلك ، يمكن لـ PVS-Studio اكتشاف
عدة مئات من أنماط الأخطاء الأخرى. أمثلة: إلغاء الإشارة إلى مؤشر فارغ ، وقسمة على صفر ، والشرط دائمًا خطأ أو صحيح ، وعمليات الفهرس غير الصحيحة ، والخروج من حدود المصفوفة ، والعديد من الآخرين. يتم توفير قائمة كاملة بالأخطاء في صفحة
التوثيق .
س: بعد التحقق من المحلل الخاص بك ، هل يمكنني التأكد من أن البرنامج لا يحتوي على أخطاء؟
ج: لا. PVS-Studio ليست أداة لإثبات صحة البرامج. هذه فئة منفصلة من الأدوات. تتمثل مهمة محللنا في الإشارة بسرعة وموثوقية
إلى خطأ
محتمل في الكود. دائمًا ما يتخذ المطور قرارًا بشأن قابلية الخطأ للتصميم ، باستخدام سياق حدوث الخطأ ومعرفته بالمشروع. والمحلل يساعد المطور ، وربما يقلل من عدد الإيجابيات الخاطئة ويوفر قدرات إضافية لمعالجة قائمة التحذيرات الواردة.
س: كيف يعمل PVS-Studio بالضبط؟ ما نوع آليات البحث عن الخطأ؟ من المحتمل أنك تستخدم تعبيرات عادية.
ج: إن استخدام التعبيرات العادية غير فعال للغاية. يسمح لك بالعثور على الأخطاء الأكثر بدائية فقط ، على سبيل المثال ، في الظروف (قارن بين تعبيرين فرعيين متطابقين):
if ((a+b+) == (a+b+)) {....}
في الوقت نفسه ، من المحتمل أن يؤدي تغيير صغير في الشفرة (دون تغيير منطق العمل) إلى وضع مثل هذا المحلل في طريق مسدود:
if ((a+b+) == (b+a+)) {....}
محلل PVS-Studio أكثر ذكاءً ويستخدم الآليات التالية:
- مطابقة الأنماط على أساس شجرة بناء جملة مجردة.
- بناء نموذج معاني باستنتاج نوع لاحق.
- تنفيذ رمزي ، والذي يسمح لك بحساب قيم المتغيرات التي يمكن أن تؤدي إلى أخطاء ، وكذلك التحقق من نطاقات القيم (التحقق من النطاق).
- تحليل تدفق البيانات (تحليل تدفق البيانات).
- شروح الطريقة
تم وصف كل هذا بمزيد من التفصيل من قبل زميلي أندريه كاربوف في مقالة حديثة بعنوان "
التقنيات المستخدمة في محلل كود PVS-Studio للعثور على الأخطاء ونقاط الضعف المحتملة ".
س: حسنًا ، لدينا مشروع C / C ++ ، 15 عامًا من التطوير وخمسة ملايين سطر من التعليمات البرمجية. هل يمكننا حقًا البدء في استخدام PVS-Studio الآن؟
ج: نعم. في مرحلة التنفيذ ، سيكون من الضروري إجراء فحص كامل لمشروعك مرة واحدة. ثم يمكن ملاحظة جميع التحذيرات الواردة (ربما سيكون هناك الكثير منها) على أنها غير مثيرة للاهتمام (قمع استنتاجها مؤقتًا) حتى تعود إلى هذا الدين الفني لاحقًا. بعد ذلك ، يمكنك استخدام PVS-Studio للتحقق بانتظام من الرمز الجديد فقط. يمكنك معرفة المزيد عن هذا وميزات المحلل الأخرى في
صفحة التوثيق .
س: كم مرة أحتاج إلى إجراء اختبار؟ وماذا ، تحقق من قاعدة التعليمات البرمجية بالكامل في كل مرة؟
ج: إن الاستخدام الأكثر فعالية للتحليل الثابت ينطوي على التحقق من الرمز الجديد بقدر الإمكان. لهذا ، يتم تنفيذ وضع التحليل المتزايد في PVS-Studio. يتم إرسال الملفات التي تم تعديلها منذ آخر بناء للمشروع للتحقق منها. هناك طرق أخرى للعمل. يسمح لك هذا بتحديد الأخطاء الموجودة بالفعل في مرحلة التطوير ، مما يقلل من خطر وقوعها في الإصدار.
س: نستخدم PVS-Studio. يجد المحلل أخطاء ، ولكن الكثير منها في كود أو اختبارات غير مستخدمة. هل هذا جيد؟
ج: من الطبيعي جدا. إحدى ميزات التحليل الثابت ، على النقيض من التحليل الديناميكي ، هي التحقق من قاعدة التعليمات البرمجية
بالكامل ، وليس فقط ما يتم تنفيذه عند تشغيل التعليمات البرمجية. لنفترض أنك قضيت الكثير من الوقت والجهد في تصحيح رمز البرنامج ، وكل شيء يعمل بثبات. ولكن هناك وظيفة نادرا ما تستخدم ، أو لم تستخدم بعد على الإطلاق. إن احتمال العثور على خطأ في مثل هذه الدالة مرتفع. وعندما يبدأون في وقت ما في استخدام الوظيفة ، قد يحدث خطأ ما. سيقلل استخدام التحليل الثابت من مخاطر مثل هذه الحالة.
أيضًا ، قد تحتوي الشفرة على تركيبات غير صحيحة بشكل واضح (يحدث هذا عادةً في الاختبارات) ، لذلك غالبًا ما يكون من المنطقي استبعادها من الفحص (من خلال تحديد المشاريع أو المسارات) من خلال إعدادات PVS-Studio. ومع ذلك ، في بعض الأحيان تحتوي الاختبارات نفسها على أخطاء. يصعب تحديد مثل هذه الحالات ، وفي هذه الحالة ، يجب أن يتخذ المطور القرار.
س: ماذا عن البحث عن نقاط الضعف؟
ج: محلل PVS-Studio هو أداة SAST (اختبار أمان التطبيق الثابت) ويسمح لك بتحديد نقاط الضعف
المحتملة المصنفة وفقًا لـ
CWE (تعداد الضعف العام). تتداخل تنبيهات CWE إلى حد كبير مع تنبيهات PVS-Studio الكلاسيكية. يمكنك معرفة المزيد عن SAST من
الوثائق . من المهم أن نفهم أن الثغرات
المحتملة لا تؤدي بالضرورة إلى ثغرات حقيقية يمكن استغلالها من قبل مخترق. يتم تصنيف الثغرات المحددة بواسطة
CVE (نقاط الضعف والتعرضات المشتركة). ومع ذلك ، فإن القضاء على نقاط الضعف
المحتملة يساهم بوضوح في تحسين أمن البرنامج ويقلل من مخاطر تحديد نقاط الضعف الحقيقية في المستقبل.
س: أقود فريق التطوير. كيف سيساعدني PVS-Studio بالضبط؟
ج: بالإضافة إلى تحسين جودة وموثوقية الكود ، فإن تطبيق PVS-Studio سيسمح بحل المهام الإدارية البحتة المتعلقة ، على سبيل المثال ، بتقسيم المسؤوليات. تتضمن حزمة المحلل الأداة المساعدة BlameNotifier ، والتي تتيح لك التعرف تلقائيًا على الموظفين الذين أرسلوا رمزًا خاطئًا إلى نظام التحكم في الإصدار. في نفس الوقت ، يتم إرسال إشعارات البريد إلى كل من المقاول ومديره.
يمكنك أيضًا تكوين تحويل تقارير الأخطاء إلى أي شكل مناسب لك ، بما في ذلك تقرير HTML مفصل ، مناسب للاستخدام من قبل الرأس.
أخيرًا ، إذا تم استخدام SonarQube ، يمكنك استخدام جميع مزايا هذه الأداة لضمان التحكم المستمر في جودة التعليمات البرمجية عن طريق تحميل نتائج التحقق من المشروع إلى SonarQube باستخدام محلل PVS-Studio باستخدام مكون إضافي متخصص.
س: استخدام أو التخطيط لاستخدام التعلم الآلي؟
ج: هذا موضوع كبير ومثير للاهتمام. نخطط لكتابة مقال نقدي حول هذا الموضوع. الآن سأطرح فقط بعض الأفكار القصيرة.
ليست هناك حاجة لعمل آلة حاسبة باستخدام التعلم الآلي. هناك قاعدة (صيغة) معينة ، ويجب تطبيقها على الشفرة واستخلاص نوع من الاستنتاج. ليس من الواضح سبب الحاجة إلى تكوين الشبكة العصبية لاكتشاف نمط خطأ جديد عندما تكون هذه الأنماط موجودة بالفعل ، وتحتاج فقط إلى تطبيقها بشكل صحيح. والأهم من ذلك ، ليس من الواضح من أين يمكن الحصول على قاعدة لمثل هذا التدريب. أين هذه العينة من مئات الآلاف من المشاريع التي تحتوي على أخطاء مكتوبة يمكنك التعلم منها؟
المكان الوحيد الذي نرى فيه أنه قد يكون من المنطقي استخدام خوارزميات التعلم الآلي هو تصفية النتائج الإيجابية الخاطئة.
س: هل تتحقق من رمز PVS-Studio باستخدام PVS-Studio؟
ج: بالطبع! علاوة على ذلك ، في حالة وجود أخطاء ، يتم نشر قائمة الجناة مع حرمانهم اللاحق من الثلاجة مع الآيس كريم. ولكن بجدية ، نعتقد أنه من المفيد جدًا استخدام أداتك الخاصة. هذا يسمح لك بإلقاء نظرة على المنتج من وجهة نظر المستخدم وملاحظة بعض العيوب.
س: كيف تحصل على وضعك الرائع لسطح المكتب والقبعة ذات العلامة التجارية مع غطاء للأذن؟
ج: تعال إلى جناحنا مع يونيكورن في أقرب معرض ، حيث سنكون حاضرين مع كشك. سنأتي بشيء :)
آمل أن أكون قد تمكنت من الإجابة على الأسئلة الأكثر شيوعًا للزوار إلى منصاتنا في المعارض. بالطبع ، هناك أسئلة أكثر تعقيدًا قد تتطلب كتابة مقال منفصل للإجابة.
عند التواصل مع الزائرين ، نحاول نقل الفكرة الرئيسية: التحليل الثابت ليس دواءً لكل داء العلل ، ولكن استخدامه مفيد جدًا للصحة (برامجك). استخدم PVS-Studio ولا تمرض!
في الختام ، سأقدم مرة أخرى عددًا من الروابط المفيدة:

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