2016-06-16 1 views
1

У нас есть тип с именем OldThing, который мы хотим обесценить с течением времени.Как я могу получить NDepend для анализа отказа, если новые вызовы используются для устаревшего типа?

Нам нужен запрос/правило NDepend, в котором указывается from this point on, don't add any more calls to 'OldThing'.

В настоящее время мы используем NDepend и имеем базовую сборку для проверки таких вещей, как don't make large methods even larger.

Итак, мы хотели бы использовать NDepend для отслеживания любых дополнительных звонков, сделанных в OldThing. У меня есть следующий запрос CQL:

// <Name>Don't use OldThing going forwards</Name> 

warnif count > 0 

let containsMethods = Methods.WithFullNameIn(
    "MyNamespace.OldType.get_Foo()", 
    "MyNamespace.OldType.get_Bar()") 

from m in Application.Methods.UsingAny(containsMethods) 
where m.IsUsedRecently() 
select m 

... проблема в том, что это не работает; он не находит никаких звонков.

Есть ли лучший способ сделать это в NDepend (возможно, используя trend metrics)?

ответ

1

Вам не нужен where m.IsUsedRecently(), это только для вызовов сторонних методов.

Тогда вам нужно дважды проверить, что выражение let соответствует соответствующим устаревшим методам (вы также можете совместить их все сразу, используя ObsoleteAttribute).

Наконец, вы должны сделать это правило critical и он должен работать :)

+0

спасибо @Patrick. Это теперь сообщает об использовании в измененных файлах, но я бы хотел, чтобы он сообщал об «дополнительных» обычаях. Например, коллега открыл файл и изменил его (но не добавил никаких * дополнительных * вызовов к этим методам), но теперь сборка разбита на 5 способов использования этих методов. –

+0

NDepend может определить, вызывает ли метод другой метод, но не указывает, что метод вызывает N раз другой метод. В этом контексте вы хотите узнать, какой новый или реорганизованный метод вызывает устаревший метод? (и не назвал его базовым) –

+1

Было бы неплохо, если бы была функция, которая могла бы сравнивать «счет» от одной сборки к другой. Затем я мог бы добавить новый запрос «тренд» для каждой сборки, а затем посмотреть, увеличился ли счет. –

 Смежные вопросы

  • Нет связанных вопросов^_^