gpt4 book ai didi

c# - 为什么 NDepend 不产生稳定的 LOC 计数?

转载 作者:太空宇宙 更新时间:2023-11-03 13:47:21 25 4
gpt4 key购买 nike

我正在使用 NDepend 4.1 API 来计算 Visual Studio 2010 解决方案中的代码行数,该解决方案有几个项目,这些项目都以 .NET Framework 4 为目标。这是我的代码:

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 结果,即使我没有以任何方式更改解决方案或其编译的程序集。 对于例如,如果我运行分析 3 次,我可能会得到 totalLoc 值 12100、12220 和 12075。

深入挖掘,我开始遍历 analysisResult.CodeBase.Application.Methods 并将每个方法的名称和 NbLinesOfCode 写入文本文件。当我从任意两次分析运行中区分文件时,我注意到大多数方法显示一致的 LOC 计数,但有少数方法不显示。我在其中看不到任何模式,而且似乎每次都不是同一组方法。

是什么导致了这种奇怪的行为?

更新 1:如果我对任何单个组件运行分析,我会得到一致的 LOC 计数。仅当我将多个程序集传递给 CreateTemporaryProject 时才会出现此问题。

最佳答案

这是一个错误,现已在 NDepend version 5 中修复!

有趣的是,这个 bug 来自一个微妙的并发访问问题,当在两个不同的线程上分析 2 个大型程序集时,它表现出不同的分析结果!

关于c# - 为什么 NDepend 不产生稳定的 LOC 计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14841218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com