Записывать все MethodCalls с минимальными изменениями кода (C # 3.0, .NET 3.5) - PullRequest
0 голосов
/ 17 июля 2009

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

Метод Inside: logger.MethodTraceLog ();

    public void MethodTraceLog()
    {
        var msg = "MethodTraceLog: " 
            + this.log.Logger.Name 
            + " ### "
            + new StackFrame(1).GetMethod().Name ;

        this.log.Debug(msg);
    }

Есть ли способ «внедрить» вызов регистрации в каждый метод класса без необходимости переписывать весь исходный код. Как я уже сказал, я мог бы, но это просто много работы. Какой-то "вызов функции post через отражение" в конструкторе или что-то подобное?

Спасибо за советы ... Если у кого-то есть дополнительные ссылки для анализа «поведения» приложения, я бы не сказал ему «нет» :-) Есть ли какие-то рамки? (За исключением точек останова и множества нажатий клавиш F)

Ответы [ 3 ]

4 голосов
/ 17 июля 2009

На самом деле, есть концепция, называемая Аспектно-ориентированным программированием (AOP), и реализация в c #, называемая PostSharp (http://www.postsharp.org/)), которая позволяет внедрять код после компиляции.

0 голосов
/ 17 июля 2009

Средство профилирования Visual Studio Team System при работе в режиме инструментария может сообщать о метриках, таких как «Большинство вызываемых функций»

Сводный отчет по эффективности http://i.msdn.microsoft.com/aa718874.fig3(en-us).jpg

Возможно, вы захотите изучить использование этой функции, если она включена в вашу версию Visual Studio.

0 голосов
/ 17 июля 2009

Я рекомендую вам сделать две вещи: одну, получить NDepend .

Два, получите бета-версию Visual Studio 2010 1. Запустите его на ВМ, если это необходимо. Я полагаю, что он будет генерировать диаграммы последовательности из кода и имеет другие функции, помогающие постичь кодовую базу на высоком уровне. Вам не нужно использовать это ни для чего, кроме понимания.

Недостатком является то, что я передаю вам моральное обязательство сообщать о найденных вами ошибках по http://connect.microsoft.com/visualstudio.

:-)

...