我使用NDepend的4.1 API至2010年的解决方案,有几个项目,这些项目都是针对.NET Framework 4的下面是我的代码数的代码行,在Visual Studio中:为什么NDepend不会产生稳定的LOC计数?
var servicesProvider = new NDependServicesProvider();
var projectManager = servicesProvider.ProjectManager;
var project = projectManager.CreateTemporaryProject(...);
var analysisResult = project.RunAnalysis();
var methods = analysisResult.CodeBase.Application.Methods;
var totalLoc = methods.Where(i => i.NbLinesOfCode.HasValue).Sum(i => i.NbLinesOfCode.Value);
如果我反复在我的解决方案上运行此分析,我得到了不同的结果totalLoc
即使我没有以任何方式更改解决方案或其编译的程序集。例如,如果我运行分析三次,我可能得到的12100 totalLoc
值,12220和12075.
挖得更深一些,我已经开始通过analysisResult.CodeBase.Application.Methods
迭代,写各种方法的名称和NbLinesOfCode
到文本文件。当我对任何两次分析运行中的文件进行比较时,我注意到大多数方法显示一致的LOC计数,但有一些方法没有。我看不到任何模式,每次看起来都不是同一组方法。
什么可能导致这种奇怪的行为?
更新1:如果我运行分析任何单个大会,我得到一致的LOC计数。只有当我传递多个程序集到CreateTemporaryProject
时才会出现问题。
Debug vs Release builds? – 2013-02-12 20:30:28
@AustinSalonen:当我调用'CreateTemporaryProject'时,我总是仔细地传入完全相同的程序集列表,这些程序集现在恰好是调试程序集。 – 2013-02-12 20:33:09
程序集不会在两次分析之间重新编译? – 2013-02-12 20:55:34