【问题标题】:Alternative to StyleCop for Visual Studio? [closed]Visual Studio 的 StyleCop 的替代品? [关闭]
【发布时间】:2010-09-22 02:52:06
【问题描述】:

我喜欢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中编译)
  • CodeIt.Right,CodeMaid 仅举两例。

标签: .net visual-studio code-analysis stylecop


【解决方案1】:

添加规则是,或者将是,officially supported

正如承诺的那样,我们也将发布 StyleCop 的 SDK 文档 解释如何编写自定义规则 以及如何将该工具集成到 自定义构建环境。开发工具包 文档目前处于最终状态 审查,我们希望发布它非常 很快。 -- JasonAll

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

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

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

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

【讨论】:

  • 这些规则与我目前禁用的规则相同。总的来说,我真的很喜欢它。如果微软让 StyleCop 更精致一点,那就太好了。像这样永久集成到 Visual Studio 对我来说很有意义。
  • 真正让我沮丧的一件事是缺乏命令行支持,这使得将 StyleCop 集成到我的构建中变得很困难。我最终编写了自己的前端 (nichesoftware.co.nz/content/stylecop-cmd)
【解决方案2】:

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

ReSharper 的 StyleCop 现已成为功能 完成即已达到 功能与 StyleCop 4.3 相同。

有 148 条 StyleCop 规则。

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

我们还提供 106 个快速修复 提供就地上下文菜单修复 违反 110 条规则 可以自动修复

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        Agent Smith 非常好。它需要 Resharper。

        【讨论】:

          【解决方案6】:

          看看来自 Submain 的 CodeIt.Right

          【讨论】:

            【解决方案7】:

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

            以下是验证某些类型是否不可变的示例: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

            编辑:第二个链接似乎已经消失在时间的流沙中。

            【讨论】:

            • 您的第二个链接已损坏。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-05-25
            • 1970-01-01
            • 2011-01-21
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多