首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于检测ISP违规的查询

用于检测ISP违规的查询
EN

Stack Overflow用户
提问于 2013-01-19 23:27:01
回答 1查看 114关注 0票数 1

我正在尝试用NDepend创建一个特殊的查询,但无法解决这个问题。

下面是我想用一个更过程化的伪代码来查询的内容:

代码语言:javascript
复制
var list
foreach type t
    foreach i = t.attribute that is an interface
        var nm = i.numberOfMethods
        var mu = numberOfMethods that t actually uses
        if mu / nm < 1
        list.Add(t)
    end foreach
end foreach
return list

它应该列出不符合接口隔离原则的类型。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-21 08:51:17

因此,您所请求的查询可以这样编写:

代码语言:javascript
复制
from t in JustMyCode.Types where !t.IsAbstract

from i in t.TypesUsed where i.IsInterface

// Here collect methods of i that are not used
let methodsOfInterfaceUnused = i.Methods.Where(m => !m.IsUsedBy(t))
where methodsOfInterfaceUnused.Count() > 0
select new { t, methodsOfInterfaceUnused }

此查询的特点是多次匹配同一类型,每次methodsOfInterfaceUnused不为空时匹配一次。然后,结果被很好地呈现出来,并且可以理解:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14415818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档