是否有StyleCop / FxCop自动固定工具?

时间:2009-08-31 23:15:27

标签: fxcop stylecop

是否有可以自动修复StyleCop和FxCop规则的工具,而不是手动修复数千个警告和错误?

必须有一个,这是一个很好的商机!

9 个答案:

答案 0 :(得分:25)

不,令人沮丧。这就是Style Cop适得其反的原因。一致的格式看起来不错,但它的生产效率很小(真正使代码难以阅读的是长度和indirection)。完美的间距不值得花费数小时手动调整线条。

如果有一个自动工具来实现一致的格式化,我可能会在签入后将其挂钩。但是风格警察是由虐待狂制造的,他们强迫用户手动进行繁琐的格式化。大概他们的谈话是这样的:

  

Bob:使用模式匹配,软件识别丑陋的代码   查理: - 修好了!   鲍勃:没有。它会打印一条关于每次违规的消息   查理:然后用户右键单击以解决所有问题?   鲍勃:没有。消息骂他们“逗号周围的无效间距”   查理:然后解释用户如何解决它?   鲍勃:不,这些信息在一份单独的文件中   查理:在谷歌上?   鲍勃:不。

我讨厌风格警察。它低于最低可行产品。

答案 1 :(得分:9)

StyleFix将修复StyleCop发现的许多违规行为 GhostDoc可以轻松地为您的方法添加评论。

Lateley我一直在使用Telerik JustCode。它确实有助于防止风格问题。

答案 2 :(得分:6)

FxCop还没有自己的固定功能。 Project Roslyn(目标是在VS11之后的某个地方发布)将为静态分析规则提供一个新引擎,并附带作为功能内置的修复。

有许多工具可以提供自己的修复规则。之前已经提到过一些:

这些有时会标记比FxCop或StyleCop更多或更多的东西。而且这里存在冲突规则的危险。如果您是FxCop之类的工具,那么这里已经发生了这种情况。

还有一些开源项目试图为最常见的FxCop和StyleCop警告提供修复。我没有尝试过StyleCop,但是大多数FxCop自动修复工具都不能很好地工作,因为很少有FxCop规则真的很容易修复。

这些工具都无法帮助您修复自定义规则(或您从其他来源下载的规则,例如MSOCAF或开源项目(例如FxCopContrib)或其他Microsoft项目(例如Open Source Web Service Software Factory CTP中包含的规则)。

而且,特别是对于FxCop规则,我看到虽然被标记的东西,这似乎很容易解决,实际上指向一个更大的问题。

  • 以性能规则为例,要求您将所有方法设为静态。这实际上向你指出你有一些内聚力低的课程。将所有内容标记为静态可能会使代码更快一些,但不会改进您的设计,并且从长远来看,肯定会使代码的测试和维护更加困难。
  • 或者提到您的规则应该为任何具有支持它的重载的方法提供IFormatProvider。我看到太多的开发人员只是将CurrentCulture放在那里并完成了它。在两个不同配置的系统之间传输文件时仍然会出现导入/导出错误。随着全球化,本地化和国际化是难以解决的问题。

这对StyleCop的应用要少得多,因为编码风格通常与实际的底层实现或设计无关。如果您没有使用默认情况下附带StyleCop的StylecopFixer,看起来Resharper integration是一个很棒的附加组件。

答案 3 :(得分:2)

StyleCop可能(对于某些违规行为) - 有大量的代码格式化程序。

FxCop no(我知道)。

ReSharper可以帮助进行代码清理和重构,但它不会神奇地修复所有FxCop违规行为(尽管它会指出并帮助解决一些问题)。

FxCop问题类似于设计模式;他们通常需要考虑确定应用解决方案的正确方法。在某些情况下,违规行为可能不适用,可以予以取消。您还可以根据您的特定需求调整FxCop规则;标准规则适用于分布式框架和库,并不是通用的。不过,他们中的大多数都是非常非常好的建议。

答案 4 :(得分:2)

StyleCopFixer是在Visual Studio IDE中自动修复StyleCop异常的工具。

答案 5 :(得分:2)

我用来修复stylecop修复问题的一些工具是,

  1. CodeMaid(免费开源)
  2. GhostDoc(已在同一篇文章的早期回复中提出过。您需要购买此产品,附带有限的14天试用版)
  3. StyleCopFixer(已经在同一篇文章的早期回复中提出过。免费提供,作为VS2010的扩展)
  4. 希望有所帮助:)

答案 6 :(得分:0)

第一次运行Stylecop,通常我体验到的大部分错误都是与代码格式相关的错误。

我使用了两个工具来重新组织代码以匹配Stylecop规则:

第一个成了我的偏好;它是命令行工具,我将它添加到Visual Studio中的自定义工具。 第二个是Visual Studio的插件,因此使用单个文件非常方便。

正如已经提到的,有一些工具试图修复一些Stylecop错误,但在我看来它们工作得很差,因此我放弃使用它们并且不能推荐任何错误。

我认为FxCop没有工具,我不相信应该有..

答案 7 :(得分:0)

StyleCopAutoFix是一个控制台应用程序,它将自动修复与丢失(或不必要)空行相关的StyleCop违规。它是免费的开源。

虽然它修复的违规范围相当有限,但它以安全的方式修复它们(它不太可能破坏您的代码或改变行为)。这些违规行为也是最常见的行为。

如果您使用Visual Studio,我还建议您运行此脚本:https://gist.github.com/JayBazuzi/9e0de544cdfe0c7a4358。它会自动格式化解决方案中所有文件的所有代码。

在我运行此应用程序(以及上面的VS脚本)的项目中,它修复了高达60%的违规行为。

免责声明:我是此作者。

答案 8 :(得分:0)

块上有一个(相对)新的Visual Studio扩展(StyleCopAid) - 尝试一下:

https://visualstudiogallery.msdn.microsoft.com/505d2931-143f-4055-b7dd-a5d7c95bb085

除此之外 - 修复排序规则,抑制某些消息,并具有撤消选项。

从2018年7月更新:“该工具支持Visual Studio 2010,2012和2013版本。”