Нахождение собственности рассчитывает с отражением - PullRequest
2 голосов
/ 06 июля 2011

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

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

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

Ответы [ 2 ]

2 голосов
/ 06 июля 2011

Функция ReSharper «Find Usages Advanced» позволяет найти ссылки в библиотеках, а также в текущем решении. Я не использовал эту особенность, поэтому не уверен, насколько хорошо она работает (функция Find Usages в решении работает очень хорошо), но вы можете получить пробную версию ReSharper и попробовать ее. Я предполагаю, что вам нужно запустить его из Решения, в котором есть Проект со ссылками на различные библиотеки, которые вас интересуют.

0 голосов
/ 06 июля 2011

Я не думаю, что это можно сделать с помощью "обычного" отражения, поскольку использования не может быть обнаружено, если смотреть только на структуру классов. Я предполагаю, что вам нужно разобрать IL и проанализировать его, ища инструкции call, calli и callvirt (поиск свойств также является вызовом метода). Вы можете получить IL для метода с typeof(SomeType).GetMethod("Method").GetMethodBody().GetILAsByteArray(), но может быть трудно проанализировать его, когда он имеет форму байтового массива. Возможно, вы захотите взглянуть на Cecil , который может помочь вам проанализировать байт-код.

Конечно, для этого уже могут быть инструменты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...