كيف يمكن تنفيذ التحليل FxCop/الثابت على قاعدة التعليمات البرمجية الموجودة

StackOverflow https://stackoverflow.com/questions/27009

  •  09-06-2019
  •  | 
  •  

سؤال

ما هي بعض الاستراتيجيات المستخدمة عند تنفيذ FxCop/التحليل الثابت على قواعد التعليمات البرمجية الموجودة مع الانتهاكات الموجودة؟كيف يمكن للمرء أن يقلل بشكل فعال من انتهاكات التحليل الثابت؟

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

المحلول

استخدم بشكل ليبرالي سمة [SuppressMessage] للبدء بها.على الأقل في البداية.بمجرد وصولك إلى 0 عبر السمة، يمكنك بعد ذلك وضع قاعدة مفادها أن عمليات تسجيل الدخول الجديدة قد لا تؤدي إلى حدوث انتهاكات لـ FxCop.

يحتوي Visual Studio 2008 على ميزة تحليل التعليمات البرمجية الرائعة التي تسمح لك بالتأكد من تشغيل تحليل التعليمات البرمجية على كل إصدار ويمكنك التعامل مع التحذيرات كأخطاء.قد يؤدي ذلك إلى إبطاء الأمور قليلاً، لذا أوصي بإعداد خادم تكامل مستمر (مثل CruiseControl.NET) وتشغيله لتحليل التعليمات البرمجية في كل تسجيل دخول.

بمجرد السيطرة على الأمر وعدم إدخال انتهاكات جديدة مع كل تسجيل وصول، ابدأ في معالجة فئات كاملة من انتهاكات FxCop في وقت واحد بهدف إزالة SuppressMessageAttributes التي استخدمتها.

الطريقة لتتبع تلك التي تريد حقًا الاحتفاظ بها هي إضافة قيمة التبرير دائمًا إلى تلك التي تريد حقًا منعها.

نصائح أخرى

أعد كتابة التعليمات البرمجية الخاصة بك بأسلوب عابر!

على محمل الجد، ستحتوي قاعدة التعليمات البرمجية القديمة على مئات الأخطاء - ولكن لهذا السبب لدينا مبرمجون مبتدئون/متدربون.يعد تصحيح انتهاكات FxCop طريقة رائعة للحصول على نظرة عامة على قاعدة التعليمات البرمجية وكذلك تعلم كيفية كتابة كود .NET المطابق.

لذا، ما عليك سوى تناول الرصاصة، وشرب الكثير من الكافيين، وتجاوز الأمر في غضون يومين!

نديبند يشبه يمكنها أن تفعل ما تسعى إليه، لكنني لست متأكدًا من إمكانية دمجها في البنية الآلية لـ CruiseControl.Net، وفشل الإنشاء إذا كان الكود لا يفي بالمتطلبات (وهو ما أود أن أفعله) يحدث).

هل هناك أي أفكار أخرى؟

سيكون البديل لـ FxCop هو استخدام الأداة نديبند.تتيح لك هذه الأداة الكتابة قواعد التعليمات البرمجية على استعلامات C# LINQ (ما نسميه CQLinq). تنصل:أنا أحد مطوري الأداة

أكثر من 200 قواعد الكود يتم اقتراحها بشكل افتراضي.يعد تخصيص القواعد الحالية أو إنشاء القواعد الخاصة بك أمرًا سهلاً بفضل معروف بناء جملة C# LINQ.

لإبقاء عدد النتائج الإيجابية الكاذبة منخفضًا، يوفر CQLinq إمكانات فريدة لتحديد المجموعة JustMyCode من خلال استعلامات التعليمات البرمجية الخاصة المسبوقة بـ notmycode.ويمكن العثور على مزيد من التوضيحات حول هذه الميزة هنا.وهنا على سبيل المثال اثنين notmycode الاستعلامات الافتراضية:

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

warnif count > 0 
from m in Methods
where m.CyclomaticComplexity > 20 &&
      m.WasAdded() || m.CodeWasChanged()
select new { m, m.CyclomaticComplexity }

أخيرًا، لاحظ أنه باستخدام قواعد كود NDepend يمكن التحقق من صحتها العيش في Visual Studio وفي وقت عملية البناء، في أ تم إنشاء تقرير HTML + جافا سكريبت.

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