【问题标题】:How do you run Code Analysis against a subset of files?如何对文件子集运行代码分析?
【发布时间】:2012-11-08 16:07:36
【问题描述】:

目前,我正在/在一个没有打开代码分析的项目中工作。

我想做的只是在签入之前对我使用/触摸的文件运行 CA,但有一些限制:

  • 我没有为项目打开它的选项。即使我这样做了......
  • 工程浩大; CA 需要很长时间才能运行,并且警告很多。从列表中挑选出我接触过的文件将是大海捞针。

有人有什么想法吗?

【问题讨论】:

    标签: visual-studio-2010 code-analysis


    【解决方案1】:

    一个想法是通过工具NDepend 运行代码规则(免责声明:我是该工具的开发人员之一)。

    我想做的只是对我使用/触摸的文件运行 CA

    关于第一点,NDepend 让我们通过 LINQ 查询编写代码规则,并且建议的一个工具是在当前代码版本和代码的先前版本(基线)之间query the code diff。因此,用户可以编写代码规则,只关注从现在到基线之间发生的变化。

    提出了大约 200 条默认代码规则,例如 Avoid making complex methods even more complex。如果我们查看这条规则的 LINQ 代码,我们可以看到,它首先只过滤 CodeWasChanged 所在的方法,然后检测那些足够复杂的方法,然后变得更加复杂。方法复杂度在这里通过流行的代码度量 Cyclomatic Complexity 定义。

    // <Name>Avoid making complex methods even more complex (Source CC)</Name>
    
    warnif count > 0 
    from m in JustMyCode.Methods where
      m.CodeWasChanged() // <-----
    
    let oldCC = m.OlderVersion().CyclomaticComplexity
    where oldCC > 6 && m.CyclomaticComplexity > oldCC 
    
    select new { m,
        oldCC ,
        newCC = m.CyclomaticComplexity ,
        oldLoc = m.OlderVersion().NbLinesOfCode,
        newLoc = m.NbLinesOfCode,
    }
    

    所有默认或自定义规则都可以调整为仅限于从基线开始重构的代码或引入的代码。代码规则组 Code Quality RegressionAPI Breaking Changes 包含这些开箱即用的适配代码规则。

    关于这一点CA 需要很长时间才能运行,并且警告很多。您可以try NDepend now,并看到它不会让您等待。分析大型代码库并执行 200 条默认规则(可以轻松自定义,因为它们只是 C# LINQ 查询)需要几秒钟。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-31
      • 2018-07-11
      • 2018-04-08
      • 1970-01-01
      • 1970-01-01
      • 2013-01-03
      • 2010-09-27
      相关资源
      最近更新 更多