16

我喜欢StyleCop的静态代码分析和规则执行。然而,它在几个关键部门严重缺乏。

  • 官方不支持添加新规则,据我所知,这很难。
  • 自动“修复”琐碎的规则违规行为会很好!也许不是使用变量命名,而是使用方法排序(静态等),这将节省大量时间。
  • 微软对 StyleCop 的“一刀切”方法有点限制性。我想为我们的内部标准制定一套自定义规则。

有这样的商业产品吗?

替代文字 http://blogs.interakting.co.uk/images/blogs_interakting_co_uk/dominicz/WindowsLiveWriter/MicrosoftStyleCopSourcecodeanalysisforfo_D8EF/styleCopErrors_6.gif

4

7 回答 7

12

添加规则已经或将要得到官方支持

正如承诺的那样,我们还将发布 StyleCop 的 SDK 文档,解释如何编写自定义规则以及如何将工具集成到自定义构建环境中。SDK 文档目前正在最终审核中,我们希望尽快发布。——杰森·奥尔

就我们的“内部”风格而言,我通过禁用一些 StyleCop 规则非常接近:

  • 文件头 (SA1633-SA-1640)
  • 代码订购 (SA1200-SA1202)
  • 需要“这个”(SA1101)

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

最终效果正是我们想要的。有一些“内部”选择可以很好地标记,但即使没有它们,StyleCop 也为我们提供了很多价值。

于 2008-11-14T00:04:28.303 回答
6

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

用于 ReSharper 的 StyleCop 现在功能完整,已达到与 StyleCop 4.3 相同的功能。

有 148 条 StyleCop 规则。

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

我们还提供了 106 个快速修复,为违反 110 条规则提供了上下文菜单修复,这些规则可以自动修复

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

于 2009-03-04T12:44:20.260 回答
5

Mono的Gendarme是开源的,不是商业的。

于 2008-11-13T10:59:10.890 回答
3

史密斯探员很好。它需要 Resharper。

于 2008-11-13T16:48:16.403 回答
3

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

默认提出超过200 条代码规则,包括设计架构代码质量代码演化命名约定死代码.NET Fx 使用...

CQLinq 致力于编写可以在 Visual Studio 中实时验证的代码规则,或者可以在构建过程中验证并在 HTML/javascript 报告中报告的代码规则。

CQLinq 优于 StyleCop 甚至 FxCop 的优势在于,它可以直接编写代码规则,并立即获得结果。建议使用设施来浏览匹配的代码元素。具体来说是这样的:

CQLinq 代码规则

于 2010-10-19T13:17:59.980 回答
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

编辑:第二个链接似乎丢失了时间。

于 2008-11-13T16:41:01.567 回答
2

看看来自Submain的 CodeIt.Right。

于 2008-11-13T16:57:53.577 回答