У меня есть некоторый унаследованный код, который имеет тенденцию передавать объекты как интерфейсы (например, IFoo), а затем в произвольных местах кода самопроизвольно приводить их к конкретным реализациям этих интерфейсов (скажем, MyConcreteFoo).
Вот глупый пример:
public bool IsThisFooScaredOfMonkeys(IFoo foo)
{
if (foo is MyConcreteFoo)
{
return ((MyConcreteFoo)foo).BelievesMonkeysAreEvil;
}
return false;
}
Что я хотел бы сделать, так это написать CQL-запрос NDepend, чтобы подобрать такие типы приведения и дать мне счетчик за метод, за тип или за что-нибудь еще. Просто кое-что, что я знаю, где я могу начать сосредотачивать свои усилия на избавлении от этой конкретной марки глупости, вместо того, чтобы посылать мою команду, разбирающуюся в коде на случайной охоте на броски ...
Кто-нибудь знает, есть ли способ сделать это? Я предполагаю, что нет (не может быть слишком много людей, которым нужна эта конкретная функциональность), но я решил сначала спросить здесь ...: -)
Конечно, любые другие идеи о том, как ускорить охоту за заклинаниями, будут в равной степени оценены.