Visual Studio的StyleCop替代品是什么?

16

我喜欢 StyleCop 的静态代码分析和规则执行。但是,在几个关键部分它非常不足。

  • 官方并不支持添加新规则,根据我所听到的,这也很困难。
  • 自动修复琐碎的规则违规行为会很好!也许不能包括变量命名,但对于方法排序(静态等)来说,这将节省大量时间。
  • Microsoft 对 StyleCop 的“一刀切”的方法有点过于限制了。我想针对我们的内部标准定制一套规则集。

有这样的商业产品吗?

alt text http://blogs.interakting.co.uk/images/blogs_interakting_co_uk/dominicz/WindowsLiveWriter/MicrosoftStyleCopSourcecodeanalysisforfo_D8EF/styleCopErrors_6.gif


有一个名为StyleFix的项目,将尝试自动修复一些错误。该项目文档不完善,仅适用于VS2008。我已经获取了源代码并进行了修改,将StyleCop直接集成到程序中并进行修复。(并在VS2005中编译) - Brad Bruce
CodeIt.Right,CodeMaid 是其中两个。 - nawfal
7个回答

12

添加规则是或将成为官方支持:(官方链接)

如承诺,我们还将发布 StyleCop 的 SDK 文档,说明如何编写自定义规则以及如何将工具集成到自定义构建环境中。SDK 文档目前正在最终审核阶段,我们希望很快发布。 -- JasonAll

就我们的“内部”风格而言,我通过禁用一些 StyleCop 规则实现了接近的效果:

  • 文件头部(SA1633-SA-1640)
  • 代码排序(SA1200-SA1202)
  • 要求使用 "this"(SA1101)

您可以通过修改安装目录中的 Settings.StyleCop 文件来全局执行此操作,但我采用了在每个项目的源代码树中放置一个文件的方法。

最终效果符合我们的预期。虽然有几个“内部”选择可能很好地被标记,但即使没有这些选择,StyleCop 对我们仍然提供了很多价值。


这些规则是我目前也已禁用的相同规则。总体而言,我真的很喜欢它。如果微软能让StyleCop更加完善就更好了。在Visual Studio中进行永久集成对于像这样的东西来说是有意义的。 - mmcdole
真正让我感到沮丧的是缺乏命令行支持,这使得将StyleCop集成到我的构建流程中变得困难。最终,我编写了自己的前端(http://www.nichesoftware.co.nz/content/stylecop-cmd)。 - Bevan

6

StyleCop for ReSharper是一个免费的插件,可以帮助您(需要购买ReSharper)。

现在,StyleCop for ReSharper已经具备与StyleCop 4.3相同的功能。

共有148个StyleCop规则。

  • 其中38个必须手动修复(通常是因为您需要键入描述性文本或重命名变量)。
  • 剩下的110个规则中,58个可以通过R# Code Cleanup(静默模式)修复。
  • 现在还剩下52个规则,我们有Code Cleanup规则可以自动修复所有这些规则。

我们还提供了106个快速修复选项,可为可自动修复的110个规则的违规行为提供就地上下文菜单修复。

我们还提供了“StyleCop友好的ReSharper代码样式共享设置文件”,该文件会将ReSharper配置为以StyleCop友好的方式自动格式化代码。


5

有来自Mono的Gendarme,虽然它是开源的,而不是商业的。


3
一个替代或很好的补充StyleCop的工具是使用商业工具NDepend。使用此工具,可以在LINQ查询中编写代码规则(即CQLinq)免责声明:我是该工具的开发人员之一 默认情况下提供了超过 200个代码规则,包括设计架构代码质量代码演变命名约定死代码.NET Fx使用...
CQLinq致力于编写可在Visual Studio中实时验证的代码规则,或者可以在构建过程中验证并在HTML / javascript报告中报告的代码规则。
与StyleCop甚至FxCop相比,CQLinq的优势在于编写代码规则非常简单,并且可以立即获得结果。提供了浏览匹配代码元素的工具。具体来说,它看起来像这样:

CQLinq code rule


3

2

你的第二个链接已经损坏。 - Erik

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接