有哪些可用于 C# 的静态分析工具?[关闭]
-
09-06-2019 - |
题
有哪些工具可用于针对 C# 代码进行静态分析?我了解 FxCop 和 StyleCop。还有其他人吗?我以前接触过 NStatic,但它似乎一直在开发中 - 从我所见的很少来看,它看起来非常光滑,所以如果它能够面世那就太好了。
沿着同样的思路(这主要是我对静态分析的兴趣),用于测试多线程问题(死锁、竞争条件等)的代码的工具似乎也有点稀缺。Typemock Racer 刚刚出现,所以我会关注它。除此之外还有什么吗?
感谢您对您所使用的工具的现实生活意见。
解决方案
代码违规检测工具:
福克斯科普, ,微软的优秀工具。检查是否符合 .net 框架指南。
2010 年 10 月编辑: 不再作为独立下载提供。现在它已包含在 视窗软件开发工具包 安装后可以在 Program Files\Microsoft SDKs\Windows\ [v7.1] \Bin\FXCop\FxCopSetup.exe 中找到
2018年2月编辑: :此功能现已集成到 Visual Studio 2012 及更高版本中 代码分析
- 时钟锐利, ,基于代码源码分析(至C#2.0)
- 单一宪兵, ,与 Fxcop 类似,但具有开源许可证(基于 莫诺·塞西尔)
- 斯莫基, ,类似于 Fxcop 和 Gendarme,基于 莫诺·塞西尔. 。不再进行开发,主要开发人员现在与 Gendarme 团队合作。
- 适用于 C# 的 Coverity Prevent™, 商业产品
- PRQA QA·C#, 商业产品
- PVS工作室, 商业产品
- 猫网 ,有助于识别安全缺陷的 Visual Studio 插件
- 正确编码
- 规格#
- 派克斯
质量衡量工具:
- 依赖型, ,很棒的视觉工具。对于代码度量、规则、差异、耦合和依赖性研究很有用。
- 尼特里克, ,免费,可以轻松编写自己的指标/约束,漂亮的可视化效果。 2018 年 2 月编辑: 下载链接现已失效。
- RSM 平方, 、基于代码源码分析
- C# 指标, ,使用 C# 的完整解析
- 源监视器, ,一个偶尔会更新的旧工具
- 代码指标, , A 反射器 加入
- 维尔, ,不支持.NET 2.0的旧工具。 2018 年 1 月编辑: 链接现已失效
检查样式工具:
- 风格警察, 、Microsoft 工具(从 Visual Studio 内部运行或集成到 MSBuild 项目中)。也提供 作为扩展 适用于 Visual Studio 2015 和 C#6.0
- 史密斯特工, ,代码风格验证插件 锐锐
重复检测:
- 猿猴, ,基于源代码。适用于多种语言。
- 克隆DR, ,仅在语言边界上检测参数化克隆(还处理 C# 以外的许多语言)
- 克隆人侦探 一个 Visual Studio 插件。(它用 康夸特 内部)
- 原子, ,基于源代码,丰富的语言,炫酷的“轮子”可视化
通用重构工具
- 锐锐 - 主要很酷的 C# 代码分析和重构功能
其他提示
工具 依赖型 被引用为 质量衡量工具 但它几乎也是一个 代码违规检测 工具。 免责声明:我是该工具的开发人员之一
使用 NDepend,人们可以编写 LINQ 查询的代码规则(我们称之为 CQLinq). 。多于 200 个 CQLinq 代码规则 默认建议。CQLinq 的优势在于 编写代码规则很简单, ,并得到 立即地 结果。建议使用设施来浏览匹配的代码元素。例如:
除此之外,NDepend 还有许多其他功能 静态分析如 特征。这些包括:
- 智能技术债务估算
- 依赖图
- 依赖矩阵
- 代码差异功能
- NDepend.API 让您可以编写自己的静态分析工具。通过 NDepend.APi,我们甚至开发了一个工具来检测代码重复(详细信息请参阅此博客文章: 查找 .NET 代码重复的原始算法).
你见过吗 猫网?
从宣传语来看——
CAT.NET是一种二进制代码分析工具,可帮助识别某些流行漏洞的常见变体,这些变体可以引起常见的攻击向量,例如跨站点脚本(XSS),SQL注入和XPATH注入。
我使用了早期的测试版,它似乎确实出现了一些值得一看的东西。
除了 madgnome 提供的优秀列表之外,我还会添加一个基于命令行的重复代码检测器(但免费):
Klocwork有一个C#静态分析工具: http://www.klocwork.com
Optimyth Software刚刚推出了云端静态分析服务 www.checkinginthecloud.com. 。只需安全上传您的代码即可运行分析并获取结果。没有麻烦。
它支持多种语言,包括 C# 更多信息可以在以下位置找到: www.optimyth.com
Axivion 包豪斯套件 是一个适用于 C#(以及 C、C++ 和 Java)的静态分析工具。
它提供以下功能:
- 软件架构可视化(包括依赖项)
- 架构规则的执行,例如分层、子系统、调用规则
- 克隆检测 - 突出显示复制和粘贴(和修改的代码)
- 死代码检测
- 周期检测
- 软件指标
- 代码风格检查
这些功能可以一次性运行,也可以作为持续集成过程的一部分运行。当系统与源代码控制系统集成时,可以根据每个项目或每个开发人员来突出显示问题。