我使用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