ربما ، ربما يكون كل مطور برامج لبرامج ميكروكنترولر قد سمع مرة واحدة على الأقل حول معايير الترميز الخاصة المصممة للمساعدة في زيادة أمان وتنقل الشفرة الخاصة بك. أحد هذه المعايير هو MISRA. في هذه المقالة سوف ندرس بمزيد من التفصيل ماهية هذا المعيار ، وما فلسفته وكيفية استخدامه في مشاريعك.
سمع الكثير من قرائنا أن PVS-Studio يدعم تصنيف تنبيهاتهم وفقًا لمعايير MISRA.
يغطي PVS-Studio حاليًا أكثر من 100 من قواعد MISRA C: 2012 و MISRA C ++: 2008.
يهدف هذا المقال إلى قتل ثلاثة طيور بحجر واحد:
- أخبر ميسرا لأولئك الذين ليسوا على دراية بهذا المعيار ؛
- ذكر العالم المضمن بما نحن قادرون عليه ؛
- للمساعدة في التعمق في سير العمل بالنسبة للموظفين الجدد الذين سيواصلون أيضًا تطوير محلل MISRA الخاص بنا ؛
آمل أن أتمكن من جعلها مثيرة للاهتمام. لذلك دعونا نبدأ!
قصة ميسرة
بدأ تاريخ MISRA منذ وقت طويل. بعد ذلك ، في أوائل التسعينيات ، خصص برنامج الحكومة البريطانية تحت الاسم الإرشادي "تقنية المعلومات الآمنة" تمويلًا لمشاريع مختلفة ، بطريقة أو بأخرى تتعلق بأمان الأنظمة الإلكترونية. تم تأسيس مشروع MISRA (جمعية موثوقية صناعة البرمجيات للمحركات) نفسه لإنشاء دليل لتطوير برمجيات ميكروكنترولر في المركبات البرية - في السيارات عمومًا.
بعد تلقي التمويل من الدولة ، بدأ فريق MISRA العمل ، وبحلول نوفمبر 1994 أصدر دليله الأول: "
إرشادات التطوير الخاصة بالبرمجيات القائمة على المركبات ". لم يتم ربط هذا الدليل بعد بلغة معينة ، لكن يجب أن أعترف: كان العمل مثيرًا للإعجاب وقد يتعلق الأمر بجميع الجوانب التي يمكن تصورها لتطوير البرمجيات المدمجة. بالمناسبة ،
احتفل مطورو هذا الدليل مؤخرًا
بالذكرى 25 لمثل هذا التاريخ المهم بالنسبة لهم.
عندما انتهى التمويل من الدولة ، قرر أعضاء MISRA مواصلة العمل معًا على أساس غير رسمي - وهذا مستمر حتى يومنا هذا. في الواقع ، MISRA (كمؤسسة) هو مجتمع من أصحاب المصلحة من مختلف الصناعات لصناعة السيارات والطائرات. الآن هذه الأحزاب هي:
- بنتلي موتور السيارات
- شركة فورد للسيارات
- جاكوار لاند روفر
- أنظمة الديزل دلفي
- هوريبا ميرا
- بروتيان الكهربائية
- الخدمات الهندسية Visteon
- جامعة ليدز
- ريكاردو المملكة المتحدة
- ZF TRW
لاعبين قويين في السوق ، أليس كذلك؟ ليس من المستغرب أن يكون معيارهم الأول المتعلق باللغة ، MISRA C ، مقبولاً على نطاق واسع بين المطورين المدمجين في المهام الحرجة. ظهر MISRA C ++ بعد ذلك بقليل. تدريجيا ، تم تحديث إصدارات المعايير وصقلها لتغطية الميزات الجديدة للغات. في وقت كتابة هذا التقرير ، كانت الإصدارات الحالية هي MISRA C: 2012 و MISRA C ++: 2008.
فلسفة وأمثلة من القواعد
تتمثل أكثر ميزات MISRA في اهتمامها المذهل بالتفاصيل والدقة الفائقة في ضمان السلامة. لم يجمع المؤلفون في مكان واحد فقط كل "الثقوب" C و C ++ التي تتبادر إلى الذهن (على سبيل المثال ، مؤلفو CERT) - لقد توصلوا بعناية إلى المعايير الدولية لهذه اللغات وكتبوا جميع الطرق التي يمكن تصورها والتي لا يمكن تصورها لارتكاب الأخطاء. وبعد ذلك ، قاموا بإضافة القواعد المتعلقة بقابلية قراءة التعليمات البرمجية من أعلى - وأضافوا ذلك - مما يزيد من صعوبة إدخال خطأ جديد في الشفرة النظيفة بالفعل.
لفهم مدى الجدية ، فكر في بعض القواعد المأخوذة من المعيار.
من ناحية ، هناك العديد من القواعد الجيدة المناسبة التي يجب اتباعها دائمًا في جميع الأوقات ، بغض النظر عن الغرض من مشروعك. بالنسبة للجزء الأكبر ، فهي مصممة للقضاء على السلوك غير محدد / غير محدد / يعتمد على التنفيذ. على سبيل المثال:
- لا تستخدم قيمة متغير غير مهيأ
- لا تستخدم مؤشر FILE بعد إغلاق الدفق
- يجب أن ترجع جميع الوظائف غير الخالية قيمة.
- يجب ألا يحتوي عداد الحلقة على نوع الفاصلة العائمة
- ... الخ
من ناحية أخرى ، هناك قواعد ، تكمن فوائدها على السطح ، والتي (من وجهة نظر المشاريع العادية) ليست خاطئين للغاية لكسرها:
- لا تستخدم goto و longjmp
- يجب أن ينتهي كل مفتاح افتراضي
- لا تكتب رمز غير قابل للوصول
- لا تستخدم وظائف متغيرة
- لا تستخدم حساب العناوين (باستثناء [] و ++ )
- ...
كما أن هذه القواعد ليست سيئة ، وبالاقتران مع القواعد السابقة ، فإنها تعطي بالفعل زيادة ملموسة في الأمن ، لكن هل هذا يكفي للأنظمة المدمجة عالية المسؤولية؟ يتم استخدامها ليس فقط في صناعة السيارات ، ولكن أيضًا في صناعة الطائرات والطيران والعسكرية والطبية.
لا نريد ، نظرًا لوجود خطأ في البرنامج ، أن بعض أجهزة الأشعة السينية تتعرض
للإشعاعات بجرعة قدرها 20 ألف راد ، لذا لم تعد القواعد "اليومية" المعتادة كافية. على المحك أرواح البشر وكميات هائلة من المال ، ويجب تضمين الدقة. هنا تبقى بقية قواعد MISRA على المسرح:
- يجب دائمًا أن تكون الأحرف الكبيرة "L" في الحرفي كبيرة (يمكن خلط الحرف "l" الصغير مع الوحدة)
- لا تستخدم عامل التشغيل الفاصلة (يزيد من فرصة ارتكاب خطأ)
- لا تستخدم العودية (مكدس متحكم صغير يمكن بسهولة تجاوز)
- يجب أن تكون غلافات جمل التبديل if ، عدا ذلك ، من أجل ، بينما ، تفعل ، ملفوفة في أقواس مجعد (يمكنك ارتكاب خطأ إذا لم تتم محاذاة الشفرة بشكل صحيح )
- لا تستخدم الذاكرة الديناميكية (نظرًا لوجود فرصة لتخصيصها دون جدوى من الكومة ، وخاصة في المتحكمات الدقيقة)
- ... والكثير والكثير من هذه القواعد.
غالبًا ما يكون لدى الأشخاص الذين يواجهون MISRA رأي مفاده أن فلسفة المعيار هي "حظر هذا وحظر ذلك". في الواقع ، هذا هو الحال ، ولكن جزئيا فقط.
نعم ، يحتوي المعيار على الكثير من القواعد المتشابهة ، لكن الغرض منه هو عدم حظر كل شيء ممكن ، بل سرد جميع الطرق لانتهاك بطريقة ما أمان الرمز. بالنسبة لمعظم القواعد ، يمكنك اختيار ما إذا كنت ستتبعها أم لا. سأشرح هذا بمزيد من التفصيل.
في MISRA C ، تنقسم القواعد إلى ثلاث فئات رئيسية: إلزامية ، مطلوبة ، واستشارية. إلزامي - هذه هي القواعد التي يجب ألا تنتهك تحت أي ذريعة. على سبيل المثال ، يتضمن هذا القسم القاعدة "لا تستخدم قيمة متغير غير مهيأ". القواعد المطلوبة أقل صرامة: إنها تسمح بإمكانية الرفض ، لكن فقط إذا تم توثيق هذه الانحرافات بعناية وتبريرها كتابيًا. يتم تضمين القواعد المتبقية في الفئة الاستشارية - هذه هي القواعد التي لا يلزم اتباعها.
يختلف MISRA C ++ قليلاً: الفئة الإلزامية مفقودة هناك ، ومعظم القواعد تنتمي إلى الفئة المطلوبة. لذلك ، في الواقع ، لديك الحق في انتهاك أي قاعدة - فقط تذكر أن توثق الانحرافات. هناك أيضًا فئة مستندات - هذه قواعد إلزامية (لا يُسمح بالانحرافات) ، والتي ترتبط بالممارسات الشائعة مثل "يجب توثيق كل استخدام من أدوات التجميع" أو "يجب أن تتوافق مكتبة المكونات مع MISRA C ++".
ماذا هناك
في الواقع ، MISRA لا يتكون فقط من مجموعة من القواعد. في الواقع ، هذا دليل لكتابة رمز آمن للميكروكنترولر ، وبالتالي فهو مليء بجميع أنواع الفوائد. دعونا ننظر إليهم بالتفصيل.
أولاً ، يحتوي المعيار على وصف شامل للخلفية: من أجل ما تم إنشاؤه في المعيار ، ولماذا تم اختيار C أو C ++ ، ومزايا وعيوب هذه اللغات.
نحن ندرك جيدًا مزايا هذه اللغات. نعم ، وحول أوجه القصور ، بشكل عام ، أيضًا :) ما هي التعقيدات العالية والمواصفات غير المكتملة للمعايير وبناء الجملة التي تجعل من السهل جدًا ارتكاب خطأ ، ثم ابحث عن خطأ لفترة طويلة. على سبيل المثال ، يمكنك كتابة هذا الخطأ:
for (int i = 0; i < n; ++i); { do_something(); }
ومع ذلك ، هناك احتمال ألا يلاحظ الشخص
فاصلة منقوطة إضافية ، أليس كذلك؟ يمكنك أيضا كتابة
مثل هذا :
void SpendTime(bool doWantToKillPeople) { if (doWantToKillPeople = true) { StartNuclearWar(); } else { PlayComputerGames(); } }
من الجيد أن يتم التعرف بسهولة على الحالتين
الأولى والثانية من خلال قواعد MISRA (الأولى هي MISRA C: 13.4 / MISRA C ++: 6.2.1 ، والثانية MISRA C: 13.4 / MISRA C ++: 6.2.1).
بالإضافة إلى وصف المشكلات ، يحتوي المعيار على عدد كبير من النصائح حول ما تحتاج إلى معرفته قبل البدء: حول كيفية إعداد عملية تطوير MISRA ، واستخدام المحللون الاستاتيكيين للتحقق من الكود للتأكد من الامتثال ، والوثائق التي تحتاج إلى الاحتفاظ بها ، وكيفية ملء ، وهلم جرا وهكذا دواليك.
وفي النهاية أيضًا ، هناك تطبيقات تحتوي على: قائمة قصيرة وجدول ملخص للقواعد ، وقائمة صغيرة من ثغرات C / C ++ ، ومثال لتوثيق الانحرافات عن القاعدة ، بالإضافة إلى قوائم مراجعة متعددة مصممة لمساعدتك على عدم الضياع في هذه البيروقراطية بأكملها.
كما ترون ، MISRA ليست مجرد مجموعة من القواعد ، بل هي بنية أساسية كاملة تقريبًا لكتابة رمز آمن للأنظمة المدمجة.
استخدام في المشاريع الخاصة بك
تخيل موقفًا: سوف تكتب برنامجًا لنظام مدمج ضروري جدًا ومسؤول. أو لديك بالفعل برنامج ، ولكن يجب عليك "نقله" إلى MISRA. كيفية التحقق من رمزك للامتثال للمعايير؟ هل لديك حقا للقيام بذلك يدويا؟
التحقق اليدوي من الكود ليس مهمة سهلة وربما مستحيلة. لن يقتصر الأمر على كل مراجع أن ينظر بعناية في كل سطر من التعليمات البرمجية ، ولكن سيتعين عليه أيضًا معرفة المعيار عن ظهر قلب. الرعب!
لذلك ، يُنصح مطورو MISRA أنفسهم باستخدام التحليل الثابت لاختبار الكود. في الواقع ، في الواقع ، التحليل الثابت هو عملية مراجعة التعليمات البرمجية الآلية. يمكنك ببساطة تشغيل المحلل في برنامجك وفي غضون دقائق قليلة ستتلقى تقريراً عن الانتهاكات المحتملة للمعيار. ما تحتاجه ، أليس كذلك؟ عليك فقط عرض السجل وإصلاح الاستجابة.
السؤال التالي: عند أي نقطة تبدأ استخدام MISRA؟ الجواب بسيط: كلما كان ذلك أفضل. من الناحية المثالية ، قبل أن تبدأ في كتابة الكود ، لأن MISRA تفترض أنك تتبع المعيار طوال فترة تشغيل الكود.
بالطبع ، ليس من الممكن دائمًا كتابة MISRA من البداية. على سبيل المثال ، يحدث غالبًا أن المشروع قد تم تنفيذه جزئيًا أو كليًا ، لكن العميل تمنى أن يكون المشروع مطابقًا للمعايير. في هذه الحالة ، سيكون عليك القيام بإعادة تشكيل شاملة للرمز الحالي.
هذا هو المكان الملوثات العضوية الثابتة. أود أن أقول حتى الصخور تحت الماء للملوثات العضوية الثابتة. ماذا يحدث إذا كنت تأخذ محللًا ثابتًا وتحقق من المشروع "العادي" للامتثال لمعايير MISRA؟ المفسد: يمكنك أن تشعر بالخوف.
بالطبع ، المثال في الصورة مبالغ فيه. هنا يمكنك رؤية نتيجة التحقق من مشروع كبير بما فيه الكفاية ، والذي في الواقع لم يكن يفكر في العمل على ميكروكنترولر. ومع ذلك ، عند التحقق من رمز موجود ، قد تشاهد عمليات محلل واحدة أو اثنتين أو خمسة أو حتى عشرة آلاف. وفي كل هذه الكومة ، سيتم فقد العمليات الجديدة التي تم إصدارها إلى الكود المكتوب أو الذي تم تغييره للتو.
ماذا تفعل حيال ذلك؟ هل من الضروري حقًا وضع كل الأشياء جانباً والجلوس لإصلاح كل الإيجابيات القديمة؟
نحن نعلم أنه في المرة الأولى التي يتم فيها فحص المشروع ، تظهر كثير من الإيجابيات في كثير من الأحيان ، وقد طوروا حلاً يساعدك في الحصول على الفائدة من المحلل على الفور ، دون إيقاف العمل. هذا الحل يسمى "قاعدة قمع".
قواعد الإلغاء هي آلية PVS-Studio التي تسمح بقمع رسائل المحلل على نطاق واسع. إذا كنت تقوم بفحص مشروع لأول مرة وتكتشف عدة آلاف من الإيجابيات هناك ، فأنت ببساطة تضيفها إلى قاعدة البيانات المعطلة ، وفي المرة التالية التي تدير فيها المحلل ، لن يعطيك أي تحذيرات.
وبالتالي ، يمكنك الاستمرار في كتابة التعليمات البرمجية وتعديلها بالطريقة المعتادة ، وفي الوقت نفسه سترى تحذيرات فقط حول تلك الأخطاء التي تم تقديمها للتو في المشروع. في الوقت نفسه ، ستحصل على أقصى استفادة من المحلل هنا والآن ، دون أن يصرف انتباهك الأخطاء القديمة. عدد قليل من النقرات - ويتم تنفيذ محلل! يمكنك قراءة تعليمات مفصلة حول هذا
هنا .
ربما تسأل: "انتظر ، ماذا تفعل بالردود الخفية؟" الجواب بسيط للغاية: لا تنسَ عنها وصحّها بهدوء. يمكنك ، على سبيل المثال ، وضع قاعدة الإيقاف في نظام التحكم في الإصدار والسماح فقط لتلك الأوامر التي لا تؤدي إلى زيادة عدد العمليات. وبالتالي ، تدريجياً ، يتم استنزاف "الصخرة تحت الماء" عاجلاً أم آجلاً ولن يكون هناك أي أثر لها.
حسنًا ، يتم تنفيذ المحلل ونحن الآن على استعداد للمتابعة. ماذا تفعل بعد ذلك؟ مسح الأعمال - للعمل مع رمز. ولكن ما هو المطلوب لتكون قادرة على إعلان الامتثال للمعايير؟ كيف تثبت أن مشروعك يتوافق مع MISRA؟
والحقيقة هي أنه لا توجد "شهادة" خاصة بأن رمزك يتوافق مع MISRA. كما ينص المعيار نفسه ، يجب أن يتم تنفيذ تتبع رمز الامتثال من قبل طرفين: عميل البرنامج ومزود البرنامج. يقوم المورد بتطوير برنامج يتوافق مع المعيار ويملأ المستندات اللازمة. يجب على العميل ، من جانبه ، التأكد من صحة البيانات الواردة من هذه المستندات.
إذا كنت أنت عميلًا ومطورًا للبرنامج الخاص بك ، فسوف تتحمل مسؤولية الامتثال للمعيار فقط على عاتقك :)
بشكل عام ، لإثبات مطابقة مشروعك ، ستحتاج إلى مستندات إثبات. قد تختلف قائمة الوثائق التي يجب على مطوري المشروع إعدادها ، لكن MISRA تقدم بعضها كمرجع. لننظر في هذه المجموعة بمزيد من التفصيل.
للمطالبة بالامتثال للمعيار ، ستحتاج إلى بعض الأشياء:
- في الواقع مشروع يتوافق مع قواعده الإلزامية والقواعد المطلوبة
- توجيه خطة التنفيذ
- توثيق جميع تحذيرات المحلل البرمجي والساكن
- توثيق جميع الانحرافات عن القواعد المطلوبة
- ملخص الامتثال التوجيهي
الأول هو خطة الامتثال. هذا هو الجدول الأكثر أهمية ، وهو الذي سيرسل الفاحص إلى جميع الوثائق الأخرى. في العمود الأول هو قائمة قواعد MISRA ، في الباقي يلاحظ ما إذا كان قد تم تحديد أي انحرافات عن هذه القواعد. هذا الجدول يبدو كالتالي:
يوصي المعيار ببناء مشروعك مع العديد من المجمعين ، وكذلك باستخدام اثنين أو أكثر من أجهزة التحليل الثابتة للتحقق من الشفرة للتأكد من توافقها. إذا قام المترجم أو المحلل بإنشاء نوع من التحذير المرتبط بالقاعدة ، فيجب أن تلاحظ ذلك في الجدول والمستند: لماذا لا يمكن القضاء على العملية ، سواء كانت خاطئة ، إلخ.
إذا تعذر التحقق من أي من القواعد بواسطة محلل ثابت ، فأنت بحاجة إلى تنفيذ إجراء مراجعة التعليمات البرمجية. يجب أيضًا توثيق هذا الإجراء ، وبعد ذلك يجب إضافة رابط لهذه الوثائق إلى خطة الامتثال.
إذا تبين أن المحول البرمجي أو المحلل الثابت ثابتان ، أو إذا تم العثور على انتهاكات التعليمات البرمجية الفعلية في عملية مراجعة التعليمات البرمجية ، فيجب عليك إما إصلاحها أو توثيقها. مرة أخرى ، عن طريق إرفاق رابط إلى الوثائق في الجدول.
وبالتالي ، فإن خطة الامتثال هي وثيقة يمكنك من خلالها العثور على وثائق لأي انحراف تم تحديده في التعليمات البرمجية الخاصة بك.
الآن قليلا عن توثيق الانحرافات عن القواعد. كما ذكرت من قبل ، هذه الوثائق ضرورية فقط للقواعد المطلوبة ، لأنه لا يمكنك انتهاك قواعد المستوى الإلزامي ، ولا يمكن اتباع القواعد الاستشارية دون أي وثائق.
إذا قررت الخروج عن القاعدة ، فيجب أن تتضمن الوثائق:
- رقم القاعدة المكسور
- بالضبط الانحراف الموقع
- صحة الانحراف
- دليل على أن الانحراف لا يضر بالأمن
- الآثار المحتملة للمستخدم
كما ترون ، فإن هذا الأسلوب في التوثيق يجعلك تفكر جديا فيما إذا كان الانتهاك يستحق ذلك. يتم ذلك على وجه التحديد لانتهاك القواعد المطلوبة لم تكن جيدة :)
الآن عن ملخص الامتثال للقواعد. ربما تكون هذه الورقة هي الأسهل لملء:
يتم تعبئة العمود المركزي قبل البدء في العمل باستخدام الكود ، ويكون العمود الموجود في أقصى اليمين بعد أن يكون مشروعك جاهزًا.
من المعقول طرح سؤال: لماذا تحتاج إلى تحديد فئات القواعد ، إذا كانت محددة بالفعل في المعيار نفسه؟ والحقيقة هي أن المعيار يسمح "بزيادة" القاعدة في فئة أكثر صرامة. على سبيل المثال ، قد يطلب منك أحد العملاء نقل قاعدة استشارية إلى فئة. يجب إجراء هذه "الزيادة" قبل التعامل مع الكود ، ويسمح ملخص الالتزام بالقواعد بتدوين ذلك بوضوح.
مع العمود الأخير ، كل شيء بسيط: يكفي فقط ملاحظة ما إذا كان يتم استخدام القاعدة ، وإذا كان الأمر كذلك ، فهناك انحرافات عنها.
هناك حاجة إلى هذا الجدول بأكمله بحيث يمكنك أن ترى بسرعة ما هي أولويات القواعد وما إذا كان الكود يطابقها أم لا. إذا أصبحت مهتمًا فجأة بمعرفة السبب الدقيق للرفض ، فيمكنك دائمًا الرجوع إلى خطة الامتثال والعثور على الوثائق التي تحتاجها.
لذلك ، كتبت الرمز بعناية بعد اتباع قواعد MISRA. لقد قمت بوضع خطة امتثال وتوثيق كل ما يمكنك توثيقه ، وملء ملخص الامتثال. إذا كان هذا صحيحًا ، فقد تلقيت رمزًا نظيفًا وقابل للقراءة للغاية وموثوقًا به للغاية تكرهه الآن :)
أين سيعيش برنامجك الآن؟ في جهاز التصوير بالرنين المغناطيسي؟ في جهاز استشعار السرعة العادية أو في نظام الطيار الآلي لبعض الأقمار الصناعية الفضائية؟ نعم ، لقد سلكتم طريقًا بيروقراطيًا خطيرًا ، ولكن هذه تفاهات. كيف لا يمكن للمرء أن يكون دقيقًا عندما تكون الحياة البشرية الحقيقية على المحك؟
إذا تمكنت وتمكنت من الوصول إلى نهاية منتصرة ، فإني أهنئكم بصدق: أن تكتب رمزًا آمنًا عالي الجودة. شكرا لك
مستقبل المعايير
أخيرًا ، أريد أن أتحدث قليلاً عن مستقبل المعايير.
MISRA حاليا تعيش وتتطور. على سبيل المثال ، في بداية عام 2019 ، تم الإعلان عن "MISRA C: 2012 Third Edition (First Revision)" - تم تحديثه واستكماله بالقواعد الجديدة لعام 2012. في الوقت نفسه ، أعلنوا عن الإصدار المرتقب من MISRA C: 2012 التعديل 2 - C11 Core ، معيار 2012 ، والذي سيتم فيه إضافة القواعد التي ستغطي إصدارات لغة C لعامي 2011 و 2018 لأول مرة.
لا يقف ساكنا و MISRA C ++. كما تعلمون ، يرجع تاريخ أحدث إصدار من MISRA C ++ إلى عام 2008 ، لذا فإن الإصدار الأقدم من اللغة التي يغطيها هو C ++ 03. لهذا السبب ، هناك معيار آخر ، يشبه MISRA ، ويطلق عليه AUTOSAR C ++. تم تصميمه أصلاً على أنه امتداد لـ MISRA C ++ وكان الغرض منه تغطية الإصدارات الأحدث من اللغة. على عكس العقل المدبر ، يتم تحديث AUTOSAR C ++ مرتين في السنة ويدعم حاليًا C ++ 14. من المخطط إجراء ترقية أخرى إلى C ++ 17 ، ثم C ++ 20 ، وما إلى ذلك.
ماذا بدأت في بعض المعايير الأخرى؟ والحقيقة هي أنه قبل أقل من عام بقليل ، أعلنت كلتا المنظمتين توحيد معاييرهما في معيار واحد. الآن سيصبح MISRA C ++ و AUTOSAR C ++ معيارًا واحدًا ، وسيتم الآن تطويرهما معًا. أعتقد أن هذه أخبار رائعة للمطورين الذين يكتبون تحت ميكروكنترولر C ++ ، ولا تقل أخبارًا رائعة لمطوري أجهزة التحليل الثابتة. لا يزال هناك الكثير من العمل المفضل في المستقبل! :)
استنتاج
لقد تعلمنا اليوم الكثير عن MISRA: لقد قرأنا تاريخ حدوثه ، ودرسنا أمثلة على القواعد وفلسفة المعيار ، ونظرنا في كل ما تحتاجه لاستخدام MISRA في مشاريعك ، وحتى نظرنا قليلاً في المستقبل. أتمنى أن تفهم الآن ما هو MISRA وكيف تطبخه!
وفقًا للتقاليد القديمة ، سأترك رابطًا هنا لمحلل ثابت PVS-Studio. إنه قادر على إيجاد ليس فقط الانحرافات عن معيار MISRA ، ولكن أيضًا مجموعة
كبيرة من الأخطاء ونقاط الضعف. إذا كنت مهتمًا بتجربة PVS-Studio بنفسك ، فقم
بتنزيل الإصدار التجريبي وتحقق من مشروعك.
هذا يخلص مقالتي. أتمنى لجميع القراء سنة جديدة سعيدة وعطلة نهاية أسبوع جديدة سعيدة!
روابط ذات صلة
- جورجي جريبكوف - " الأمان بأقصى سرعة - كيفية كتابة رمز C / C ++ موثوق للأنظمة المدمجة ."
- PVS-Studio هو محلل كود ثابت .
- PVS-Studio & KEIL 5 التعاون .

إذا كنت ترغب في مشاركة هذا المقال مع جمهور ناطق باللغة الإنجليزية ، فيرجى استخدام الرابط الخاص بالترجمة: George Gribkov.
ما هو MISRA وكيفية طبخه .