【问题标题】:Building CQL in NDepend for verifying MVVM patterns在 NDepend 中构建 CQL 以验证 MVVM 模式
【发布时间】:2011-07-15 16:52:08
【问题描述】:

我想通过静态分析来验证 C# 代码中的一些设计模式。我想使用 NDepend 验证这些。该应用程序是用 MVVM 设计风格构建的,所以我想验证的典型设计模式是: 1. View-Model 类没有任何 DependencyProperties(WPF 元素),它们只能在 View 层中看到。 2. View层不应该实现IDisposable等

我尝试在 CQL 中构建查询以捕获这些详细信息,但失败了,因为我需要验证一个类属于哪个级别以及它的属性。我知道 CQL 还不支持嵌套查询,那么有什么方法可以通过 NDepend 捕获这些详细信息?我希望我能以某种方式捕获多个查询的结果并执行它们的交集?

提前致谢, 肖恩

【问题讨论】:

    标签: design-patterns mvvm ndepend cql cqlinq


    【解决方案1】:

    获取CQLinq rule 警告 A 是否正在使用 B(A 和 B 可以是 Assembly/Namespace/Type/Method/Field)的最简单方法是在依赖矩阵,并生成一个代码规则,如果此依赖存在则发出警告

    ...因此,生成以下规则:

    【讨论】:

    • 感谢帕特里克的回复。我试过这样做,但这并不是我想要的。我想要一个 CQL 查询来验证 DependencyPattern 是否属于一组特定的类(例如,属于视图层的类)。所以我必须在同一个查询中检查两件事:1)类是否属于特定层,2)是否存在 Dependency 属性。我可以在 CQL 中执行此操作吗?
    • 可能是:WARN IF Count > 0 IN SELECT TYPES FROM "xxx" WHERE IsDirectlyUsedBy "yyy" OR IsDirectlyUsingBy "zzz"
    • 谢谢帕特里克。它给了我一个错误。我认为在 FROM 关键字之后只需要程序集和命名空间。
    • 如果某些 asm 和命名空间具有相同的名称前缀,例如:FROM "ASSEMBLY:XXX" 或 FROM "NAMESPACE:XXX"
    猜你喜欢
    • 1970-01-01
    • 2010-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    相关资源
    最近更新 更多