Stylecop和FXcop


Answers:


171

Stylecop是一种样式分析工具,可在源代码级别使用。它的存在主要是为了提供一种通用样式,托管项目可以使用该通用样式在更大范围的托管软件中保持一致。它主要是在样式方面做出决定,以避免圣战(毕竟,样式几乎始终是固有的主观事物)。我认为我从未见过喜欢StyleCop的所有规则的人,但是没关系。这意味着StyleCop在现有的大量样式指南中通常是一个很好的折衷方案。(如果stylecop的规则是高度可定制的,而不仅仅是简单地启用/禁用它们,那将破坏该工具的全部用途。)

另一方面,FxCop是一种静态分析工具,可在托管程序集的级别上使用。可以通过属性给定方向,因为它可以看到代码元素上的属性,例如。它检测在“二进制”级别(实际上)而不是语法级别可以看到的问题。

要回答您的问题,StyleCop不会取代FxCop,FxCop不会取代stylecop。它们是具有两个不同目的的两个不同工具,都可以为您的代码带来真正的好处。

(又名,我两个都跑。:))


一个可以检测到的东西与另一个可以检测到的东西的几个示例:

违反StyleCop的警告可能包括与以下内容有关的警告:空格,格式设置,通过xml注释的公共方法文档,类中方法定义的顺序。

FxCop违规可能包括与以下内容有关的警告:全球化,紧密耦合,圈复杂度,潜在的空引用取消引用。


1
是的,以前比较两者的答案在所有方面都是错误的。StyleCop和FxCop执行两个非常不同的任务,值得研究它们在代码库中提供的价值以及运行它们的原因。
Jedidja

3
同意并非所有StyleCop规则都不错,但是正如您所说,可以禁用不需要的规则。我们正在使用StyleCop-在禁用了简单的愚蠢规则后,它为我们提供了很好的价值-成本低廉!推荐的。(请注意,我们一眼就讨厌它。)
stiank81

@ stiank81:是的,我认为每个人最初讨厌StyleCop。但是,经过一段时间后,收益才真正建立起来,并且证明了它是保持源代码一致性的非常有用的工具。:)
Greg D

1
很好的答案,我一直在寻找:)
GibboK 2011年

16

stylecop适用于您的C#源代码。fxcop从任何.net语言查看您的编译代码。


因此,如果您使用Stylecop,FXCop可以增加任何价值吗?
JL。

确实,您最好使用FxCop。
Andrew Rollings 2009年

至少到目前为止,直到它变得更加可配置为止。:)
Andrew Rollings

1
stylecop不太可能变得可配置得多。对于stylecop而言,更重要的功能是自动纠正样式冲突。
格雷格D

我们使用Resharper自动使代码符合stylecop规则。仅此一项就值得购买。您不仅可以享受所有其他好处。
不退款

11

FxCop / StyleCop的替代或很好的补充是使用商业工具NDepend。使用该工具,可以编写基于LINQ查询的代码规则 (即CQLinq)免责声明:我是该工具的开发人员之一

超过200分的规则是默认设置的,其中包括设计建筑代码质量代码演变命名约定死码.NET Fx的使用 ...

CQLinq致力于编写代码规则,这些规则可以在Visual Studio中实时进行验证,也可以在构建过程中进行验证并在HTML / javascript报告中进行报告

与FxCop或StyleCop相比,CQLinq的强项是编写代码规则立即获得结果很简单。提出了浏览匹配代码元素的工具。具体来说,看起来像这样:

CQLinq编码规则


6

FXCop对托管代码集进行静态代码分析。将其视为发现将在运行时引起问题或将影响开发人员认为代码将如何运行(无法访问的代码)的问题。

StyleCop从文本的角度分析代码的结构。将其视为会影响您的开发和设计经验的问题(格式,命名约定,文档)

它们都是非常有价值的工具,您应该同时使用它们,但是它们确实专注于不同的问题。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.