StyleCop for Visual Studio的替代方案?

时间:2008-11-13 03:29:18

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

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

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

那里有这样的商业产品吗?

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

7 个答案:

答案 0 :(得分:12)

添加规则是officially supported

  

正如所承诺的,我们也将发布   StyleCop的SDK文档   解释如何编写自定义规则   以及如何将工具集成到   自定义构建环境。 SDK   文档目前正在最终确定   审查,我们希望非常发布   不久。    - JasonAll

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

  • 文件标题(SA1633-SA-1640)
  • 代码订购(SA1200-SA1202)
  • 要求“此”(SA1101)

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

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

答案 1 :(得分: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友好的方式自动格式化代码。

答案 2 :(得分:5)

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

答案 3 :(得分:3)

Agent Smith非常好。它需要Resharper。

答案 4 :(得分:3)

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

默认情况下会提出超过200 code rules,其中包括设计架构代码质量代码演变命名约定死代码 .NET Fx用法 ......

CQLinq致力于编写可以verified live in Visual Studioverified during build process and reported in an HTML/javascript report的代码规则。

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

CQLinq code rule

答案 5 :(得分: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

编辑:第二个环节似乎在时间的流逝中失去了。

答案 6 :(得分:2)

查看Submain的CodeIt.Right