Я использую NDepend 4.1 API для подсчета строк кода в Visual Studio 2010 решение, которое имеет несколько проектов, которые все таргетингом на .NET Framework 4. Вот мой код:Почему 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
, хотя Я не изменил решение или его скомпилированные сборки каким-либо образом. Например, если я запустить анализ три раза, я мог бы получить totalLoc
значение 12100, 12220 и 12075.
рыть немного глубже, я начал перебор analysisResult.CodeBase.Application.Methods
и написание имени каждого метода и NbLinesOfCode
к текстовый файл. Когда я разбираю файлы из любых двух аналитических прогонов, я замечаю, что большинство методов показывают согласованное количество LOC, но есть несколько, которые этого не делают. Я не вижу ни одного шаблона в этом, и каждый раз он не является одним и тем же набором методов.
Что может быть причиной этого странного поведения?
Update 1: Если я бегу анализ на любой одной сборки, я получаю последовательный подсчет LOC. Проблема возникает только при передаче нескольких сборок в CreateTemporaryProject
.
Отладка vs выпускает сборки? –
@AustinSalonen: Когда я называю 'CreateTemporaryProject', я стараюсь всегда передавать точно такой же список сборок, которые сейчас являются сборками Debug. –
Сборы не перекомпилируются между двумя анализами? –