Disable StyleCop for specific lines

柔情痞子 提交于 2019-12-03 10:30:36

问题


We're using StyleCop in our C# projects. In some cases we'd like to avoid the rules though. I know you can add // <auto-generated /> in the beginning of the file to make StyleCop ignore it. However, I don't want to ignore the rules for the whole file - only a block of code within it.

Can I disable StyleCop for specific lines somehow?


回答1:


You can suppress rules by adding attributes to blocks of code. Here's a simple example on a class from the blog post linked below, but you can do it on various members individually:

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

There's a quick overview at an MSDN blog post and a fuller description of the attributes on MSDN.




回答2:


An old question I know but in looking for an answer I found that in stylecop 4.4 you can now put something like this - or one of these lines on a method:

[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")]
  • Note: I might be missing one or two of the rule categories



回答3:


This guy seems to have a good general ignore hack; he suggests putting this at the top of the file - tested and working with R#

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

Handy for when you are just churning out a load of boilerplate to adhere to a mainly unimplemented interface, for example.




回答4:


You can put the piece of code between a region name Generated Code and it will be ommited.




回答5:


Decorate your class or method with the following StyleCop attribute:

[GeneratedCode("Tool Goes Here", "Message Goes Here")]


来源:https://stackoverflow.com/questions/1754919/disable-stylecop-for-specific-lines

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!