代码之家  ›  专栏  ›  技术社区  ›  chakrit Dutchie432

如何管理fxcop海量报告

  •  10
  • chakrit Dutchie432  · 技术社区  · 16 年前

    我最近开始用它。然而,在与我公司最大的项目之一进行竞争之后。它带来了成山的问题。

    问题清单是如此之多,要找到并解决一些问题,即使不是所有的问题,也需要几天的时间。

    现在,我知道修复fxcop告诉你要修复的一切不是很实际。但因为我是这个小工具的新手…

    有效使用fxcop的一些好技巧和技巧是什么?

    在新项目和现有项目上?

    如果还提供给我公司的程序员一般写好代码?

    7 回复  |  直到 11 年前
        1
  •  4
  •   Community leo1    7 年前

    首先,您可以从一个小的规则集开始。然后增加应用规则的数量。

    你也必须看看 this questio N的答案…

        2
  •  3
  •   shsteimer    16 年前

    通过运行一次fxcop并排除找到的所有内容来创建基线。

    将此文件保存为.fxcop文件,并使用该文件运行将来的检查。

    然后,当您对代码进行更改时,您将创建新的、可管理的冲突。例如,如果您更改了一个方法的签名,fxcop将刷新这些内容。

    如果你有时间的话,你可以通过取消排除这些违规行为,一次一个地解决这类违规行为。

        3
  •  3
  •   Austin Salonen gmlacrosse    16 年前

    一定要过滤掉那些对你的组织不重要的。例如,整个国际化模块在很大程度上对我们的一个项目不重要,所以我们只是将其排除在外,仅此一项就足以使列表易于管理。(我们希望在该块中实现一些很好的建议,但它们对应用程序当时并不重要。)

    您还可以创建一些fxcop项目,对异常进行分组,直到您将数字减少到可管理的程度(“立即修复”、“很快修复”、“随时修复”)。

    我很肯定我花了整整一周的时间排除/包括违规行为,直到我们有了一份适合我们政策的清单。然后是另一个2-3的违规行为。:

        4
  •  2
  •   Ryan Lundy    16 年前

    fxcop的优点是,它是一个很好的工具 针对特定的用例 .它旨在帮助类库开发人员。因此,如果您是Developer Express或Infrasgistics,并且您正在创建一个代码库供世界各地的开发人员使用,那么您需要良好的命名、良好的全球化以及许多其他功能。

    因此,如果你把所有的表单命名为frmmain,fxcop会抱怨,因为在类库中它看起来很难看。但是如果你只是在开发一个内部的WinForms应用程序,你不必在意。同样,您将疯狂使用有关iformatProvider、指定文本方向的MessageBox重载等所有内容。但是,除非您要为全球受众创建代码,否则可以忽略这些代码。

    重要的是要了解fxcop的目标受众。您可以根据与受众不同的方式忽略某些建议。

        5
  •  1
  •   ChrisW    16 年前

    按规则类型对输出排序…然后浏览排序列表,看看哪些破坏的规则类型子集是重要的,值得修复iyo。

        6
  •  1
  •   Oleksii G.    16 年前

    并不是所有的fxcop报告都是“必须修复”的问题。例如,使用字符串串联将用户输入插入数据库命令比样式问题(如匈牙利语)或捕获异常(而不是更具体的异常)严重得多。

        7
  •  0
  •   Patrick from NDepend team    12 年前

    fxcop的另一种选择是使用该工具 NDepend . 此工具允许写入 C LINQ查询的代码规则 (我们称之为什么 CQLinq ) 免责声明:我是该工具的开发人员之一

    不止 200 code rules 默认情况下被提议。自定义现有规则或创建自己的规则非常简单,这要归功于 众所周知的 C·LINQ语法。

    保持低误报数量 (即 为了避免铺天盖地的报道 )cqlinq提供了独特的功能来定义集合是什么。 贾斯密密码 通过前缀为的特殊代码查询 诺特码 . 可以找到有关此功能的更多说明 here . 以下是示例2 诺特码 默认查询:

    保持低误报数量 ,使用cqlinq,您也可以只将规则结果集中在添加的代码或重构的代码上,因为 defined baseline in the past . 请参见以下规则,即检测自基线以来添加或重构的过于复杂的方法:

    warnif count > 0 
    from m in Methods
    where m.CyclomaticComplexity > 20 &&
          m.WasAdded() || m.CodeWasChanged()
    select new { m, m.CyclomaticComplexity }
    

    最后,请注意,使用ndepend代码规则可以验证 live in Visual Studio 在构建过程中, generated HTML+javascript report .