2010-07-20 17 views
48

मैं स्टाइलकॉप का उपयोग कर रहा हूं और कुछ चेतावनी दबाना चाहता हूं जो मेरी शैली के अनुरूप नहीं है। मैंस्टाइलकॉप चेतावनी को दबाने के लिए कैसे?

1 के लिए समाधान के लिए)
2) वैश्विक सेटिंग

दबा मैं इंटरनेट लेकिन still not sure कैसे दबाने करने के लिए खोज की है दबाने में लाइन कोड पसंद करते हैं। ,

[विधानसभा:: SuppressMessage ("Microsoft.Design", "सभी निजी तरीकों सभी सार्वजनिक तरीकों के बाद रखा जाना चाहिए SA1202"

विधि के लिए 1), वे लाइनों को जोड़ने के लिए कहा स्कोप = "नाम स्थान", लक्ष्य = "Consus.Client.ClientVaultModule.Services.OnlineDetection")]

लेकिन वे नहीं कहते जहां और जो नाम स्थान में इस्तेमाल किया जा करने के लिए।

विधि 2 के लिए), उन्होंने ग्लोबल सूपप्रेस फ़ाइल का उपयोग करने के लिए कहा लेकिन इस समय इसे कैसे करना है, यह खोजना आसान नहीं लगता है।

कृपया मदद करें।

[संपादित] मेरे मामले में, मैं चेतावनी के बारे में SA1202 है: सभी निजी तरीकों सभी सार्वजनिक तरीकों जो मैं समूह के बाद से क्षेत्रों में मेरी संबंधित कोड परेशान कर रहा है के बाद रखा जाना चाहिए। मैं कुछ चेतावनियों के लिए उन चेतावनियों को दबाना चाहता हूं।

+3

आदर्श रूप में राइट क्लिक करें 'दबाने' या सही,, ( आप नाम स्थान कि नियम है, यहां पाया जा सकता है जो होता है की आवश्यकता होगी -क्लिक, 'फिक्स')। लेकिन स्टाइलकॉप मासोचिस्ट्स द्वारा लिखा गया था, इसलिए आपको अपनी सभी समस्याओं को हाथ से ठीक करना होगा। यदि कभी मशीन द्वारा किया जाने वाला काम किया गया था, तो यह है। कितना बेकार है। –

उत्तर

4

क्या आप बस अपना कोड भरने के बजाय नियम हटा सकते हैं?

ही FxCop के लिए चला जाता है ...

+0

मैंने अभी कारण जोड़ा है कि मैं कोड को एकमात्र क्यों नहीं कर सकता। कृपया मेरा संपादित प्रश्न देखें। –

6

आप StyleCop स्थापित किया है, तो आप अपनी परियोजना को राइट-क्लिक कर सकते हैं और वहाँ एक StyleCop विकल्प होगा। इसे क्लिक करें और आप देखेंगे कि आप कुछ नियमों को अपने प्रोजेक्ट के खिलाफ भी चलने से रोक सकते हैं। इसके अलावा, आप विभिन्न परियोजनाओं के बीच साझा करने के लिए एक अलग नियम फ़ाइल बना सकते हैं। इसका अर्थ यह है कि आप नियमों को एक बार जिस तरह से चाहते हैं उसे कॉन्फ़िगर कर सकते हैं और फिर अपनी सभी परियोजनाओं के बीच उस कॉन्फ़िगरेशन को साझा कर सकते हैं।

व्यक्तिगत ओवरराइड के लिए, SuppressMessage जाने का रास्ता है।

18

इनलाइन दमन का एक उदाहरण इस के समान होगा - दमन

namespace Soapi 
{ 
     ///<summary> 
     ///</summary> 
     ///<param name = "message"></param> 
     ///<param name = "statusCode"></param> 
     ///<param name = "innerException"></param> 
     [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object,System.Object)")] 
     public ApiException(string message, ErrorCode statusCode, Exception innerException) 
      : base(String.Format("{0}\r\nStatusCode:{1}", message, statusCode), innerException) 
     { 
      this.statusCode = statusCode; 
     } 

एक वैश्विक अधिक्रमण फ़ाइल की तुलना में कोड में नामस्थान जांच GlobalSuppressions.cs नामित और लग सकता है अपनी परियोजना के रूट में एक फाइल है इस तरह:

// This file is used by Code Analysis to maintain SuppressMessage 
// attributes that are applied to this project. 
// Project-level suppressions either have no target or are given 
// a specific target and scoped to a namespace, type, member, etc. 
// 
// To add a suppression to this file, right-click the message in the 
// Error List, point to "Suppress Message(s)", and click 
// "In Project Suppression File". 
// You do not need to add suppressions to this file manually. 

[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.String.Format(System.String,System.Object,System.Object,System.Object)", Scope = "member", Target = "Soapi.ApiException.#.ctor(System.String,Soapi.ErrorCode,System.String,System.Exception)")] 

और आप चेतावनी पर राइट-क्लिक करके स्वचालित रूप से यह कोड उत्पन्न कर सकते हैं।

+3

मैंने चेतावनी (त्रुटि/चेतावनी सूची में) पर राइट-क्लिक करने का प्रयास किया है लेकिन कोई संदर्भ मेनू आइटम मुझे इसे हल करने की अनुमति नहीं देता है। मैं वीएस 2010 का उपयोग कर रहा हूँ। क्या आप जानते हैं क्यों? –

+0

@Nam - निश्चित नहीं है, उदाहरण मैं उद्धृत बनाम बनाम 2008 का उपयोग कर रहा हूं। मुझे 2010 में आग लगने दो और एक झलक लेना। –

+0

@poet: मैंने यहां अपना संबंधित प्रश्न पोस्ट किया है http://stackoverflow.com/questions/3287957/how-to-supress-stylecop-warning-sa1201-all-methods-must-be-placed-after-all- समर्थक –

44

यहाँ आप क्या जरूरत है:

[SuppressMessage("Microsoft.StyleCop.CSharp.OrderingRules", "SA1202:ElementsMustBeOrderedByAccess")] 
+7

आपने उन दो जादू तारों को कैसे घटाया? सभी ओपी पोस्ट कोड 'SA1202' था। मुझे एक समान समस्या है (कोड 'SP0100') और मैं संबंधित तारों को कम नहीं कर सकता। –

+0

@ कोलोनेल आतंक: जब आप इसे चलाते हैं तो आप StyleCop चेतावनी संदेश से पहली स्ट्रिंग प्राप्त कर सकते हैं। जैसे "SA1202: सीएसएचआरपी। ऑर्डरिंग नियम: ब्लाब्लाह"। फिर स्टाइलकॉप सेटिंग्स फ़ाइल को संपादक के साथ खोलें और वास्तविक नियम और उसका संक्षिप्त नाम ढूंढने के लिए एसए कोड के साथ खोजें। – Hirvox

+6

यदि आप http://www.stylecop.com/docs/SA1202.html (या अन्य चेतावनियों के लिए समान पृष्ठ यूआरएल) पर जाते हैं तो आप दबाने वाले संदेश वाक्यविन्यास के बहुत स्पष्ट विवरण प्राप्त कर सकते हैं। – Seph

1

वैकल्पिक रूप से आप आंशिक वर्गों में क्षेत्रों में कोड को स्थानांतरित कर सकते हैं। फिर स्टाइलकॉप नियम के साथ समस्या दूर हो जाएगी।

9

स्टाइलकॉप 4.3 से शुरू हो रहा है।2, स्रोत कोड के भीतर दमन गुण जोड़कर नियम उल्लंघन की रिपोर्टिंग को दबाना संभव है।

नियम छिपाता http://stylecop.soyuz5.com/Suppressions.html

लेकिन यह कहते हैं -

वैश्विक रूप से छिपाता

StyleCop वैश्विक रूप से छिपाता या फ़ाइल स्तर छिपाता की धारणा का समर्थन नहीं करता। दमन तत्व कोड पर रखा जाना चाहिए।

+0

एक ही जानकारी प्रदान की जाती है यहाँ भी - http://blogs.msdn.com/b/sourceanalysis/archive/2009/08/10/rule-suppressions.aspx – akjoshi

2

1. आपके मामले में, सही SuppressMessage विशेषता की तरह निम्नलिखित की तरह करना चाहिए:

[SuppressMessage("StyleCop.CSharp.OrderingRules", "SA1202:ElementsMustBeOrderedByAccess")] 
private void SomeMethod() 
{ 
} 

ध्यान दें कि आप किसी भी अन्य तत्व (जैसे पर रख सकते हैं वर्ग पर - तो सब इसी प्रकार के उल्लंघन पूरी कक्षा में दबाया जाएगा)।

मैं यह भी मानता हूं कि इन क्षेत्रों में क्या लिखना बेहद अनजान है।

दरअसल, पहला व्यक्ति स्टाइलकॉप विश्लेषक वर्ग का पूर्णतः योग्य नाम होना चाहिए और स्रोत कोड से प्राप्त किया जा सकता है (उदा। here से)। दूसरा व्यक्ति नियम कोड से शुरू होना चाहिए, फिर कॉलन और नियम गणना का नाम (सौभाग्य से, यह हमेशा सेटिंग्स संपादक में प्रदर्शित नियम नाम जैसा दिखता है, लेकिन बिना सफेद जगहों के)।

2. नियमों को दबाने के संबंध में "वैश्विक स्तर पर" - सेटिंग्स संपादक के माध्यम से उन्हें क्यों न बंद करें? सेटिंग्स फ़ाइलों को फ़ाइल सिस्टम के माध्यम से विरासत में प्राप्त किया जाता है, ताकि आप आसानी से कुछ "परियोजनाओं" के लिए अपवादों के साथ अपने फ़ोल्डर संरचना के "शीर्ष" पर एक "मुख्य" सेटिंग्स फ़ाइल और कुछ अन्य फाइलें (मुख्य से "अंतर" धारण कर सकें) यदि आप ऐसा चाहते हैं (जैसे here वर्णित)।

शुभकामनाएं!

2

स्टाइल कॉप से ​​सलाह पढ़ें, अल्फान्यूमेरिक कोड की तलाश में। आपके मामले में 'SA1202'। फिर स्टाइल कॉप वेबसाइट पर संबंधित पृष्ठ पर ब्राउज़ करें। यूआरएल को उचित http://www.stylecop.com/docs/SA1202.html

'उल्लंघन को कैसे दबाएं' लेबल वाली रेखा की प्रतिलिपि बनाएँ। श्रेणी से ऊपर विशेषता पेस्ट के बारे में जो शैली कॉप moans

[SuppressMessage("StyleCop.CSharp.OrderingRules", "SA1202:ElementsMustBeOrderedByAccess", Justification = "Reviewed.")] 
0

आप नियमों निष्क्रिय कर सकते हैं आप Settings.StyleCop फ़ाइल है, जो परियोजना रूट फ़ोल्डर में है में नहीं करना चाहती। http://stylecop.soyuz5.com/StyleCop%20Rules.html

Settings.stylecop फ़ाइल कोड आपके संदर्भ के लिए:

<StyleCopSettings Version="105"> 
    <Analyzers> 
    <Analyzer AnalyzerId="StyleCop.CSharp.LayoutRules"> 
     <Rules> 
     <Rule Name="ElementsMustBeSeparatedByBlankLine"> 
      <RuleSettings> 
      <BooleanProperty Name="Enabled">False</BooleanProperty> 
      </RuleSettings> 
     </Rule> 
     </Rules> 
     <AnalyzerSettings /> 
    </Analyzer> 
    </Analyzers> 
</StyleCopSettings> 
+0

यह अधिक उपयोगी हो सकता है अगर आप कुछ उदाहरण दिखा सकता se ओपी शायद ttings चाहता है। – sorak

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