哪些工具可用于针对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的优势在于可以直接编写代码规则并立即获得结果。建议设施浏览匹配的代码元素。例如:
除此之外,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加载项非常有用。