سؤال

لديّ متطلب لجعل كمية كبيرة من التعليمات البرمجية متوافقة مع MISRA.
السؤال الأول:يمكن لأي شخص أن يعطي تقدير لتمرير تعليمات برمجية مكتوبة جيدًا للنظام المضمن بناءً على الخبرة.أدرك أن عبارة "مكتوب بشكل جيد" غير محددة بشكل جيد وغامضة، لذا أطلب تقديرًا أوليًا.
السؤال الثاني:أي توصية للأداة التي يمكن تخصيصها (أي السماح بقمع تحذيرات محددة) واستخدامها في بيئة الإنشاء التلقائي (أي واجهة سطر الأوامر)
أي اقتراحات أخرى مفيدة يمكن أن تساعد في هذه المهمة.
شكرا ايليا.

هل كانت مفيدة؟

المحلول

كما أوصي بشدة باستخدام PC-Lint.إذا كنت تقوم بتجميع التعليمات البرمجية الخاصة بك باستخدام Visual Studio، فإنني أوصي باستخدام البرنامج الإضافي "Visual Lint" من Riverblade.إذا لم تتمكن من ترجمة التعليمات البرمجية في Visual Studio، فلا يزال بإمكانك تشغيل PC-Lint من سطر الأوامر للحصول على تأثير جيد.

توفر بعض برامج التحويل البرمجي للنظام المضمن اختبار الامتثال لـ MISRA كتحذيرات للمترجم.أستخدم مترجم IAR لتطوير Arm7/Arm9.إنه يوفر وسيلة سهلة لتكوين قائمة التحقق من الامتثال لـ MISRA مباشرة في إعداد المترجم.

من الصعب التوصل إلى قاعدة أساسية لتقدير الوقت الذي ستستغرقه لجعل بعض التعليمات البرمجية المكتوبة جيدًا متوافقة مع MISRA.يعتمد الكثير على عادات البرمجة الحالية للمبرمجين ومدى التزامهم بقواعد MISRA في المقام الأول.

تقديرات تقريبية:
2 - 3 أيام لتصبح ماهرًا في استخدام PC-Lint.
المرور الأولي لجعل الكود الحالي متوافقًا مع MISRA:10 إلى 25 بالمائة من الوقت المستغرق في كتابة الكود في المقام الأول.
الحفاظ على توافق الكود MISRA:تمت إضافة 5 إلى 10 بالمائة لتطوير الكود.نصف هذه التكلفة هو تغيير عادات المبرمجين لديك لاتباع "طريقة MISRA" في القيام بالأشياء.النصف الآخر هو التكلفة الإضافية لاختبار الكود والتفتيش لضمان الامتثال لـ MISRA.

نصائح أخرى

إن جعل كود Misra متوافقًا ليس عملاً روتينيًا كبيرًا - إذا كنت تتبع ممارسات برمجة جيدة إلى حد ما.قد تجد بعض قواعد المؤشر صعبة بعض الشيء، إذا كانت التعليمات البرمجية التي تحاول جعلها متوافقة تحتوي على بعض حسابات المؤشر الغريبة والرائعة.

أنا أؤيد توصية جريج بشأن PC Lint، لكن Splint مفتوح المصدر يستحق أيضًا النظر إليه، على الرغم من أنه بينهم (ونظام تحذير المترجم)، أقدر أنك ستظل قادرًا على تغطية 80٪ فقط من قواعد Misra - ربما يحتاج الباقي إلى مراجعة التعليمات البرمجية يدويًا.

أستخدم PC Lint للتحليل الثابت لرموز C وC++.يمكن تهيئته لإظهار قواعد MISRA التي تم انتهاكها، كما أنه يحتوي على واجهة سطر أوامر.

لقد استخدمت أداة تجارية تسمى مراقبة الجودة.الأداة قادرة على التنفيذ ميسرا

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

أظن أن مهندسًا مبتدئًا سيستغرق ما يصل إلى أسبوع (4-5 أيام) لإعداده (على افتراض أنه مصمم على تشغيله كما تريد).

في ملاحظة جانبية، من المحتمل أن يكون لأدوات التحليل الثابت التجارية الأخرى تطبيق MISRA أيضًا.وبحسب ما ورد (حسب مندوب مبيعاتهم)، كلوورك يفعل.

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

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

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

في بعض الأحيان يكون من الصعب التوافق مع التعليمات البرمجية القديمة نظرًا لأنه لا أحد يعرف بالضبط كيفية عمل التعليمات البرمجية.أتمنى أن يكون لديك اختبارات الوحدة.

أقدر أن هذا سؤال قديم، ولكن لمصلحة أي علماء آثار (أو باحثين) آخرين، من المهم أن نتذكر أن MISRA توفر القواعد الارشادية لا ينبغي دائمًا اتباع ذلك بشكل أعمى.

أوصي بكتابة كود جديد مع وضع MISRA في الاعتبار؛ولذلك سيكون من الأسهل كثيرًا أن تظل متوافقًا.

ومع ذلك، هذا ليس ممكنًا دائمًا - وخاصة عند محاولة إجراء هندسة عكسية للتعليمات البرمجية للوفاء بالإرشادات.في هذه الحالة أقترح عليك التركيز على القواعد المطلوبة، والتعامل مع النصائح كمكافأة...تنطبق فائدة التكلفة مقابل هنا أيضًا!

ضع في اعتبارك أيضًا أن هناك عملية انحراف - فمن الأفضل الحفاظ على رمز نظيف وقابل للصيانة مع وجود انحراف، بدلاً من ابتكار بعض السباغيتي المتوافقة ولكن غير المقروءة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top