如何抑制StyleCop错误SA0102:CSharp.CsParser:使用泛型类型参数属性时在文件中发现语法错误

时间:2013-12-13 09:47:35

标签: c# generics code-analysis stylecop

使用以下带有泛型类型参数属性的C#代码:

[System.AttributeUsage(System.AttributeTargets.GenericParameter)]
public class GenericParameterAttribute : System.Attribute
{
}
public class GenericClass<[GenericParameter] T>
{
}

打开StyleCop集成(在.csproj文件中导入StyleCop.targets) StyleCop返回错误并且编译失败:

  

错误1 SA0102:CSharp.CsParser:在文件中发现语法错误...

没有在.csproj文件中导入的StyleCop.targets编译好。

环境

我在StyleCop文档站点http://www.stylecop.com/docs/StyleCop%20Rules.html上找不到代码SA0102 - 似乎SA0102不是StyleCop规则,可能是内部StyleCop错误的代码。

所以问题:如何抑制StyleCop错误SA0102?

2 个答案:

答案 0 :(得分:10)

使用这种属性似乎无法抑制此错误:

[SuppressMessage("StyleCopNameSpace", "SA0102:RuleNameHere")] 

与此Post相关,当StyleCop遇到内部错误时会显示此消息:

  

jasonall   2010年5月18日晚上10点:实际上无法抑制SA0101或SA0102。这些是特殊情况“规则”,只要StyleCop遇到内部错误就会抛出这些规则。唯一可行的解​​决方法是从分析中完全禁用此文件,或者在升级到StyleCop 4.4之前停止使用可选参数。

答案 1 :(得分:4)

在.csproj文件中查找要从StyleCop中排除的文件,并添加ExcludeFromStyleCop元素,如下所示

<Compile Include="<filename>.cs">
  <ExcludeFromStyleCop>True</ExcludeFromStyleCop>
</Compile>