1

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

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

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

有人有想法么?

4

1 回答 1

0

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

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

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

提出了大约 200 条默认代码规则,例如避免使复杂方法更加复杂。如果我们看一下这条规则的 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 需要很长时间才能运行,并且警告很多。您现在可以尝试 NDepend,看看它不会让您等待。分析大型代码库并执行 200 条默认规则(可以轻松自定义,因为它们只是 C# LINQ 查询)需要几秒钟。

于 2012-11-08T08:07:36.027 回答