我打算在我们正在进行的项目中开始使用FxCop。但是,当我尝试选择所有可用规则时,看起来我必须在代码中进行大量更改。作为一个“团队成员”,我不能马上开始进行这些更改,比如命名约定更改等。无论如何我想开始使用FxCop和最小规则集,并且随着我们的继续逐渐增加规则集。你能否建议我必须有FxCop规则我应该开始遵循。或者你建议采取更好的方法吗?
注意:我的大部分代码都在C#中。
答案 0 :(得分:12)
关于我们最重要的代码:
信不信由你,FxCop教你如何编写更好的代码......很棒的工具!所以对我们来说,所有规则都同样重要。
答案 1 :(得分:8)
在我看来,请执行以下操作:
对于任何新项目,请遵循所有FxCop规则。您可能想要禁用其中的一些,因为并非所有内容都对您的项目有意义。 对于现有项目,请遵循这些类别中的规则作为最小集:
由于与其他类别相比,现有项目中通常只有少数规则违规,但可能会提高应用程序的质量。当这些规则明确时,请尝试修复以下类别:
由于这些可以让您更轻松地发现与违规行为有关的错误,但现有代码中存在大量违规行为。
始终按级别/修复类别对违规进行排序,并从关键类别开始。暂时忽略警告。
如果您不知道,还可以从Microsoft获得StyleCop,在源代码级别检查您的代码。确保在安装期间启用MSBuild集成。
答案 2 :(得分:4)
一些规则可以避免我们的错误或泄漏:
有些人帮助我们设计了更好的设计,但要小心,当中央API受到影响时,它们可能会导致您进行大量重构。我们喜欢
我们项目中的某个人尝试了效果规则而没有任何改进。 (实际上,这些规则是关于微优化的,如果没有瓶颈识别显示需要微优化,则不会产生任何结果)。我建议不从这些开始。
答案 3 :(得分:2)
FxCop的替代方法是使用允许编写Code Rules over C# LINQ Queries (namely CQLinq)的工具NDepend。 免责声明:我是该工具的开发人员之一
默认情况下会提出超过200 code rules的内容。由于众所周知的 C#LINQ语法,自定义现有规则或创建自己的规则非常简单。
NDepend在某些代码规则上与FxCop重叠,但提出了大量独特的代码规则。以下是我将分类为必须遵循的一些规则:
请注意,可以在live in Visual Studio中的构建流程时验证规则generated HTML+javascript report。
答案 4 :(得分:2)
一次启用一条规则。修复或排除它报告的任何警告,然后从下一个警告开始。
答案 5 :(得分:2)
最小的fxcop和代码分析(如果使用VS2010 Premium或Ultimate)如下:http://msdn.microsoft.com/en-us/library/dd264893.aspx
答案 6 :(得分:1)
我们是网上商店,所以我们放弃了以下规则:
我们会放弃在依赖项中使用更高框架的规则,因为我们的一些CMS仍然是.NET 2.0,但这并不意味着DAL / Business Layers不能是.NET 3.5,只要你'不要试图返回IQueryable(或任何.NET 3,3.5)。
答案 7 :(得分:1)
在我们的流程中,我们启用了所有规则,然后我们必须证明任何抑制作为审核流程的一部分。通常情况下,不能以时间效率的方式修复错误,或者错误引发错误(这有时会发生 - 特别是如果您的架构通过反射处理插件)。
我们还为全球化编写了一个自定义规则来替换现有规则,因为我们不想全局化传递给异常的字符串。
总的来说,我认为最好是遵守所有规则。在我目前的家庭项目中,我有四个构建配置 - 一个用于指定CODE_ANALYSIS定义,另一个用于指定CODE_ANALYSIS定义。这样,我可以通过构建非CODE_ANALYSIS配置来查看我压缩的所有消息。这意味着可以定期检查被抑制的消息,并根据需要对其进行寻址或删除。
从长远来看,我想做的是构建步骤,根据实际错误分析SuppressMessage属性,并突出显示那些不再需要的抑制,但目前我的设置无法实现。
答案 8 :(得分:0)
设计和安全规则是一个很好的起点。
答案 9 :(得分:0)
我完全同意Sklivvz。但是对于现有项目,您可以按类别清除FxCop违规类别。
Gendarme不时接受非常有用的新规则。所以你可以使用Gendarme。