【问题标题】:Fxcop custom rule not showing in Fxcop GUIFxcop 自定义规则未显示在 Fxcop GUI 中
【发布时间】:2012-10-17 11:38:11
【问题描述】:

我创建了一个 Fxcop 自定义规则并定义了 xml 文件。当我在 Fxcop GUI 中添加自定义规则程序集时,它没有显示规则。请在下面找到相关信息:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.FxCop.Sdk;

namespace TestCustomRules
{
    public class TestRule : BaseIntrospectionRule
    {
        public TestRule() : base("TestRule", "TestCustomRules.TestRules", typeof(TestRule).Assembly) { }

        public override ProblemCollection Check(Member member)
        {
            Problems.Add(new Problem(new Resolution("TEST Rule {0}", "Chill out")));
            return Problems;
        }
    }
}

xml文件:

<?xml version="1.0" encoding="utf-8" ?>
<Rules FriendlyName="Test Rules">
  <Rule TypeName="TestRule" Category="TestRule" CheckId="TR1000">
    <Name>Test Rule</Name>
    <Description>Test Rule</Description>
    <Owner>Vibgy Joseph</Owner>
    <Url />
    <Resolution>This is just a test rule.</Resolution>
    <Email />
    <MessageLevel Certainty="99"> Warning</MessageLevel>
    <FixCategories> Breaking </FixCategories>
  </Rule>
</Rules>

以下是我添加时在 Fxcop 中显示的信息。请注意,Total Children 为 0。

FxCop Rule Assembly c:\users\vibgy.j\documents\projects\01_common\testcustomrules\testcustomrules\bin\debug\testcustomrules.dll
{
    Checked              : True   (Boolean)
    Children             : Count == 1  (NodeBaseDictionaryCollection)
    Container            : Count == 10  (NodeBaseDictionary)
    DefaultCheckState    : True   (Boolean)
    DisplayName          : TestCustomRules.dll  (String)
    FileIdentifier       : C:\Users\vibgy.j\Documents\Projects\01_Common\TestCustomRules\TestCustomRules\bin\Debug\TestCustomRules.dll  (String)
    FileName             : C:\Users\vibgy.j\Documents\Projects\01_Common\TestCustomRules\TestCustomRules\bin\Debug\TestCustomRules.dll  (String)
    FullyQualifiedName   : C:\Users\vibgy.j\Documents\Projects\01_Common\TestCustomRules\TestCustomRules\bin\Debug\TestCustomRules.dll  (String)
    HasChildren          : True   (Boolean)
    HasMessages          : True   (Boolean)
    ImageIndex           : 1  (Int32)
    LoadExceptions       : Microsoft.FxCop.Common.ExceptionCollection  (ExceptionCollection)
    LocalFileName        : TestCustomRules.dll  (String)
    Messages             : Count == 0  (MessageStatusNodeBaseMessageDictionary)
    Metadata             : <null>  (Object)
    Name                 : c:\users\vibgy.j\documents\projects\01_common\testcustomrules\testcustomrules\bin\debug\testcustomrules.dll  (String)
    Rules                : Count == 0  (RuleDictionary)
    Status               : New  (NodeStatus)
    TotalChildren        : 0  (Int32)
    TotalChildrenChecked : 0  (Int32)
    Version              : 1.0.0.0  (String)
}

【问题讨论】:

  • 有完整源代码的最终解决方案吗?
  • @kiquenet 是的,我已经添加了答案。我将 xml 文件的 Build Action 更改为 Embedded Resource,它出现在 Fxcop 中。无需更改源代码。

标签: c# fxcop


【解决方案1】:

哎呀!我错过了将 xml 文件的属性“构建操作”设置为“嵌入式资源”。现在它会显示在 Fxcop 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多