سؤال

في أحد المشاريع التي أعمل عليها، يظهر لي FxCop الكثير من الأخطاء (وأعني أكثر من 400) في أساليب التهيئة الأولية () التي تم إنشاؤها بواسطة مصمم نماذج Windows.معظم هذه الأخطاء هي مجرد تعيين خاصية النص للتسميات.

أرغب في منع هذه الأساليب في المصدر، لذلك قمت بنسخ رمز المنع الذي تم إنشاؤه بواسطة FxCop إلى AssemblyInfo.cs، لكنه لا يعمل.

هذه هي السمة التي نسخها FxCop إلى الحافظة.

[module: SuppressMessage("Microsoft.Globalization",
    "CA1303:DoNotPassLiteralsAsLocalizedParameters",
    Scope = "member",
    Target = "WindowsClient.MainForm.InitializeComponent():System.Void",
    MessageId = "System.Windows.Forms.Control.set_Text(System.String)")]

هل يعرف أحد السمة الصحيحة لمنع هذه الرسائل؟

ملاحظة:أنا أستخدم Visual Studio 2005، C#، FxCop 1.36 بيتا.

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

المحلول

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

نصائح أخرى

في FxCop 1.36 يوجد بالفعل خيار مشروع في علامة التبويب "التدقيق الإملائي والتحليل" والذي سيمنع التحليل لأي كود تم إنشاؤه.

إذا كنت لا تريد إيقاف تشغيل التحليل لجميع التعليمات البرمجية التي تم إنشاؤها، فستحتاج إلى التأكد من إضافة رمز CODE_ANALYSIS إلى قائمة رموز الترجمة الشرطية (خصائص المشروع، علامة التبويب Build).بدون تعريف هذا الرمز، ستتم إزالة سمات SupressMessage من التعليمات البرمجية المترجمة لذلك لن يراها FxCop.

المشكلة الأخرى في سمة SuppressMessage الخاصة بك هي أنك تقوم بإدراج "هدف" لاسم أسلوب محدد (في هذه الحالة WindowsClient.MainForm.InitializeComponent():System.Void) وإدراج "نطاق" محدد.قد ترغب في محاولة إزالة هذه؛وإلا فيجب عليك إضافة SuppressMessage إلى كل مثيل للطريقة.

يجب عليك أيضًا الترقية إلى نسخة آر تي إم من FxCop 1.36، لن يكتشف الإصدار التجريبي تلقائيًا الإصدار الأحدث.

يجب لصق رسائل منع مستوى الوحدة النمطية في نفس الملف مثل التعليمات البرمجية التي تؤدي إلى ظهور خطأ FxCop قبل إعلان مساحة الاسم أو في Assemblyinfo.cs.بالإضافة إلى ذلك، ستحتاج إلى تعريف CODE_ANALYSIS كرموز مترجم شرطي (Project > Properties > Build).بمجرد الانتهاء من ذلك، قم بإعادة بناء المشروع بالكامل وفي المرة التالية التي تقوم فيها بتشغيل FxCop، يجب نقل الخطأ إلى علامة التبويب "مستبعد في المصدر".

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

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