2008-09-01 75 views
174

有哪些工具可用于静态分析C#代码?我知道FxCop和StyleCop。有其他人吗?我以前曾经在NStatic上跑过,但它在开发中看起来像是永远的 - 从我看到的很少的东西看,它看起来非常漂亮,所以如果它能看到白天的光芒,它会很好。沿着这些相同的路线(这主要是我对静态分析的兴趣),用于测试多线程问题(死锁,竞态条件等)的代码的工具似乎也有点不足。 Typemock赛车手刚刚弹出,所以我会看着那个。除此之外的任何事情?什么静态分析工具可用于C#?

关于您使用过的工具的真实意见,我们非常感谢。

+0

@IraBaxter发现我已经开始[关于元这个问题的讨论(http://meta.stackexchange.com/questions/229248/一如果你愿意的话,我会邀请你表达你为什么不应该删除这个问题的论点。 – 2014-04-12 07:59:45

回答

305

码违规检测工具:

  • Fxcop,通过微软优秀的工具。检查是否符合.net框架指南。

    编辑2010年10月:不再可作为独立下载。它现在包含在Windows SDK,安装后可以在程序Files \ Microsoft的SDK \的Windows \中找到[V7.1] \斌\ FxCop的\ FxCopSetup.exe

    编辑2018年2月:此功能目前已被集成到Visual Studio 2012和以后作为Code Analysis

  • Clocksharp,基于码源分析(以C#2.0)
  • Mono.Gendarme,类似的FxCop但具有一个开源许可(基于Mono.Cecil
  • Smokey,SIM Ilar到Fxcop和Gendarme,根据Mono.Cecil。主要开发人员不再处于开发阶段,现在与Gendarme团队合作。
  • Coverity Prevent™ for C#,商业产品
  • PRQA QA·C#,商业产品
  • PVS-Studio,商业产品
  • CAT.NET,Visual Studio的插件,可以帮助安全漏洞的识别
  • CodeIt.Right
  • Spec#
  • Pex

质量度量工具:

  • NDepend,极具视觉工具。用于代码度量,规则,差异,耦合和依赖性研究。
  • Nitriq,免费,可以很容易地编写自己的指标/约束,很好的可视化。 编辑2018年2月:下载链接现已死亡。
  • RSM Squared,基于代码源分析
  • C# Metrics,使用C#
  • SourceMonitor一个完整的解析,一个古老的工具,偶尔得到更新
  • Code Metrics,一个Reflector附加
  • Vil,老工具不支持.NET 2.0。 编辑2018年1月:链接现在死了

检查风格工具:

  • StyleCop,微软工具(从里面的Visual Studio或集成碰上MSBuild项目)。也可as an extension为Visual Studio 2015和C#6.0
  • Agent Smith,代码风格的验证插件ReSharper的

重复检测:

  • Simian,基于源代码。与大量的语言工作。
  • CloneDR仅检测语言边界上的参数化克隆(也处理除C#以外的许多语言)
  • ​​Visual Studio插件。(它使用ConQAT内部)
  • Atomiq,基于源代码,大量的语言,酷 “轮” 可视化

一般重构工具

  • ReSharper - Majorly酷C#代码分析和重构功能
+4

请参阅关于FxCop的MSDN页面:http://msdn.microsoft.com/en-us/library/bb429476%28VS.80%29.aspx“FxCop是一个应用程序,它分析托管代码程序集(以.NET为目标的代码框架公共语言运行库)并报告有关程序集的信息,例如可能的设计,本地化,性能和安全性改进。“ – 2009-07-01 18:24:41

+0

FxCop链接已从Microsoft网站中删除。这里是FxCop 10.0“下载”:http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=917023f6-d5b7-41bb-bbc0-411a7d66cf3c – ulrichb 2010-06-23 10:37:44

+0

这是猿猴:http://www.harukizaemon .com/simian/index.html? (你有断链接)。而且它似乎只是.NET 1.1。 – Theraot 2012-05-15 13:24:44

1
  • Gendarme是一个基于开源规则的静态分析器(类似于FXCop,但发现了很多不同的问题)。
  • Clone Detective是Visual Studio的一个很好的插件,可以找到重复的代码。我发现用单声道编译器编译的行为(如果你的代码是独立于平台的足以做到这一点,你可能想要争取的目标)找到大量未引用的变量和其他警告Visual工作室完全错过(即使警告级别设置为4)。
6

工具NDepend引述质量度量工具,但它是一个很值得也码违规检测工具。 声明:我是该工具的开发人员之一

使用NDepend,可以编写Code Rule over LINQ Queries (what we call CQLinq)。默认情况下建议超过200 CQLinq code rules。 CQLinq的实力在于很简单,编写代码规则,并立即得到的结果。建议设施浏览匹配的代码元素。例如:

CQLinq code rule

在那旁边,NDepend的附带了许多其他功能的静态分析。这些措施包括:

1

你见过CAT.NET

从Blurb的 -

CAT.NET是一个二进制代码分析工具 ,帮助识别 某些现行漏洞 常见的变异,可引起常见的攻击 载体,如跨站脚本 (XSS),SQL注入和XPath 注入。

我使用了一个早期测试版,它似乎确实出现了一些值得关注的东西。

0

Axivion Bauhaus Suite是一种静态分析工具,可与C#(以及C,C++和Java)一起使用。

它提供了以下功能:

  • 软件体系结构可视化(计有依赖关系)
  • 执行建筑规则例如分层,子系统,调用规则
  • 克隆检测 - 突出复制和粘贴(和修改后的代码)
  • 死代码检测
  • 循环检测
  • 软件度量
  • 代码样式检查

这些功能可以一次性运行或作为持续集成过程的一部分运行。当系统与源代码控制系统集成在一起时,可以在每个项目基础上或每个开发者基础上强调问题。

0

Optimyth软件刚刚在云www.checkinginthecloud.com推出了静态分析服务。只需安全地上传代码即可运行分析并获得结果。没有麻烦。

它支持多种语言,包括C#更多的信息,可以在wwww.optimyth.com