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

时间:2008-09-01 23:54:03

标签: c# code-analysis static-analysis

哪些工具可用于针对C#代码进行静态分析?我知道FxCop和StyleCop。还有其他人吗?我之前遇到过NStatic,但它一直处于开发状态,看起来像是永远的 - 它看起来很漂亮,看起来很少见,所以如果它能看到光明的一天会很好。

沿着这些相同的路线(这主要是我对静态分析的兴趣),用于测试多线程问题(死锁,竞争条件等)代码的工具似乎也有点稀缺。刚出现了Typemock Racer,所以我会看着它。除此之外还有什么?

对您使用的工具的现实意见表示赞赏。

9 个答案:

答案 0 :(得分:332)

代码违规检测工具:

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

    编辑2010年10月:不再作为独立下载提供。它现在包含在Windows SDK中,安装后可以在Program Files \ Microsoft SDKs \ Windows \ [v7.1] \ Bin \ FXCop \ FxCopSetup.exe中找到

    编辑2018年2月:此功能现已集成到Visual Studio 2012及更高版本中Code Analysis

  • Clocksharp,基于代码源分析(到C#2.0)
  • Mono.Gendarme,类似于Fxcop但具有开源许可证(基于Mono.Cecil
  • Smokey,类似于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 MetricsReflector加载项
  • Vil,不支持.NET 2.0的旧工具。 编辑2018年1月:链接现已死亡

检查样式工具:

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

复制检测:

  • Simian,基于源代码。适用于大量语言。
  • CloneDR,仅在语言边界检测参数化克隆(也处理C#以外的许多语言)
  • Clone Detective一个Visual Studio插件。 (它在内部使用ConQAT
  • Atomiq,基于源代码,丰富的语言,酷炫的“轮子”可视化

常规重构工具

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

答案 1 :(得分:7)

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

使用NDepend,可以编写Code Rule over LINQ Queries (what we call CQLinq)。默认情况下会提出超过200 CQLinq code rules的内容。 CQLinq的优势在于可以直接编写代码规则,并立即获得 结果。建议设施浏览匹配的代码元素。例如:

CQLinq code rule

除此之外,NDepend还有许多其他静态分析,如功能。其中包括:

答案 2 :(得分:1)

  • Gendarme是一个基于开源规则的静态分析器(类似于FXCop,但发现了很多不同的问题)。
  • Clone Detective是一个很好的Visual Studio插件,可以找到重复的代码。
  • 同样谈到Mono,我发现使用Mono编译器进行编译的行为(如果你的代码与平台无关,那么你可能想要争取的目标)找到大量未引用的变量和其他可视化的警告Studio完全错过(即使警告级别设置为4)。

答案 3 :(得分:1)

你见过CAT.NET吗?

来自模糊 -

  

CAT.NET是一种二进制代码分析工具   这有助于识别常见的变种   某些普遍存在的漏洞   这可以引起共同的攻击   Cross-Site Scripting等矢量   (XSS),SQL注入和XPath   注射。

我使用了早期测试版,似乎确实发现了一些值得关注的内容。

答案 4 :(得分:0)

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

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

答案 5 :(得分:-1)

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

答案 6 :(得分:-1)

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

它提供以下功能:

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

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

答案 7 :(得分:-1)

Klocwork为C#提供了一个静态分析工具:http://www.klocwork.com

答案 8 :(得分:-1)

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

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

找到