问题标签 [ndepend]

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 投票
6 回答
3327 浏览

c# - 你使用 NDepend 吗?

我一直在尝试NDepend,阅读了一些关于它的博文,甚至听过播客。我认为 NDepend 可能是一个非常有用的工具,但我仍然不知道我会在哪里使用它。

你如何使用它?你用它,为什么?为什么不?

我想听听一些现实世界的例子。

0 投票
2 回答
1250 浏览

c# - 是否有任何好的/可自动化的依赖管理工具来管理应用程序、数据库和外部资源的依赖关系?

我想构建尽可能多的应用程序依赖项的概述/地图。使用 NDepend(我喜欢它!)之类的工具分析 .NET 应用程序依赖关系相当容易。但是当涉及到外部依赖项时,例如数据库和 Web 服务,我需要更好的东西,最好是可以通过各种工具自动化的东西。

例如,我可能有一个工具填充数据库列表,另一个工具用于填充 .NET 应用程序列表,第三个工具获取 Web 服务列表,最后一个工具知道如何挖掘应用程序以获取组件之间的依赖关系由其他工具找到。

所有或大部分都可以自动化,这样我就不必自己维护一个依赖列表,这很容易出错,并且在我完成时可能已经过时了。所以我很想拥有一个可以为我完成所有这些工作的工具,或者至少是一个可以保存、分析和可视化组件和依赖项的工具,而不是自己构建它。我要做的越少越好...

0 投票
1 回答
518 浏览

c# - NDepend 代码质量指标 - 自定义 CQL - 棕地开发

我正在开发一个棕地项目,该项目最初是为 .NET 1.1 开发的,随后被改装为 .NET 2.0,还有少量 .NET 3.5

我很好奇使用什么样的指标来开始寻找优化和现代化的拐点。

是否有任何人发现在清理和重构“遗留”.NET 代码方面有用的好的 CQL 查询?

0 投票
2 回答
1591 浏览

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

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

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

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

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

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

我的查询

0 投票
6 回答
21021 浏览

c# - C#/.NET analysis tool to find race conditions/deadlocks

Is there a tool that analyses .NET code and finds race conditions?

I have a bit of code that has a public static property that gets or creates a private static field. It also has a public static method that sets this field to null (...yes, I know!..)

As there are no locks around either of these methods, it's a safe bet that things'll go horribly wrong in the future. I need a tool that'll recursively go through things that call either of these methods and see if anything was spawned on another thread.

I'm looking for a tool or perhaps an nDepend SQL script (if this is possible).

0 投票
1 回答
294 浏览

ndepend - Ndepend CQL 从程序集通配符中查询类型

为了确定 Web 应用程序直接使用的低级框架类型,必须定义所涉及的每个程序集。

我找不到任何语法来通配程序集列表。有没有办法缩短这个?我们有很多框架级程序集。

即 Company.System.Framework.*

0 投票
2 回答
236 浏览

ndepend - 使用 NDepend 查找幻数

有谁知道我如何使用 NDepend 中的 CQL 查询在源代码中找到幻数?这与此问题相同,但如果可能,我不想使用正则表达式。

所以我想找到所有的陈述,比如

但不是

0 投票
0 回答
234 浏览

ndepend - Ndepend CQL 使用特定框架程序集查找某些类型的方法

为了检查不是从某些基类派生的类型是否正在使用低级框架程序集,可以使用以下查询。

现在我希望进一步深入了解这些类中的哪些方法实际上正在这样做。但问题是,如果我将查询目标从 TYPES 更改为 METHODS,则DeriveFrom将不适用。如何保留这些标准?

0 投票
1 回答
342 浏览

ndepend - 其他程序集/类型正在使用的框架程序集中的 NDepend 查询方法/类型

我正在尝试确定基础框架程序集中的哪些类型或方法被应用程序系统中的其他程序集使用。我似乎找不到一个直截了当的查询来做到这一点。

我要做的是首先确定哪些程序集直接使用框架程序集,然后在第二个查询中手动列出它们

有没有更好/更快的方法来查询这个?

此外,查询结果仅关注匹配的类型。导出的依赖关系图或矩阵仅显示这些的详细信息。我不知道如何呈现一个显示这些类型或方法的图表以及显示来自其他使用它们的程序集的依赖类型/方法?

更新

我不能使用类似的查询

因为结果返回在 IBM.Data.DB2 程序集中使用混淆类型的非常奇怪的结果。

我们的代码不直接使用这些类型和枚举。

0 投票
2 回答
2235 浏览

nunit - 在 FinalBuilder 中为 NUnit 设置 NCover

已解决:查看此问题的底部以了解工作配置


我正在尝试设置 NCover 以在我的 FinalBuilder 项目中使用,用于 .NET 4.0 C# 项目,但我的最终覆盖输出文件不包含覆盖数据。

我在用:

所有工具都是今天最新的官方。

我终于设法哄骗 FB 在 NCover 下为 .NET 4.0 项目运行我的单元测试,所以我得到了Tests run: 184, ...,这是正确的。

但是,NCover 的最终Coverage.xml文件输出几乎是空的,如下所示:

FB 日志中的输出为:

我对 NCover 的 FB 步骤的配置:

  • N覆盖什么?: NUnit 测试覆盖率
  • 命令C:\Program Files (x86)\NUnit 2.5.4\bin\net-2.0\nunit-console.exe
  • 命令参数LVK.IoC.Tests.dll /noshadow /framework:4.0.30319 /process=single /nothread
    • 注意:我尝试过使用和不使用/processand/nothread选项
  • 工作目录%FBPROJECTDIR%\LVK.IoC.Tests\bin\Debug
  • 要配置文件的程序集列表%FBPROJECTDIR%\LVK.IoC.Tests\bin\Debug\LVK.IoC.dll
    • 注意:我试过只列出程序集的名称,包括扩展名和不带扩展名。

FB 步骤的文档没有帮助,因为它只列出了每个属性的小句子,并且没有给出示例或故障排除提示。

由于我想将覆盖结果拉入 NDepend 以运行构建时分析,因此我希望该文件包含我需要的信息。

我也在使用TestDriven,如果我右键单击解决方案文件并选择“使用 NCover 测试”,NCover-explorer 会打开覆盖数据,如果我要求它显示包含覆盖文件的文件夹,则有一个.xml 文件具有与上述相同的结构,只是包含所有应该存在的数据,所以我拥有的工具当然能够生成它。

有人知道我在这里配置错误吗?


已解决:以下配置终于对我有用。它在构建的开始结果页面上生成代码覆盖率基本统计信息,并带有指向包含所有内容的详细报告的链接。

由于我将我的单元测试项目命名为与它测试的项目相同,只是带有 .Tests 后缀,因此我已将这些项目排除在代码覆盖范围之外。此外,我必须只包含我自己的程序集(全部以 LVK 开头。)否则我会得到一些由 TeamCity 运行程序加载的程序集,这会稍微影响我的覆盖率统计。

首先,我安装了最新的工具(截至本次编辑):

  • NCover 3.4.8
  • 团队城市 5.1.2
  • NUnit 2.5.5

TeamCity 中构建屏幕上的配置如下:

  • 目标:重建
  • 配置:调试
  • 平台:任何 CPU
  • .NET 覆盖工具:NCover (3.x)
  • .NET 运行时:.NET Framework 4.0,版本:本机
  • NCover 3 的路径:%system.ncover.v3.x64.path%(这是 Windows 2008 Server R2 64 位)
  • 其他 NCover 参数:

    /li>
  • 其他 NCover 报告参数:

    /li>
  • NUnit 跑步者:NUnit 2.5.5

  • .NET 运行时平台:自动 (MSIL),版本:4.0
  • 从以下位置运行测试:**\bin\Debug*Tests.dll