什么静态分析工具可用于C#?

有什么工具可用于对C#代码进行静态分析? 我知道FxCop和StyleCop。 有其他人吗? 我之前已经在NStatic上跑过了,但是它的开发过程似乎永远是这样 – 从我看到的很less的东西看,它看起来很漂亮,所以如果它能看到白天的光芒,那将是非常好的。

沿着这些相同的路线(这主要是我对静态分析的兴趣),用于testingmultithreading问题(死锁,竞态条件等)的代码的工具也似乎有点稀缺。 Typemock赛车手刚刚popup,所以我会看着那个。 除此之外的任何东西?

关于您使用的工具的真实意见,我们感激。

代码违规检测工具:

  • Fxcop是微软的优秀工具。 现在已经包含在Windows SDK中 ,安装后可以在Program Files \ Microsoft SDKs \ Windows \ [v7.1] \ Bin \ FXCop \ FxCopSetup.exe)
  • Clocksharp ,基于代码源分析(到C#2.0)
  • Mono.Gendarme ,类似于Fxcop,但具有开源许可证(基于Mono.Cecil )
  • Smokey类似于Fxcop和Gendarme,基于Mono.Cecil 。 主要的开发者不再处于开发阶段,现在和Gendarme团队合作。
  • 用于C#的商业产品Coverity Prevent™
  • PRQA QA·C# ,商业产品
  • PVS-Studio ,商业产品
  • CAT.NET ,视觉工作室插件,有助于识别安全漏洞
  • CodeIt.Right
  • 规格#
  • PEX

质量度量工具:

  • NDepend ,很棒的视觉工具。 用于代码度量,规则,差异,耦合和依赖性研究。
  • Nitriq ,免费,可以很容易地编写自己的指标/约束,很好的可视化。
  • RSM Squared ,基于代码源分析
  • C#度量 ,使用C#的完整parsing
  • SourceMonitor ,旧的工具编辑新版本已经出来了
  • 代码度量 , reflection器加载项
  • Vil ,不支持.NET 2.0的旧工具

检查样式工具:

  • StyleCop ,Microsoft工具(从Visual Studio内部运行或集成到一个MSBuild项目)。 也可作为 Visual Studio 2015和C#6.0 的扩展 。
  • Agent Smith , ReSharper的代码样式validation插件

重复检测:

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

一般重构工具

  • ReSharper – 大部分很酷的C#代码分析和重构function

NDepend工具被引用为“ 质量度量工具”,但它也是一种代码违例检测工具。 免责声明:我是该工具的开发人员之一

使用NDepend,可以在LINQ查询(我们称之为CQLinq)上编写代码规则 。 超过200个CQLinq代码规则是默认提出的。 CQLinq的优势在于编写代码规则很简单 ,并且立即得到结果。 build议设施浏览匹配的代码元素。 例如:

CQLinq代码规则

除此之外,NDepend还提供了许多其他静态分析function。 这些包括:

  • 聪明的技术债务估计
  • 依赖关系图
  • 依赖matrix
  • 代码差异function
  • 让你自己写静态分析工具的NDepend.API 。 使用NDepend.APi,我们甚至开发了一个工具来检测代码重复(详细信息在这篇博客: 原始algorithm来查找.NET代码重复 )。
  • Gendarme是一个基于开源规则的静态分析器(类似于FXCop,但是发现了很多不同的问题)。
  • 克隆侦探是一个很好的Visual Studio插件,发现重复的代码。
  • 也谈到单声道,我发现编译与单声道编译器的行为(如果你的代码是独立的平台足以做到这一点,你可能想要争取任何目标)发现吨未引用的variables和其他警告,Visual Studio完全没有(即使警告级别设置为4)。

你见过CAT.NET吗?

从blurb –

CAT.NET是一种二进制代码分析工具,可帮助识别可能导致常见攻击媒介(如跨站点脚本(XSS),SQL注入和XPath注入)的常见漏洞的常见变体。

我使用了一个早期的testing版,似乎有一些值得关注的东西。

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

http://sourceforge.net/projects/duplo/

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

我发现Reflector的Code Metrics和Dependency Structure Matrix加载项非常有用。

Optimyth软件公司刚在云上启动了一个静态分析服务www.checkinginthecloud.com 。 只要安全地上传您的代码运行分析,并获得结果。 没有麻烦。

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

Axivion包豪斯套件是一个静态分析工具,可与C#(以及C,C ++和Java)一起使用。

它提供了以下function:

  • 软件架构可视化(包含依赖)
  • 架构规则的执行,例如分层,子系统,调用规则
  • 克隆检测 – 突出显示复制和粘贴(和修改后的代码)
  • 死码检测
  • 周期检测
  • 软件度量
  • 代码样式检查

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