答案 0 :(得分:9)
Gendarme确实是FxCop的Mono等价物。鉴于Microsoft计划在下一个Visual Studio的大多数版本中发布大量代码分析规则,您可能希望使用FxCop并坚持使用它。如果您的Visual Studio版本支持它(Visual Studio 2010 Premium和Ultimate),则最简单的FxCop集成版本(称为代码分析)。
有一个Visual Studio加载项,允许您run FxCop from inside Visual Studio Professional。您需要download FxCop 10 separately(it's part of the Windows Platform SDK)。请注意Visual Studio integrated version comes with a few additional rules,因此输出可能会有所不同。
由于Gendarme没有直接集成到Visual Studio(though you can make it part of the build process)中,因此您不会看到许多使用Visual Studio的人使用Gendarme。主要是因为它不太为人所知。
最后,我从方便的角度使用FxCop。它已集成到我默认使用的Visual Studio版本中,并且在开发人员社区中是众所周知的。
但是如果你没有使用Visual Studio Premium或Ultimate,那么你可以选择其中一个甚至两个。请记住,如果你同时选择这两种,你可能会收到许多重复的消息甚至是相互冲突的消息,因为这些不同工具的创建者并不总是同意。
如果你不介意投入一些钱,那么,正如niaher所说,Resharper或Coderush是非常有用的补充(我不会称它们为替代品,因为它们不会在外面运行IDE(例如,在持续集成构建中)),因为它们在您编写代码时提供直接反馈。通常甚至不必编译它。而且他们经常提供“应用修复”的能力,而不必确切地知道该做什么。
答案 1 :(得分:8)
FxCop / Gendarme 的替代或良好补充是使用商业工具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相对于FxCop或Gendarme的优势在于,可以直接编写代码规则,并立即获得 结果。建议设施浏览匹配的代码元素。具体来说,这看起来像是: