代码之家  ›  专栏  ›  技术社区  ›  Sir Rippov the Maple

如何在现有的代码基上实现fxcop/static分析

  •  5
  • Sir Rippov the Maple  · 技术社区  · 17 年前

    在现有的代码基础上实现fxcop/static分析时,使用了哪些策略?如何最有效地减少静态分析违规?

    4 回复  |  直到 14 年前
        1
  •  13
  •   Haacked    17 年前

    首先充分利用[SuppressMessage]属性。至少在开始的时候。一旦您通过属性将计数设置为0,然后输入一个规则,新签入可能不会引入FxCop冲突。

    Visual Studio 2008有一个很好的代码分析功能,允许您确保代码分析在每个生成上运行,并且可以将警告视为错误。这可能会降低一些速度,所以我建议设置一个持续集成服务器(如CruiseControl.net),并让它在每次签入时运行代码分析。

    一旦您控制了它,并且没有在每次签入时引入新的冲突,就开始一次处理所有类的fxcop冲突,目的是删除您使用的suppressMessageAttributes。

    跟踪您真正想要保留的内容的方法是,总是向您真正想要禁止的内容添加一个对正值。

        2
  •  3
  •   Frank Krueger    17 年前

    用传递样式重写代码!

    说真的,一个旧的代码库会有数百个错误——但这就是为什么我们有新手/实习生程序员。纠正fxcop违规行为是获得代码库概述并学习如何编写符合.NET规范的代码的一个很好的方法。

    所以只要咬一口子弹,喝大量的咖啡因,几天后就可以度过难关!

        3
  •  0
  •   Ben R    17 年前

    尼科斯 looks like 它可以做你想要做的,但我不确定它是否可以集成到CruiseControl.NET自动化构建中,如果代码不满足要求(这是我希望发生的事情),它是否会使构建失败。

    还有其他想法吗?

        4
  •  -1
  •   Patrick from NDepend team    14 年前

    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 .

    推荐文章