2013-02-12 93 views
2

我使用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時纔會出現問題。

+0

Debug vs Release builds? – 2013-02-12 20:30:28

+0

@AustinSalonen:當我調用'CreateTemporaryProject'時,我總是仔細地傳入完全相同的程序集列表,這些程序集現在恰好是調試程序集。 – 2013-02-12 20:33:09

+0

程序集不會在兩次分析之間重新編譯? – 2013-02-12 20:55:34

回答

1

這是一個現在已修復的錯誤NDepend version 5

有趣的是,這個錯誤來自於一個併發訪問問題,當兩個不同的線程分析了兩個大的程序集時,這個問題表現出不同的分析結果!

相關問題