写点什么

使用 NDepend 与 LINQ 检查代码

  • 2012-06-24
  • 本文字数:931 字

    阅读完需:约 3 分钟

NDepend 发布了他们旗舰静态代码分析产品的新版本。NDepend 4 推出了代码查询 LINQ、NDepend API、并增加了对 VS 2012 的支持。代码查询 LINQ,顾名思义,是一项针对代码编写查询的 LINQ provider。以下是来自 Patrick Smacchia 在产品公告中给出的快速示例:

<p>// <name>Base class should not use derivatives</name><br></br>warnif count > 0 <br></br>from baseClass in JustMyCode.Types<br></br>where baseClass.IsClass && baseClass.NbChildren > 0 // <-- for optimization!<br></br>let derivedClassesUsed = baseClass.DerivedTypes.UsedBy(baseClass)<br></br>where derivedClassesUsed.Count() > 0<br></br>select new { baseClass, derivedClassesUsed }</p>源程序中的 JustMyCode 用作区分用户生成类型和代码生成类型。接下去是一个查询,通过名称检查是否存在某些类引用自己的子类。

NDepend 能够检查多个方面。在一个例子中,Patrick 演示了通过将代码覆盖率与圈复杂度(cyclomatic complexity)进行比较来确定高风险代码。该方法基于 Alberto Savoia 的“改变风险分析器与预报器”研究项目。

你可能注意到上述例子中的warnif 前缀,它是NDepend 创建用于自身标准工具的静态分析规则。如果你想要构建自己的静态分析工具,那么你可以利用新发布的 NDepend.API 。其特性列表包括能够:

  • 分析一个或多个.NET 程序集,并创建 NDepend 报告(只有具有构建机器许可方能使用该功能);
  • 探测程序集命名空间、类型、方法与字段之间的依赖性;
  • 对代码元素使用 NDpend 以计算收集常规代码度量(code metrics),并创建自己的代码度量;
  • 探测同一份.NET 代码基础的两个版本之间的不同之处,甚至跨越多个版本给出接下去的演变;
  • 打开代码元素的源文件声明;
  • 即时生成与执行 CQLinq 规则或查询;

Patrick 在题为《寻找.NET 代码副本的原始算法》一文中展示了NDepend.API 的使用。

虽然 NDepend 是一款商业产品,但是它确实为开发社区提供了一些支持。Patrick 写到,

无论如何,我们致力于发展与社区持久的双赢关系都没有改变。我们很高兴为所有的学生 / 教师 /OSS 开发人员 / 博客写手 /MVP 等等提供了免费的专业版许可,也希望他们能够帮助传播我们的口碑。

查看英文原文: Using NDepend and LINQ to Examine Code

2012-06-24 09:091586
用户头像

发布了 125 篇内容, 共 33.3 次阅读, 收获喜欢 4 次。

关注

评论

发布
暂无评论
发现更多内容
使用NDepend与LINQ检查代码_.NET_Jonathan Allen_InfoQ精选文章