【发布时间】:2010-12-25 11:11:10
【问题描述】:
Stylecop 是否已取代 FXcop? 我们应该在 Visual Studio 2008 中使用哪种产品?
【问题讨论】:
Stylecop 是否已取代 FXcop? 我们应该在 Visual Studio 2008 中使用哪种产品?
【问题讨论】:
Stylecop 是一个在源代码级别工作的风格分析工具。它的存在主要是为了提供一种单一的通用样式,托管项目可以使用该样式在更大的托管软件世界中保持一致。它做出关于风格的决定主要是为了避免圣战(毕竟,风格几乎总是天生的主观事物)。我想我从来没有遇到过喜欢 StyleCop 的所有规则的人,但没关系ok。这意味着 StyleCop 在现有的大量样式指南中是一个很好的折衷方案。 (如果 stylecop 的规则是高度可定制的,除了简单地启用/禁用它们之外,它会破坏该工具的整个目的。)
另一方面,FxCop 是一种在托管程序集级别上工作的静态分析工具。它可以通过属性给出方向,因为它可以看到代码元素上的属性,例如。它检测可以在“二进制”级别(实际上)而不是句法级别上看到的问题。
为了回答您的问题,StyleCop 不会取代 FxCop,FxCop 也不会取代 stylecop。它们是两种不同的工具,具有两种不同的用途,都可以为您的代码带来真正的好处。
(又名,我两个都跑。:))
一个可能检测到的事物与另一个可能检测到的事物的几个示例:
StyleCop 违规可能包括与以下相关的警告:空白、格式、通过 xml-cmets 的公共方法文档、类中方法定义的顺序。
FxCop 违规可能包括与以下内容相关的警告:全球化、紧密耦合、圈复杂性、潜在的 null 取消引用。
【讨论】:
stylecop 适用于您的 C# 源代码。 fxcop 查看您从任何 .net 语言编译的代码。
【讨论】:
FxCop/StyleCop 的替代或很好的补充是使用商业工具NDepend。使用此工具,您可以在 LINQ 查询上编写代码规则 (namely CQLinq)。 免责声明:我是该工具的开发人员之一
超过200 code rules默认提出,包括设计、架构、代码质量、代码演化 em>、命名约定、死代码、.NET Fx 用法...
CQLinq 专门编写代码规则,可以是verified live in Visual Studio,也可以是verified during build process and reported in an HTML/javascript report。
CQLinq 相对于 FxCop 或 StyleCop 的优势在于可以直接编写代码规则,并立即获得结果。建议使用设施来浏览匹配的代码元素。具体来说是这样的:
【讨论】:
FXCop 对托管代码程序集进行静态代码分析。将其视为发现会导致运行时出现问题或会影响开发人员认为代码将如何运行的问题(无法访问的代码)。
StyleCop 从文本的角度分析您的代码结构。将此视为会影响您的开发和设计体验的问题(格式、命名约定、文档)
它们都是非常有价值的工具,您应该同时使用它们,但它们确实专注于不同的问题。
【讨论】:
StyleCop 执行源代码分析不是很可配置。它与分析编译代码的 FxCop 并没有真正做同样的事情。
关于这些的维基百科文章很好地总结了这些差异:
【讨论】: