C # 有哪些静态分析工具?

有什么工具可用于针对 C # 代码的静态分析?我知道 FxCop 和 StyleCop。还有其他人吗?我以前遇到过 NStatic,但是它似乎已经开发了很长时间了——从我所看到的一点来看,它看起来非常光滑,所以如果它能见到阳光就好了。

沿着同样的路线(这主要是我对静态分析的兴趣) ,用于测试多线程问题(死锁、竞态条件等)的代码的工具似乎也有点缺乏。模拟赛车刚刚出现了,所以我要看看。除此之外呢?

关于您使用过的工具的现实生活中的意见是值得赞赏的。

168077 次浏览
  • Gendarme 是一个基于静态分析器的开源规则(类似于 FXCop,但会发现很多不同的问题)。
  • 克隆侦探 是用于 VisualStudio 的一个很好的插件,它可以找到重复的代码。
  • 说到 Mono,我发现使用 Mono 编译器进行编译(如果你的代码足够独立于平台,那么无论如何你都要努力实现这个目标)会发现大量未引用的变量和其他 Visual Studio 完全忽略的警告(即使警告级别设置为4)。

代码违规检测工具:

质量度量工具:

  • NDepend ,很棒的可视化工具,对代码度量、规则、差异、耦合和依赖性研究很有用。
  • Nitriq ,免费,可以很容易地编写自己的度量/约束,很好的可视化。2018年2月编辑:下载链接现在死亡。< strong > 编辑2019年6月17日: 链接未死。
  • RSM Squared ,基于代码源分析
  • C # Metrics ,使用 C # 的完整解析
  • SourceMonitor ,一个偶尔获得更新的旧工具
  • 代码度量 ,一个 反射器外接程序
  • Vil ,不支持.NET 2.0. 2018年1月编辑: Link 的旧工具现在死了

检查样式工具:

  • StyleCop ,Microsoft 工具(从 Visual Studio 内部运行或集成到 MSBuild 项目中)。也可用于 Visual Studio 2015和 C # 6.0的 作为延期
  • 代理 Smith ,ReSharper 的代码样式验证插件

重复检测:

  • Simian ,基于源代码。适用于多种语言。
  • CloneDR ,仅在语言边界上检测参数化克隆(还处理除 C # 以外的许多语言)
  • 克隆侦探 Visual Studio 插件(在内部使用 ConQAT)
  • Atomiq ,基于源代码,大量的语言,很酷的“车轮”可视化

通用重构工具

  • ReSharper -非常酷的 C # 代码分析和重构特性

我发现反射器的 代码度量依赖结构矩阵插件非常有用。

工具 不依赖被引用为 质量公制工具,但它几乎也是一个 代码违规检测工具

使用 NDepend,可以编写 LINQ 查询上的代码规则(我们称之为 CQLinq)。默认情况下,建议超过 200条 CQLinq 代码规则。CQLinq 的强度是 编写代码规则很简单,得到 马上的结果。提出设施来浏览匹配的代码元素。例如:

NDepend static analyzer code rule

除此之外,NDepend 还有许多其他 静态分析特性,包括:

除了 madgnome 的优秀列表之外,我还要添加一个基于命令行的重复代码检测器(但是是免费的) :

Http://sourceforge.net/projects/duplo/

你看过 CAT.NET吗?

从宣传上看来的

NET 是一个二进制代码分析工具 有助于识别 某些普遍存在的漏洞 可以引起共同攻击 向量,例如跨网站脚本 (XSS)、 SQL 注入和 XPath 注射。

我使用了一个早期的测试版,它似乎找到了一些值得一看的东西。

Axivion Bauhaus Suite 是一个静态分析工具,可用于 C # (以及 C、 C + + 和 Java)。

它提供以下功能:

  • 软件体系结构可视化(包括依赖项)
  • 执行体系结构规则,例如分层、子系统、调用规则
  • 克隆检测-突出显示副本并粘贴(和修改后的代码)
  • 死代码检测
  • 循环探测
  • 软件度量
  • 代码样式检查

这些特性可以一次性运行,也可以作为持续集成过程的一部分运行。当系统与源代码控制系统集成时,可以根据每个项目或每个开发人员突出显示问题。

Klocwork 有一个用于 C # : http://www.klocwork.com的静态分析工具

Optimyth Software 刚刚在云 Www.checkinginthecloud.com中推出了一个静态分析服务。只要安全地上传代码,运行分析并得到结果。没有麻烦。

它支持包括 C # 在内的多种语言,更多信息可以在 Wwww.optimyth.com上找到