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

What static analysis tools are available for C#?

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

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

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


代码违规检测工具:

  • 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。不再开发,主要开发人员现在与Gendarme团队合作。
  • Coverity预防?对于C#,商业产品
  • PRQA QA·C#,商业产品
  • PVS-Studio,商业产品
  • CAT.NET,visual studio addin,有助于识别安全漏洞
  • CodeIt.Right
  • 规格#
  • PEX

质量度量工具:

  • NDepend,很棒的视觉工具。对代码度量,规则,差异,耦合和依赖性研究很有用。
  • Nitriq,免费,可以轻松编写自己的指标/约束,良好的可视化。编辑2018年2月:下载链接现已死亡。编辑2019年6月17日:链接没有死。
  • RSM Squared,基于代码源分析
  • C#指标,使用完整的C#解析
  • SourceMonitor,一种偶尔会获得更新的旧工具
  • 代码度量标准,一个Reflector加载项
  • Vil,不支持.NET 2.0的旧工具。编辑2018年1月:链接现已死亡

检查样式工具:

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

复制检测:

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

一般重构工具

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

NDepend工具被引用为Quality Metric Tools,但它几乎也是Code违规检测工具。免责声明:我是该工具的开发人员之一

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

CQLinq code rule

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

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


你见过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.

我使用了早期的测试版,似乎确实有一些值得关注的事情。


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

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

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


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

它支持多种语言,包括C#更多信息,请访问wwww.optimyth.com


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


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

它提供以下功能:

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

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


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


推荐阅读

    开发linux命令工具?

    开发linux命令工具?,系统,工具,环境,状态,平台,设计,数据,电脑,中小企业,标

    linux命令联想工具?

    linux命令联想工具?,地址,工作,系统,工具,状态,标准,信息,命令,目录,左下角,L

    linux查询状态的命令?

    linux查询状态的命令?,系统,状态,信息,管理,数据,情况,命令,综合,电脑,工具,l

    linux加静态路由命令?

    linux加静态路由命令?,信息,系统,网络,地址,环境,服务,路由,静态,情况,设计,L

    linux命令的退出状态?

    linux命令的退出状态?,系统,状态,档案,软件,电脑,情况,异常,网络,命令,端口,

    linux命令工具怎么用?

    linux命令工具怎么用?,地址,系统,工作,单位,工具,密码,服务,命令,处分,基础,

    linux命令行截图工具?

    linux命令行截图工具?,工具,电脑,软件,系统,截图,网站,工作,环境,暂停,命令,L

    linux命令工具教程?

    linux命令工具教程?,系统,工具,信息,基础,基础知识,代码,在线,地址,项目,服

    linux看文件状态命令?

    linux看文件状态命令?,状态,系统,服务,时间,信息,工作,电脑,管理,名称,网络,l

    linux命令行渗透工具?

    linux命令行渗透工具?,系统,发行,网络,工具,信息,地址,管理,数据,工程,中国,

    linux卸载工具命令?

    linux卸载工具命令?,软件,系统,工具,名称,电脑,信息,命令,终端,程序,提示符,l

    linux命令流程图工具?

    linux命令流程图工具?,软件,工具,在线,网站,电脑,流程图,网络,名称,系统,首

    linux命令输入工具?

    linux命令输入工具?,系统,工具,工作,地址,信息,命令,时间,管理,环境,状态,怎

    远程linux命令行工具?

    远程linux命令行工具?,工具,软件,平台,灵活,系统,代码,图片,网络,环境,管理,l

    linux命令行补全工具?

    linux命令行补全工具?,系统,工具,软件,信息,智能,命令,检测,地址,不了,环境,w

    linux连接状态命令?

    linux连接状态命令?,网络,地址,状态,信息,系统,工具,工作,服务,位置,命令,lin

    linux跟踪命令工具?

    linux跟踪命令工具?,工具,系统,分析,信息,状态,综合,情况,环境,命令,数据,Lin

    linuxps命令状态?

    linuxps命令状态?,系统,状态,服务,软件,进程,命令,情况,平台,数据,信息,Linux

    linux命令行提示工具?

    linux命令行提示工具?,工作,系统,地址,信息,工具,命令,目录,环境,管理,状态,L

    linux命令打开工具箱?

    linux命令打开工具箱?,系统,密码,管理,网址,证书,软件,工具,官方网站,命令,