174

有哪些工具可用于针对 C# 代码进行静态分析?我知道 FxCop 和 StyleCop。还有其他人吗?我以前遇到过 NStatic,但它一直在开发中,似乎永远都是 - 从我所见的很少,它看起来很漂亮,所以如果它能够看到曙光,那就太好了。

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

感谢您对您使用过的工具的真实看法。

4

9 回答 9

353

代码违规检测工具:

  • FxCop,微软的优秀工具。检查是否符合 .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,类似于 FxCop 和 Gendarme,基于Mono.Cecil。不再进行开发,主要开发人员现在与宪兵队合作。

  • Coverity Prevent™ for C#,商业产品

  • PRQA QA·C# , 商业产品

  • PVS-Studio , 商业产品

  • CAT.NET,Visual Studio 插件,有助于识别安全漏洞2019 年 11 月编辑:链接已失效。

  • CodeIt.Right

  • 规格#

  • 佩克斯

  • SonarQube、FOSS 和商业选项,支持编写更清洁、更安全的代码。

质量度量工具:

  • NDepend,很棒的可视化工具。对代码度量、规则、差异、耦合和依赖性研究很有用。
  • Nitriq,免费,可以轻松编写自己的指标/约束,漂亮的可视化。2018 年 2 月编辑:下载链接现已失效。编辑 2019 年 6 月 17 日:链接没有死。
  • RSM Squared , 基于代码源分析
  • C# Metrics,使用完整的 C# 解析
  • SourceMonitor,一个偶尔更新的旧工具
  • Code Metrics,一个反射器插件
  • Vil,不支持 .NET 2.0 的旧工具。2018 年 1 月编辑:链接现已失效

检查样式工具:

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

重复检测:

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

通用重构工具

  • ReSharper - 非常酷的 C# 代码分析和重构功能
于 2008-09-19T07:55:39.417 回答
8

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

使用 NDepend,可以在 LINQ 查询(我们称之为 CQLinq)上编写代码规则。默认提出超过200 条 CQLinq 代码规则。CQLinq 的优势在于它可以直接编写代码规则,并立即获得结果。建议使用设施来浏览匹配的代码元素。例如:

CQLinq 代码规则

除此之外,NDepend 还附带了许多其他静态分析,如特性。这些包括:

于 2008-12-18T16:32:46.203 回答
1
  • Gendarme是一个基于开源规则的静态分析器(类似于 FXCop,但会发现很多不同的问题)。
  • Clone Detective是用于查找重复代码的 Visual Studio 的一个不错的插件。
  • 还谈到 Mono,我发现使用 Mono 编译器进行编译的行为(如果您的代码足够独立于平台,那么您可能无论如何都想努力实现这个目标)发现大量未引用的变量和 Visual Studio 完全错过的其他警告(即使警告级别设置为 4)。
于 2008-09-02T17:11:07.043 回答
1

你看过CAT.NET吗?

从简介 -

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

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

于 2009-05-26T09:10:23.123 回答
0

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

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

于 2009-04-19T02:07:51.870 回答
-1

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

于 2008-09-23T20:25:23.360 回答
-1

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

它提供以下功能:

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

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

于 2009-11-17T18:50:09.627 回答
-1

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

于 2010-05-01T02:13:52.510 回答
-1

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

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

于 2011-10-07T13:22:41.530 回答