【问题标题】:How can NDepend be instructed to ignore EF classes?如何指示 NDepend 忽略 EF 类?
【发布时间】:2011-10-31 21:35:31
【问题描述】:

我对 NDepend 不忽略生成的代码有一点问题。它解决了在创建实体数据模型时由 EF 生成的 Designer.cs 文件中参数过多的方法的问题。该类使用“自动生成”注释进行注释,但仍被 NDepend 拾取。

我似乎无法找到如何强制忽略 *.designer.cs 甚至忽略没有通配符的特定文件。我最接近的是几年前的this post,Patrick 提到了这样做的计划,但仅此而已。

我错过了什么吗?有没有简单的方法来排除这个?

【问题讨论】:

    标签: .net entity-framework ndepend cqlinq


    【解决方案1】:

    Code Query and Rule over LINQ (CQLinq) 确实提供了一种忽略生成的代码的工具。

    有一个方便的预定义域,名为 JustMyCode,类型为 ICodeBaseView

    JustMyCode 域表示 CQLinq 的一种工具,用于从 CQLinq 查询结果中消除生成的代码元素。例如,以下查询将只匹配不是由工具(如 UI 设计器)生成的大型方法:

    from m in JustMyCode.Methods where m.NbLinesOfCode > 30 select m
    

    生成的代码元素集由以 CQLinq 关键字 notmycode 为前缀的 CQLinq 查询定义。例如,下面的查询匹配源文件中定义的方法,其名称以 ".designer.cs" 结尾:

    notmycode from m in Methods where
      m.SourceFileDeclAvailable && 
      m.SourceDecls.First().SourceFile.FileName.ToLower().EndsWith(".designer.cs")
    select m
    

    CQLinq 查询运行程序在依赖于 JustMyCode 的查询之前执行所有 notmycode 查询,因此域 JustMyCode 被定义一次。显然,如果 notmycode 查询依赖于 JustMyCode 域,CQLinq 编译器会发出错误。

    有 4 个默认的 notmycode 查询,可轻松适应您的需求。您还可以创建其他 notmycode 查询:

    【讨论】:

    • JustMyCode 会忽略任何用[NDependIgnore] 装饰的东西吗?如果没有,可以吗?
    • 然后您需要创建一个 NDepependIgnoreAttribute 并确保更新 notmycode 查询以避免匹配像 && !method.HasAttribute("Namespace.NDepependIgnoreAttribute ") ndepend.com/docs/cqlinq-syntax#NotMyCode 这样装饰的东西
    猜你喜欢
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 2022-07-23
    相关资源
    最近更新 更多