मैं हमारी परियोजनाओं में स्थिर कोड विश्लेषण का उपयोग संहिता के उल्लंघन के लिए जाँच करने के लिए। बड़े पैमाने पर इस्तेमाल किए गए नियमों में से एक सीए 2213 है, जो डिस्पोजेबल फ़ील्ड के सही निपटान के लिए जांच करता है।CA2213 कोड विश्लेषण नियम और ऑटो कार्यान्वित गुण
मैं CA2213 ऑटो कार्यान्वित गुण के निपटान की जाँच नहीं करता देखा।
इसके अलावा CA2213 न खेतों और न ही ऑटो कार्यान्वित गुण के निपटान अगर वर्ग वर्ग जो IDisposable लागू करता है और निपटान विधि पर हावी नहीं होता से विरासत जांच नहीं करता।
व्यावहारिक उदाहरण:
public sealed class Good : IDisposable {
private Font font;
public Font Font {
get { return font; }
set { font = value; }
}
public Good() { font = new Font("Arial", 9); }
public void Dispose() { /* Do nothing */ } // CA2213
}
public sealed class Bad : IDisposable {
public Font Font { get; set; }
public Bad() { Font = new Font("Arial", 9); }
public void Dispose() { /* Do nothing */ } // No warning
}
किसी और को इस व्यवहार का सामना करना पड़ा है? क्या यह CA2213 नियम में डिज़ाइन या बग द्वारा है?
यदि आप सूचीबद्ध करते हैं, तो कोड विश्लेषण में अभी भी आपको कुछ तरीकों से 'f' को संभालने की आवश्यकता होती है, आमतौर पर मैन्युअल रूप से दबाने से और इंजेक्शन फ़ील्ड वर्तमान वर्ग के स्वामित्व में नहीं है। यह मेरे लिए एक अच्छा समाधान है। एक अच्छा समाधान क्या नहीं है, कोड विश्लेषण समस्या बिल्कुल नहीं दिखा रही है, क्योंकि केवल 'एफ' एक ऑटोप्रोपर्टी है या क्योंकि फील्डआई इंजेक्शन एक आईडीस्पोजेबल क्लास से निकला है और ओवरराइड नहीं करता है (बूल) –