【问题标题】:Get assembly metadata in NDepend在 NDepend 中获取程序集元数据
【发布时间】:2013-09-30 23:40:51
【问题描述】:

我正在尝试创建 CQL 查询,它将选择我公司创建的程序集。

在我看来,最简单的方法是检查 AssemblyInfo 中生成的数据,但我找不到如何在 CQL 中访问它。

【问题讨论】:

    标签: ndepend


    【解决方案1】:

    代码查询呢:

    from a in Application.Assemblies
    where a.Name.StartsWith("YourCompany.YourProduct")
    select a
    

    或者您需要更复杂的东西?


    好的,从this default rule获得灵感怎么样:

    // <Name>UI layer shouldn't use directly DB types</Name>
    warnif count > 0
    
    // UI layer is made of types in namespaces using a UI framework
    let uiTypes = Application.Namespaces.UsingAny(Assemblies.WithNameIn("PresentationFramework", "System.Windows", "System.Windows.Forms", "System.Web")).ChildTypes()
    
    // You can easily customize this line to define what are DB types.
    let dbTypes = ThirdParty.Assemblies.WithNameIn("System.Data", "EntityFramework", "NHibernate").ChildTypes()
                  // Ideally even DataSet and associated, usage should be forbidden from UI layer: 
                  // http://stackoverflow.com/questions/1708690/is-list-better-than-dataset-for-ui-layer-in-asp-net
                  .Except(ThirdParty.Types.WithNameIn("DataSet", "DataTable", "DataRow"))
    
    from uiType in uiTypes.UsingAny(dbTypes)
    let dbTypesUsed = dbTypes.Intersect(uiType.TypesUsed)
    select new { uiType, dbTypesUsed }
    

    当然,集合 uiTypesdbTypes 必须使用 N 级的程序集和 N+1 级的程序集进行细化。

    【讨论】:

    • 我们有超过 100 个程序集,我想为关系创建规则,因此 N+1 层的程序集只能在 N 层或更低层的程序集中具有依赖关系。
    猜你喜欢
    • 1970-01-01
    • 2014-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多