Visual studio 2010 什么';我的FXCop规则集有什么问题?

Visual studio 2010 什么';我的FXCop规则集有什么问题?,visual-studio-2010,fxcop,Visual Studio 2010,Fxcop,我正在使用所有相同的规则ID构建几个规则集文件,但会提升包含的MS规则集的级别,并增加某些规则的操作的严重性。我遇到的问题是,VS2010告诉我加载我的FXCop_VS2010_HIGLevel2.ruleset文件时出错,而FXCop_VS2010_HIGLevel1.ruleset加载正常。它们基本上看起来是一样的: FXCop_VS2010_HIGLevel1.ruleset <?xml version="1.0" encoding="utf-8"?> <Rule

我正在使用所有相同的规则ID构建几个规则集文件,但会提升包含的MS规则集的级别,并增加某些规则的操作的严重性。我遇到的问题是,VS2010告诉我加载我的FXCop_VS2010_HIGLevel2.ruleset文件时出错,而FXCop_VS2010_HIGLevel1.ruleset加载正常。它们基本上看起来是一样的:

FXCop_VS2010_HIGLevel1.ruleset

    <?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="HIG VS2010 Code Analysis Rules Level 1" Description="These rules expand on the basic design guideline rules to maximize the usability and maintainability issues that are reported. Extra emphasis is placed on naming guidelines. Consider including this rule set if your project includes library code or if you want to enforce the highest standards for writing maintainable code." ToolsVersion="10.0">
  <Include Path="BasicCorrectnessRules.ruleset" Action="Default" />
  <Include Path="SecurityRules.ruleset" Action="Default" />
  <Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis" RuleNamespace="Microsoft.Rules.Managed">
    <Rule Id="CA1000" Action="None" />
    <Rule Id="CA1001" Action="None" />
    ...
    <Rule Id="CA2239" Action="Warning" />
    <Rule Id="CA2240" Action="None" />
    <Rule Id="CA2242" Action="None" />
    <Rule Id="CA2243" Action="None" />
  </Rules>
</RuleSet>

...
FXCop_VS2010_HIGLevel2.ruleset

    <?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="HIG VS2010 Code Analysis Rules Level 2" Description="These rules expand on the basic design guideline rules to maximize the usability and maintainability issues that are reported. Extra emphasis is placed on naming guidelines. Consider including this rule set if your project includes library code or if you want to enforce the highest standards for writing maintainable code." ToolsVersion="10.0">
  <Include Path="BasicCorrectnessRules.ruleset" Action="Default" />
  <Include Path="BasicDesignGuidelineRules.ruleset" Action="Default" />
  <Include Path="SecurityRules.ruleset" Action="Default" />
  <Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis" RuleNamespace="Microsoft.Rules.Managed">
    <Rule Id="CA1000" Action="Warning" />
    <Rule Id="CA1001" Action="None" />
    ...
    <Rule Id="CA2239" Action="Warning" />
    <Rule Id="CA2240" Action="None" />
    <Rule Id="CA2242" Action="None" />
    <Rule Id="CA2243" Action="None" />
  </Rules>
</RuleSet>

...
你可以看到它们本质上是一样的。级别2添加BasicDesignGuidelineRules.ruleset并更改某些规则上的操作(即CA1000从级别1的“无”变为级别2的“警告”)

这是我将级别2规则集文件放入静态分析工具\规则集文件夹时从VS2010中得到的错误:


知道为什么会这样吗?我逐行检查了Level 2 XML,并运行了一个与Level 1比较的文件。唯一的区别是我所期望的。我使用记事本++在适当的位置显示非打印字符和CRLF以外的内容。我被难住了

如您在评论中所述,您说将操作从
关键警告更改为
警告,并将
关键错误更改为
错误后,问题得到解决

这里解释了这种行为:

您一定是将操作误认为是自定义规则XML文件中的
MessageLevel属性
。在此属性中,可以设置以下值:

  • 严重错误–此级别报告的问题具有很高的可见性,并且识别的代码在中无法正确运行 最常见的场景。这些问题应该首先得到解决。你 不应排除此级别的问题
  • 错误–此级别的问题的可见性和影响较小。但它仍然可以识别代码中需要解决的问题。而且 如果不仔细考虑,就不应排除这些问题
  • 严重警告–此级别主要用于代码的可维护性问题。代码工作正常,但是 不太理想。只有在仔细检查后才能排除此类消息 考虑
  • 警告–此级别的消息用于识别代码中有关可维护性、可扩展性和稳定性的问题
  • 信息性–有关代码的信息性消息

  • 不幸的是,我无法用你帖子中的信息重现这个问题。您可以通过启用和检查Visual Studio活动日志()来发现更多详细信息。否则,您能否发布一个更完整的2级规则集版本,以便重现问题?无法附加文件(是否存在?),我也无法将其保存到外部以提供链接。
    内容太多,无法将其作为代码发布在注释中。关于如何发布整个文件有什么建议吗?顺便说一句,我能够通过将所有“Action=“CriticalError”和“Action=“CriticalWarning”分别更改为“error”和“Warning”来消除错误。我不知道为什么这突然发生了。“CriticalError”和“CriticalWarning”是有效的操作。它们在我最初的规则中。我添加了额外的规则,但突然之间,这些规则对操作来说是无效的……我终于找到了这些规则,并在几周前找到了答案。我忘了更新这个线程。谢谢你的回复。