FxCop 自定义规则检查命名空间

Posted

技术标签:

【中文标题】FxCop 自定义规则检查命名空间【英文标题】:FxCop custom rule to check namespace 【发布时间】:2015-10-08 14:47:25 【问题描述】:

我正在尝试在 FxCop 中编写自定义规则,以验证我的命名空间是否以特定单词开头。我尝试过类似以下的方法:

    public override ProblemCollection Check(string namespaceName, TypeNodeCollection types)
    
        if (namespaceName == null)
        
            return this.Problems;
        

        if (!namespaceName.StartsWith("FujiXerox.ApeosWare.", StringComparison.Ordinal))
        
            this.Problems.Add(new Problem(this.GetNamedResolution("NamespaceResolution", namespaceName)));
        

        return this.Problems;
    

但它不起作用。谁能建议如何正确编写此自定义规则。

【问题讨论】:

“它不工作”是什么意思?你的规则是抛出异常,还是有意外的行为,还是??? @NicoleCalinoiu:它没有给我预期的结果。 您的预期结果与实际结果有何不同? 【参考方案1】:

我不知道使用 FxCop,但使用 NDepend(集成在 VS 中的 .NET 工具,让我们将自定义代码规则编写为 C# LINQ 查询)你只需要编写:

// <Name>Namespace should start with XYZ</Name>
warnif count > 0 
from n in Application.Namespaces
where !n.Name.StartsWith("XYZ")
select n

规则可以是:

edited/compiled/executed live in VS, 可以保存checked regularly in VS 在构建过程中report can be built to show eventual rules violations

免责声明:我在 NDepend 工作

【讨论】:

以上是关于FxCop 自定义规则检查命名空间的主要内容,如果未能解决你的问题,请参考以下文章

命名空间命名约定

未命名的命名空间访问规则

C#中如何获得指定命名空间中所有自定义类的信息

某些东西在自定义 k8s 命名空间中重新创建了 ConfigMap

如何从默认命名空间发送到自定义命名空间?

js事件的命名空间的详解