问题标签 [cqlinq]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
616 浏览

idisposable - NDepend CQL 查询缺少 IDisposable 实现

我意识到这个问题正在寻找的查询不足以找到 IDisposable 实现的每一个小问题,但每一个早期警告都很重要,所以我会尽我所能。

我想知道是否有人为 NDepend 提出了一个 CQL 查询,该查询将列出所有未实现 IDisposable 但具有一个或多个字段的类。一个类可能会通过错误(即有人忘记检查 IDisposable 实现的字段类型)或通过代码演变(即在某个字段中使用的类在某处获得 IDisposable 附加到以后的日期,所有用法都没有更新)。

查找所有未实现 IDisposable 的类的简单查询是:

但是,这当然不会检查该类是否应该为上述规则实现 IDisposable。

有没有人有这样的疑问?我仍然在掌握 CQL,所以这部分让我望而却步。

0 投票
1 回答
321 浏览

nunit - 使用 NUnit 驱动 NDepend

是否可以使用 NUnit 使用 NDepend 运行 CQL 查询?如果能够在 UnitTests 库中包含 NDepend dll 并编写如下测试,那就太好了:

或类似的东西。

这将使与 Team City 集成变得非常容易,并且如果任何静态分析测试失败,则构建会自动失败。

0 投票
2 回答
1591 浏览

c# - 如何限制对类型属性的 NDepend 方法查询

我试图让 NDepend 使用标准“方法太大”查询的修改版本来识别长方法。

我不想报告开发人员几乎无法控制的长方法,所以我使用DebuggerNonUserCode属性和InitializeComponent().

不幸的是,我仍然得到一些误报,因为生成类型中的方法也被报告了。问题是虽然类型本身具有DebuggerNonUserCode属性,但方法没有,因此尽管它们是生成的,但它们仍包含在输出中。

我正在寻找类型和方法之间的连接之类的东西:给我所有没有DebuggerNonUserCode属性的类型并在这些类型上运行查询,但我不知道如何在 CQL 中表达这一点。

对于某些程序集,我可以简单地过滤全名,但不幸的是,我们的一些程序集混合了开发人员制作和生成的类型。不幸的IsGeneratedByCompiler是,在这种情况下也不能使用。

我的查询

0 投票
1 回答
360 浏览

properties - 如何使用 NDepend 找到哪些属性获取器有副作用?

使用 VisualStudio 的一个常见问题是对属性 getter 的神秘调用。如果这些有副作用(最常见的形式是if (foo == null) foo = new foo(); return foo;),那么调试器 Locals 和 Watch 窗口调用属性的事实 - 甚至没有遇到任何断点 - 可能会在调试时导致意想不到的效果。

有一个简单的解决方案:只需用属性标记属性

那么如何在大型代码库中找到可能有副作用的 getter 呢?

NDepend是此类事情的首选工具:使用它的 CQL 语言,我可以找到所有属性,例如,直接更改其包含实例的状态:

这只会找到那些直接改变字段的getter:我怎样才能找到间接改变它的getter,例如通过调用一个Initialize()方法?

0 投票
1 回答
109 浏览

ndepend - 使用 CQL 查找实现特定方法的类型

我正在改进 NDEpend 中内置的死代码查询,并且从独立程序(即 w/ Main() 入口点)中发现了很多误报。

我注意到内置的未使用类型查询有这个子句:

是不是不可能写出类似的东西

反而?这才是我真正想要选择的。

0 投票
1 回答
291 浏览

ndepend - 在 NDepend 中公开 CQL 结果


我在 NDepend 项目中有一些自定义 CQL,我想使用 NDepend.Console.exe 生成这些 CQL 的结果。生成报告时,我在报告中看不到自定义 CQL 的任何结果。我可以从 Visual NDepend 导出,但我想从脚本中使用 NDepend.Console.exe。蚂蚁。

0 投票
1 回答
122 浏览

code-analysis - NDepend Count、Average 等……报告……聚合。可能的?干净的工作环境?

我们有一个庞大的代码库,其中仅具有太多局部变量的方法会返回 226 个方法。我不希望将这个巨大的表格转储到 xml 输出中以使其混乱,如果可能的话,我想要前 10 名,但我真正想要的是计数,以便我们可以进行趋势和执行摘要。有没有一种干净/高效/可扩展的非hacky方式来做到这一点?

我想我可以使用一个可执行任务,而不是 ndepend 任务(这样合并不是自动的)并且混乱不会被合并。然后手动对那些文件进行操作得到一个摘要,但我想知道是否有更短的路径?

0 投票
1 回答
142 浏览

ndepend - ndepend 和 cppdepend 中的 CQL 以查看跨修订版的指标变化

CQL 可以很容易地找到CodeWasChanged的​​方法,但我还需要比较指标——我想找到修改后的代码,看看它是否有所改进。

我正在评估混合代码库的ndependcppdepend。两者都给我留下了深刻的印象,尤其是 cppdepend 似乎可以很好地应对我们的传统和现代 c++。

如果我能弄清楚如何做到这一点,那么我可以在 CQL 中做我需要的一切,但除此之外必须做一些事情,比如在外部合并报告。因此,我很欣赏有关自动化和比较 CQL 报告生成作为后备的提示。显然我会更乐意在 VisualCppDepend 或 VisualNDepend 中使用 CQL,这样我就可以在度量视图中看到查询的结果。与其他工具相比,对结果的实时探索是这些工具的大事。

CodeWasChanged 和IsInOlderBuild等其他子句的评论说强制 CQL 针对旧版本运行,这表明您不能跨修订进行查询。

我想要的查询类型类似于想象语法:

泛化为跨版本工作

或许

0 投票
1 回答
235 浏览

design-patterns - 在 NDepend 中构建 CQL 以验证 MVVM 模式

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

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

在此先感谢,肖恩

0 投票
1 回答
257 浏览

ndepend - 今天的 nDepend 和 CQL 是否可以直接使用派生类型的类来请求类?

阅读了很多 Q 和帖子,发现直到下一个版本才支持子查询/嵌套查询/查询组合。但是我不确定这是否是我需要的,在我的脑海中我会这样写,但我可能会使事情复杂化。

我想像

所以我想做的是检查类型是否直接使用给定命名空间中具有后缀代理的其他类型,并且代理类型是从 SoapHttpClientProtocol 派生的。如果一个类型直接使用代理类型,则发出警告。

任何人的建议、提示、提示、指针或答案?