2008-11-13 123 views
15

我喜欢StyleCop的静态代码分析和规则实施。但是,几个关键部门严重缺乏。替代StyleCop for Visual Studio?

  • 添加新规则并没有得到正式支持,从我听到的相当困难。
  • 违规琐碎规则自动“修复”会很好!也许不是用变量命名,而是用方法排序(静态等),这将是一个巨大的节省时间。
  • 微软对StyleCop的“一刀切”方法是一种限制。我想为我们的内部标准制定一套自定义规则。

有没有这样的商业产品呢?

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

+0

有一个名为StyleFix项目,该项目将尝试自动修复一些错误。 它记录不完整,只适用于VS2008。我已经采用了源代码并对其进行了修改,将StyleCop直接集成到程序中并进行修复。 (并编译在VS2005中) – 2009-07-02 02:45:12

+0

CodeIt.Right,CodeMaid命名为两个。 – nawfal 2015-06-06 09:38:43

回答

12

添加规则,或将是,officially supported

正如所承诺的,我们也将发布 SDK文档了StyleCop 解释如何定制编写规则 以及如何将工具插入集成 自定义构建环境。 SDK 文档目前正处于最终的 审核中,我们希望很快将其发​​布到非常 。 - JasonAll

在我们的 “内部” 风格而言,我通过禁用了StyleCop规则了一把八九不离十:

  • 文件头(SA1633-SA-1640)
  • 代码排序(SA1200-SA1202)
  • 要求 “本”(SA1101)

您可以通过修改设置做到这一点全球tings.StyleCop文件在安装目录中,尽管我已经采取了将每个项目中的源代码树放在根目录中的方法。

最终的效果是我们想要的。有少数“内部”选择很适合举办,但即使没有他们,StyleCop也为我们提供了很多价值。

2

我经常编写单元测试以反映我的类型并检查是否违反了我的自定义规则。

下面是验证某些类型是不可改变的例子:http://blogs.msdn.com/kevinpilchbisson/archive/2007/11/20/enforcing-immutability-in-code.aspx

下面是另一个,约单元测试的命名规则: http://jbazuzicode.blogspot.com/2008/11/keeping-test-fixture-and-class-names.html

编辑:第二连杆似乎失去了时间的沙子。

+0

您的第二个链接已损坏。 – Erik 2015-12-22 16:06:04

6

StyleCop for ReSharper可以帮助(你需要购买ReSharper的,但该插件是免费的):

了StyleCop ReSharper的是现在拥有 完整的是已经达到 功能平价4.3 StyleCop的。

有148个StyleCop规则。

  • 其中38个必须手动修复(通常是因为您必须键入 描述性文本或重命名变量)。
  • 其余的110条规则58由R#Code Cleanup(无声 模式)修复。
  • 在剩下的52个中,我们有自动修复所有 的代码清理规则。

我们还提供了106个快速修复是 侵犯了110条规则 可以自动固定

我们还推出一款“了StyleCop友好ReSharper的代码风格共享提供到位上下文菜单修复 设置文件“,它配置ReSharper以一种StyleCop友好的方式自动格式化代码。

3

StyleCop的替代或很好的补充将使用商业工具NDepend。有了这个工具,人们可以通过写代码规则在LINQ查询(namely CQLinq)免责声明:我是在默认情况下被提出的工具

200 code rules更多的开发者之一,这其中就包括设计架构代码质量代码进化命名约定死代码.NET Fx的使用 ...

CQLinq致力于编写代码的规则,可以是verified live in Visual Studio,或者可以是verified during build process and reported in an HTML/javascript report

CQLinq超过了StyleCop甚至FxCop的力量,是它是直接写代码规则,并获得立即结果。建议设施浏览匹配的代码元素。具体来说,这看起来像:

CQLinq code rule