NDepend:列出附加到方法的属性,是否可能?

时间:2015-07-13 08:50:07

标签: c# ndepend cqlinq

我正在尝试使用NDepend及其基于Linq的查询语言来生成有关代码当前状态的一些报告。我想用预定义的"标签"来标记我的一些方法和类,例如用标签#34;数据库"标记的方法。包含数据库特定代码,标记为#34; Algorithm_X"包含与算法相关的特定逻辑" X"。我们认为这样的标记过程将导致更简单的文档生成过程。

我想知道NDepend是否提供了一种促进这种过程的机制。我正在考虑使用C#属性来生成这样的自定义标签,然后使用适当的属性标记方法,这些属性对应于"标记"他们。我很清楚" .HasAttribute" CQLinq的方法并积极使用它。但是这个标记过程需要一种方法来列出或枚举附加到方法的所有属性,直到现在我才使用NDepend实现它。

我的问题是;有没有办法在NDepend中实现(列出方法的所有属性)?如果没有,NDepend中是否有另一种方法可以促进这种标记过程?我可以通过编写自定义C#代码来实现这一点,但我想确保在这种状态下我没有使用NDepend的选项。

1 个答案:

答案 0 :(得分:2)

您实际上可以列出使用NDepend LINQ code querying (CQLINQ)标记方法的属性,但这不是直截了当也不快。我们计划在NDepend代码模型中改进属性支持,已在NDepend User Voice上询问。

所以下面的查询可以工作,但是在大型代码库上可能需要几秒钟(NDepend很慢,通常在几毫秒内执行查询):

#RewriteCond %{SERVER_PORT} ^80$
#RewriteCond %{HTTP_HOST} ^www.example.com$
#RedirectRule ^/shopping-cart(.*)$ https://%{HTTP_HOST}/shopping-cart$1 [R=301, l]

#RewriteCond %{SERVER_PORT} ^443$
#RewriteRule ^(.*)$ http://www.example.com$1 [R=301]

下面的优化将使其一般运行速度提高两倍。

let typesAttributes = Types.Where(t => t.IsAttributeClass)
from m in Methods
let mAttributes = typesAttributes.Where(t => m.HasAttribute(t)).ToArray()
where mAttributes .Length > 0
select new { m, mAttributes }