2009-11-18 9 views
33

Używamy StyleCop w naszych projektach C#. W niektórych przypadkach chcielibyśmy jednak ominąć reguły. Wiem, że możesz dodać // <auto-generated /> na początku pliku, aby uczynić StyleCop go ignorować. Jednak nie chcę ignorować reguł dla całego pliku - tylko blok kodu w nim.Wyłącz styl StyleCop dla konkretnych linii

Czy mogę wyłączyć StyleCop dla niektórych linii?

Odpowiedz

35

Możesz wyłączyć reguły, dodając atrybuty do bloków kodu. Oto prosty przykład w klasie z blogu połączonego poniżej, ale można to zrobić na różnych członków indywidualnie:

[SuppressMessage("Microsoft.StyleCop.CSharp.DocumentationRules", "SA1600:ElementsMustBeDocumented")] 
public class MyUndocumentedClass 
{ 
    public void MyUndocumentedMethod {} 
} 

Jest quick overview na blogu MSDN i fuller description of the attributes na MSDN.

+0

Dzięki! To powinno zadziałać, chociaż miałem nadzieję na prostsze podejście. Miałem nadzieję na metodę, w której mogę po prostu powiedzieć "zignoruj ​​StyleCop dla tych linii" - zamiast szukać właściwego tekstu dla nazw stylów itp. Oczekując, czy to jest możliwe. – stiank81

+2

AFAIK nie jest możliwe - możliwość tłumienia wiadomości jest dość nowym dodatkiem. – FinnNk

+0

Dzięki. Prawdopodobnie masz rację, ale pozostawiam to pytanie jeszcze trochę ... – stiank81

11

Stary pytanie wiem, ale patrząc na odpowiedź znalazłem, że w StyleCop 4.4 można teraz umieścić coś takiego - albo jedna z tych linii na metodzie:

[SuppressMessage("Microsoft.StyleCop.CSharp.DocumentationRules", "*", Justification = "Risky to change manually")] 
[SuppressMessage("Microsoft.StyleCop.CSharp.SpacingRules", "*", Justification = "Risky to change manually")] 
[SuppressMessage("Microsoft.StyleCop.CSharp.MaintainabilityRules", "*", Justification = "Risky to change manually")] 
[SuppressMessage("Microsoft.StyleCop.CSharp.LayoutRules", "*", Justification = "Risky to change manually")] 
[SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", "*", Justification = "Risky to change manually")] 
[SuppressMessage("Microsoft.StyleCop.CSharp.ReadabilityRules‌​", "*", Justification = "Risky to change manually")] 
[SuppressMessage("Microsoft.StyleCop.CSharp.OrderingRules", "*", Justification = "Risky to change manually")] 
  • Uwaga: ja może brakować jednej lub dwóch kategorii reguł:
+1

Zrobiłem to dla mnie .. FYI, zredagowałem dwie ostatnie wiadomości od czasu, gdy "Microsoft.StyleCop.CSharp" powielono w przestrzeni nazw –

+1

Niedawno musiałem dodać to dla klasy biblioteki i odkryłem, że potrzebuję [SuppressMessage (" Microsoft.StyleCop.CSharp.ReadabilityRules "," * ", Justification =" To jest kod biblioteki ")] oraz –

+1

Kolejność reguł to kolejna rzecz, którą możesz potrzebować dodać:' [SuppressMessage ("Microsoft.StyleCop.CSharp.OrderingRules" , "*", Uzasadnienie = "Ryzykowne zmiany ręcznie")] –

5

Wydaje się, że ten guy ma dobry ogólny zignorować hack; Sugeruje to umieszczenie na początku pliku - przetestowane i pracy z R #

//------------------------------------------------------------------------------ 
// <auto-generated> 
// This code was generated by a tool. 
// </auto-generated> 
//------------------------------------------------------------------------------ 

Handy, gdy jesteś po prostu ubijaniu obecnie obciążenie boilerplate do przestrzegania głównie ZAIMPLEMENTOWANE interfejsu, na przykład.

0

Możesz umieścić fragment kodu pomiędzy nazwą regionu Generowany kod i zostanie on pominięty.

0

Udekoruj klasy lub metodę z następującym StyleCop atrybutu:

[GeneratedCode("Tool Goes Here", "Message Goes Here")] 
Powiązane problemy