Может ли NDepend выводить код во всех методах вверх по дереву зависимостей для определенных методов?

Я хочу иметь возможность интегрировать в наш процесс сборки возможность сравнивать после каждой сборки с предыдущей сборкой любые изменения кода, сделанные для любых зависимостей, для списка конкретных методов.

Итак, если у меня есть два метода, которые обращаются к базе данных, я хочу иметь возможность определить, имел ли какой-либо метод, вызывающий любой из этих двух методов, все пути вверх по дереву зависимостей какие-либо изменения кода.


person David Penn    schedule 04.08.2015    source источник


Ответы (1)


Такой запрос кода должен ответить на ваши потребности:

// <Name>Methods that call Parse(String) or get_TestName() and that was added or where cpde was changed</Name>
from m in Methods 
let depth0 = m.DepthOfIsUsing("NUnit.Core.RuntimeFramework.Parse(String)")
let depth1 = m.DepthOfIsUsing("NUnit.Core.Test.get_TestName()")
where (depth0  >= 0 || depth1 >= 0)
   && (m.CodeWasChanged() || m.WasAdded())

orderby (depth0 != null ? depth0 : depth1)
select new { m, depth0, depth1  }

Конечно, с префиксом warnif count > 0 вы можете преобразовать его в правило, если хотите.

Вот этот кодовый запрос в действии, подчеркнутые методы — это те, в которых код был изменен по сравнению с базовым состоянием, методы, выделенные жирным шрифтом, — это те, которые были добавлены по сравнению с базовым состоянием.

NDepend вызывает методы сравнения дерева зависимостей

Вы можете щелкнуть правой кнопкой мыши подчеркнутые методы, чтобы попросить увидеть различия в исходном коде. код с помощью предпочитаемого вами инструмента сравнения.

Вы также можете экспортировать результат в график (кнопка Export to Graph), но тогда вы можете получить непересекающиеся графики, так как неизменные методы будут отсутствовать:

введите здесь описание изображения

person Patrick from NDepend team    schedule 05.08.2015
comment
Спасибо, я скачаю пробную версию и посмотрю, как она пойдет. - person David Penn; 05.08.2015