उत्तर

1

यदि आप कंसोल धावक का उपयोग करते हैं तो आप किसी विधि, प्रकार या असेंबली पर किसी भी दोष को दबाने के लिए एक दोष फ़ाइल (आउट-ऑफ-सोर्स) का उपयोग कर सकते हैं।

नया Gendarme 2.8 में [SuppressMessage] विशेषता (fxcop के समान) के लिए मूल (अपूर्ण और छोटी गाड़ी) समर्थन है। एक बार 2.10 जारी होने के बाद इस सुविधा को ठीक से काम करने की अपेक्षा करें।

0

जहाँ तक मैं देख सकता हूं, [SuppressMessage] को Gendarme (2.8 पर) में सक्षम करने का कोई तरीका नहीं है। मैंने गिटहब के नवीनतम स्रोत को पकड़ लिया, क्योंकि यह वर्णित के रूप में काम नहीं कर रहा था।

SupressMessageEngine कोड में है, और Runner.Engines के मैन्युअल ओवरराइड के माध्यम से इसका परीक्षण करने वाले परीक्षण हैं। सदस्यता लें। लेकिन [इंजन पर निर्भरता (टाइपोफ (SuppressMessageEngine))] सभी संकलित नियमों पर लागू नहीं होती है, इस प्रकार जब गेंडर्म वास्तव में चलता है तो यह सदस्यता लेता है।

मैंने कॉन्फ़िगरेशन के माध्यम से हमेशा किसी विशेष इंजन की सदस्यता लेने का तरीका खोजने के लिए स्रोत को देखा - लेकिन कोई भी नहीं है।

मैं गलत हो सकता था, लेकिन ऐसा लगता है कि वे वापस जाने और उचित इंजन निर्भरता विशेषताओं को लागू करने के लिए भूल गए थे।

एकमात्र "वर्कअराउंड" जिसे मैं सोच सकता हूं वह एक कस्टम नियम लिखना है जिसे बुलाया जाता है, एक सदस्यता SuppressMessageEngine जोड़ता है और कुछ भी नहीं करता है। हैकी हाँ, लेकिन यह काम करना चाहिए जो मैंने उनके कोड में देखा है।

एफवाईआई - बस इसे लागू किया गया। आप इस FxCopCompatibility में जिम्मेदार बताते हैं कि वहाँ (यानी एक SupressMessage हैं खींच नहीं होगा 3,5

using Gendarme.Framework; 
using Gendarme.Framework.Engines; 

namespace MyRules 
{ 
    [Problem("Gendarme devs forgot to attribute rules with SuppressMessageEngine")] 
    [Solution("Include this rule")] 
    [EngineDependency(typeof(SuppressMessageEngine))] 
    public class AddSuppressMessageSupportRule : Rule {} 
} 

दुर्भाग्य से अपने स्वयं के कस्टम नियम, आयात Mono.Cecil और Gendarme.Framework और लक्ष्य नेट ढांचा तैयार करने की जरूरत है, एक Gxarme नियम से मेल खाने वाले FxCop नियम के लिए भी Gendarme नियम दबाएगा), लेकिन कम से कम यह आपको Gendarme नामों को दबाने के लिए उपयोग करने देता है।

5

जैसा कि पहले से ही नोट किया गया है, संस्करण 2.10 [SuppressMessage] विशेषता का समर्थन करता है।

उदाहरण के लिए, AvoidNonAlphanumericIdentifierRule शासन को दबाने के लिए, ऐसा करते हैं:

[SuppressMessage("Gendarme.Rules.Naming", "AvoidNonAlphanumericIdentifierRule")] 
protected void Application_Start() 
{ 
    ... 
} 

ध्यान दें कि आप विधानसभा जहां शासन रहता है ... इस मामले में, AvoidNonAlphanumericIdentifierRule जेनदार्म में रहती का नाम निर्दिष्ट करने की जरूरत है। Rules.Naming.dll। नियमों और उनके असेंबली नामों की पूरी सूची here है।

+5

यह ध्यान दिया जाना चाहिए कि असेंबली को 'CODE_ANALYSIS' प्रतीक के साथ संकलित किया जाना चाहिए [इसके लिए काम करने के लिए] [http://www.mono-project.com/Gendarme.FAQ#Why_are_defects_decorated_using_.5BSuppressMessage.5D_attributes_still_showing_in_my_reports_.3F)। –

+0

साथ ही, नवीनतम संस्करण FxCop संगतता जोड़ते हैं, इसलिए यदि आपके पास पहले से FxCop से एक SuppressMessage है और Gendarme में समकक्ष नियम है, तो संदेश दबा दिया जाएगा। –

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

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