如何针对文件子集运行代码分析?

时间:2012-11-08 00:19:28

标签: visual-studio-2010 code-analysis

目前,我正在开展一项未启用代码分析的项目。

我想做的只是在我检查它们之前对我使用/ touch的文件运行CA但是有一些限制:

  • 我没有为项目启用它的选项。即使我做了......
  • 项目很大; CA需要运行一个年龄,警告很多。从列表中挑选出来的文件将成为大海捞针。

有人有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

我想做的就是针对我使用的文件运行CA / touch

关于第一点,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 Regression API重大更改包含这些适用的代码规则。

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