fxcop 自定义规则 - 检查源代码以查找新关键字

Posted

技术标签:

【中文标题】fxcop 自定义规则 - 检查源代码以查找新关键字【英文标题】:fxcop custom rules - Inspecting source code to look for new keyword 【发布时间】:2009-11-17 17:08:11 【问题描述】:

我想避免用 new 实例化某些类,并强制使用工厂类。

但我不明白该怎么做。

谁能给我看个小样?

提前感谢您的帮助, 最好的问候

【问题讨论】:

正在寻找如何创建自定义 FxCop 规则的示例或如何检查类实例化的示例? @TrueWill > 很高兴,但我该怎么做呢? @dtb > 我知道如何创建简单的规则,但我正在寻找方法来分析如何为特定类型完成实例化 【参考方案1】:

这里有一些内容可以帮助您入门。您需要添加自己的逻辑来确定是否应允许任何给定类型的实例通过 newing 实例化。

public override ProblemCollection Check(Member member)

    if (member is Method)
    
        this.Visit(member);
    

    return this.Problems;


public override void VisitConstruct(Construct construct)

    base.VisitConstruct(construct);

    if (!this.AllowTypeToBeNewed(construct.Type))
    
        this.Problems.Add(new Problem(this.GetResolution(), construct));
    


private bool AllowTypeToBeNewed(TypeNode type)

    throw new NotImplementedException();

【讨论】:

感谢您的帮助。我可以使用 Type.Interfaces 来寻找工厂的接口【参考方案2】:

这家伙解释的很好

http://www.guysmithferrier.com/downloads/FxCop.pdf

【讨论】:

以上是关于fxcop 自定义规则 - 检查源代码以查找新关键字的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 FxCop 自定义规则验证 DataReader 是不是实际关闭?

使用 SonarQube 自定义 Fxcop 规则

FxCop:检查程序集信息值的自定义规则

fxcop 自定义规则 - 避免每个文件有多个类

自定义控件的 FxCop 自定义规则

如何编写代码分析 (FxCop) 规则以防止方法调用