2009-09-03 13 views
5

मैं अपने कोड को बेहतर बनाने के लिए स्टाइलकॉप और FxCop टूल का उपयोग कर रहा हूं, लेकिन मैं ऐसे स्थान पर आया जहां दो नियम हैं, स्टाइलकॉप में से एक और FxCop में से एक जो एक-दूसरे को छोड़ देता है। यदि मैं स्टाइलकॉप से ​​नियम से मेल खाने के लिए अपना कोड ठीक करता हूं तो FxCop सत्यापन विफल रहता है और इसके विपरीत।स्टाइलकॉप और FxCop नियम एक दूसरे को

पहला नियम स्टाइलकॉप से ​​SA1200 है जो कहता है कि सभी निर्देशों का उपयोग नामस्थान के अंदर रखा जाना चाहिए।

सभी निर्देशों का उपयोग नामस्थान के अंदर रखा जाना चाहिए।

तो मैं इस

namespace MyNamespace 
{ 
    using System; 

    ... 
} 

यह StyleCop, कोई और अधिक चेतावनियों के लिए ठीक था की तरह कुछ किया है। अब मैं FxCop सत्यापन चलाने के लिए और यह मुझसे कहता है कि CA1014 का उल्लंघन किया जाता है:

मार्क साथ CLSCompliant (सही) 'MyApp.dll' क्योंकि यह बाहर से दिखाई देने प्रकार उजागर करता है।

इसके समाधान के लिए मैं कुछ इस तरह करना चाहिए:

[ClsCompliant(true)] 
namespace MyNamespace 
{ 
    ... 
} 

लेकिन अब मैं अपने प्रोजेक्ट का निर्माण नहीं कर सकते क्योंकि ClsCompliant विशेषता मान्यता प्राप्त नहीं है (क्योंकि यह System नाम स्थान जो मैं MyNamespace के अंदर शामिल से है) । तो अगर मैं निर्देश MyNamespace घोषणा के बाहर ले जाता हूं। यह मेरा कोड संकलित करेगा लेकिन फिर से यह स्टाइलकॉप से ​​नियम तोड़ देगा।

क्या स्टाइलकॉप या FxCop में नियमों को अक्षम करने के अलावा इस समस्या से निपटने का कोई तरीका है? और यदि यह संभव नहीं है कि नियमों में से कौन से नियमों को अक्षम करना चाहिए? जो कम महत्वपूर्ण है?

उत्तर

15

उपयोग पूर्ण विशेषता नाम:

[System.CLSCompliant(true)] 
namespace MyNamespace 
{ 
    ... 
} 

Btw: अगर तुम, CLSCompliant के रूप में अपने पूरे विधानसभा में चिह्नित करना चाहते गुण में

[assembly: System.CLSCompliant(true)] 

डाल/AssemblyInfo.cs फ़ाइल

+4

मुझे लगता है कि विधानसभा को CLSCompliant चिह्नित किया जाना चाहिए क्योंकि नामस्थान अनुपालन को चिह्नित करने के बजाय मासीजको ने बताया। –

3

मेरे सुझाव "सभी प्रयोग निर्देशों को नामस्थान के अंदर रखा जाना चाहिए" को बंद करना है। StyleCop में नियम। यह पालन करने के लिए अव्यवहारिक है, खासतौर पर चूंकि अधिकांश जनरेटर (यहां तक ​​कि वीएस स्वयं भी) इस अभ्यास का पालन नहीं करते हैं।

+0

मुझे लगता है कि जेनरेट की गई फ़ाइलों को अनदेखा करने के लिए स्टाइलकॉप सेट करना बेहतर है। – RaYell

+2

हां, यदि वे उचित विशेषता के साथ चिह्नित हैं। दुर्भाग्यवश कुछ कोड जेनरेटर जेनरेट कोड को चिह्नित नहीं करते हैं। –

संबंधित मुद्दे