哪些静态分析工具可用于C#?

时间:2020-03-05 18:46:11  来源:igfitidea点击:

有哪些工具可用于针对Ccode的静态分析?我知道FxCop和StyleCop。还有其他吗?我以前曾经碰过NStatic,但是它一直在开发中,因为它看起来永远都比我所见过的要光滑得多,因此,如果能看到今天的曙光,那就太好了。

沿着这些相同的思路(这主要是我对静态分析的兴趣),用于测试多线程问题(死锁,竞争条件等)的代码的工具似乎也很少。 Typemock Racer刚刚弹出,所以我会看看。除此之外呢?

对于我们使用过的工具的真实看法,我们将不胜感激。

解决方案

回答

  • Gendarme是一个基于开源规则的静态分析器(类似于FXCop,但是发现很多不同的问题)。
  • Clone Detective是一个很好的Visual Studio插件,可以找到重复的代码。
  • 谈到Mono,我发现使用Mono编译器进行编译的行为(如果代码具有足够的平台独立性,无论如何,我们可能都想争取实现一个目标)会发现大量未引用的变量以及Visual Studio完全错过的其他警告。 (即使将警告级别设置为4)。

回答

代码违规检测工具:

  • Fxcop,Microsoft的出色工具。检查是否符合.net框架准则。编辑2010年10月:不再作为独立下载提供。现在它已包含在Windows SDK中,安装后可以在Program Files \ Microsoft SDKs \ Windows \ [v7.1] \ Bin \ FXCop \ FxCopSetup.exe中找到。编辑2018年2月:此功能现已集成到Visual Studio 2012中后来成为代码分析
  • Clocksharp,基于代码源分析(适用于C#2.0)
  • Mono.Gendarme,类似于Fxcop,但具有开源许可证(基于Mono.Cecil)
  • Smokey,类似于基于Mono.Cecil的Fxcop和Gendarme。不再进行开发,主要开发人员现在与Gendarme团队合作。
  • 覆盖范围预防?用于C#,商业产品
  • PRQA QAC#,商业产品
  • PVS-Studio,商业产品
  • CAT.NET,Visual Studio插件,可帮助识别安全漏洞
  • CodeIt.Right
  • 规格#
  • Pex

质量指标工具:

  • NDepend,出色的可视化工具。对于代码度量,规则,差异,耦合和依赖性研究很有用。
  • 免费的Nitriq可以轻松编写我们自己的指标/约束和出色的可视化效果。编辑2018年2月:下载链接现已失效。
  • RSM Squared,基于代码源分析
  • C#指标,使用C#的完整解析
  • SourceMonitor,一个偶尔获取更新的旧工具
  • Code Metrics,一个Reflector加载项
  • Vil,不支持.NET 2.0的旧工具。编辑2018年1月:链接现在不可用

检查样式工具:

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

复制检测:

  • Simian,基于源代码。支持多种语言。
  • CloneDR,仅在语言边界上检测参数化克隆(也可处理C#以外的许多语言)
  • 克隆侦探Visual Studio插件。 (它在内部使用ConQAT)
  • Atomiq,基于源代码,多种语言,出色的"转轮"可视化

通用重构工具

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

回答

我发现Reflector的代码度量标准和依赖关系结构矩阵加载项非常有用。

回答

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

使用NDepend,可以通过LINQ查询(我们称为CQLinq)编写代码规则。默认情况下,建议使用200多个CQLinq代码规则。 CQLinq的优势在于编写代码规则并立即获得结果很简单。建议使用一些工具来浏览匹配的代码元素。例如:

除此之外,NDepend还附带了许多其他静态分析(例如功能)。这些包括:

  • 智能技术债务估算
  • 依赖图
  • 依赖矩阵
  • 代码差异功能
  • NDepend.API,可让我们编写自己的静态分析工具。使用NDepend.APi,我们甚至开发了一种工具来检测代码重复(此博客文章中的详细信息:查找.NET代码重复的原始算法)。

回答

除了madgnome列出的出色清单之外,我还将添加一个基于命令行的重复代码检测器(但是免费的):

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

回答

我们看过CAT.NET吗?

从简介-

CAT.NET is a binary code analysis tool
  that helps identify common variants of
  certain prevailing vulnerabilities
  that can give rise to common attack
  vectors such as Cross-Site Scripting
  (XSS), SQL Injection and XPath
  Injection.

我使用了早期的Beta版,它确实发现了一些值得一看的东西。

回答

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

它提供以下功能:

  • 软件构架可视化(包括依赖项)
  • 执行建筑规则分层,子系统,调用规则
  • 克隆检测-突出显示复制和粘贴(以及修改的代码)
  • 死码检测
  • 循环检测
  • 软件指标
  • 代码样式检查

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

回答

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