Fxcop 自定义规则未显示在 Fxcop GUI 中
Posted
技术标签:
【中文标题】Fxcop 自定义规则未显示在 Fxcop GUI 中【英文标题】:Fxcop custom rule not showing in 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 中。无需更改源代码。 【参考方案1】:哎呀!我错过了将 xml 文件的属性“构建操作”设置为“嵌入式资源”。现在它会显示在 Fxcop 中。
【讨论】:
以上是关于Fxcop 自定义规则未显示在 Fxcop GUI 中的主要内容,如果未能解决你的问题,请参考以下文章
SonarQube 托管站点的常规设置下未显示 FXcop 选项