2014-02-19 53 views
1

我使用所有相同的規則ID構建了多個規則集文件,但包含的MS規則集的升序級別和一些規則的Action的嚴重性增加。我遇到的問題是VS2010告訴我,在FXCop_VS2010_HIGLevel1.ruleset加載正常時加載我的FXCop_VS2010_HIGLevel2.ruleset文件時出錯。他們本質上看起來是一樣的:我的FXCop規則集有什麼問題?

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> 

你可以看到,他們基本上是相同的。 Level 2添加了BasicDesignGuidelineRules.ruleset並更改了某些規則的操作(即CA1000從級別1的「無」變爲級別2的「警告」)。

這是我從VS2010得到當我把2級規則集文件爲靜態分析工具\規則錯誤集文件夾:

VS 2010 error message

任何想法,爲什麼發生這種情況?我一行一行地經歷了Level 2的XML,並且運行了一個與Level 1相比較的文件。唯一的區別是我期望的。我使用Notepad ++在適當的位置顯示非打印字符和CRLF以外的內容。我很難過。

+0

不幸的是,我無法重現與您的帖子中的信息相關的問題。您可以通過啓用和檢查Visual Studio活動日誌(http://msdn.microsoft.com/zh-cn/library/ms241272(v=vs.100).aspx)來發現更多詳細信息。否則,你能否發佈一個更完整的二級規則集版本來解決問題? –

+0

無法附加文件(有嗎?),我沒有辦法將它從外部保存起來以提供鏈接。
有太多內容要將它作爲代碼發佈在評論中。有關如何發佈整個文件的任何建議?順便說一句 - 我能夠通過將所有的「Action =」CriticalError「」和「Action =」CriticalWarning「」分別更改爲「錯誤」和「警告」來擺脫錯誤。我不知道爲什麼這突然開始發生。 「CriticalError」和「CriticalWarning」是有效的操作。他們在我的原始規則集。我添加了額外的規則,並突然將它們作爲Action的無效值... –

回答

0

當您在評論中發表意見時,您表示在將操作從CriticalWarning更改爲WarningCriticalErrorError後問題得到解決。

這種行爲在這裏解釋:http://msdn.microsoft.com/en-us/library/dd380626.aspx

你一定誤會了在自定義規則MessageLevel property XML的文件的操作。在這個屬性,你可以設置以下值:

  1. 嚴重錯誤 - 與此級別報告的問題,有較高的知名度和識別的代碼不會在 最常見的情況正常運行。這些問題應該先解決。你不應該排除這個級別的問題。
  2. 錯誤 - 此級別的問題具有較低的可見性和影響。但它仍然會識別需要解決的代碼中的問題。如果不仔細考慮,這些問題也不應排除。
  3. 嚴重警告 - 此級別主要用於代碼的可維護性問題。該代碼工作正常,但不夠理想。僅在仔細考慮 後才排除此類消息。
  4. 警告 - 具有此級別的消息正在識別代碼中可維護性,可擴展性和穩定性方面的問題。
  5. 信息 - 有關代碼的信息性消息。
+0

幾個星期前,我終於找到並找出了它。我忘了更新這個線程。感謝您的迴應。 –

相關問題