Wie kann ich eine Abhängigkeit von Ruby-Methoden finden?

8

Gibt es eine Möglichkeit, eine Liste von Methoden zu erhalten, die eine Ruby-Methode implementieren, wenn diese Methode aufgerufen wird?

Zum Beispiel:

%Vor%

Ich möchte wissen, dass beim Aufruf von "foo2" das erste "foo" und das zweite "puts" und die entsprechenden Dateien, in denen diese Methoden definiert sind, aufgerufen werden. (Wenn "puts" andere Methoden aufruft, möchte ich sie auch wissen)

Ist das möglich? und wenn, ja 'wie? Ich könnte sagen, dass meine Frage darin besteht, die Methodenabhängigkeiten zu finden.

    
p.matsinopoulos 20.08.2013, 16:03
quelle

2 Antworten

4

Sie können dies mit set_trace_func erreichen. Da Ruby jedoch dynamisch ist, benötigen Sie auch Testcode, um die Methoden aufzurufen, so dass die Aufrufreihenfolge gedruckt wird.

%Vor%

TracePoint ist in Ruby 2.0 eine überlegene Alternative.

    
Max 20.08.2013, 19:49
quelle
4

Statische Code-Analyse, insbesondere eine, die Sie ausführen möchten (Auflistung aller in einer Methode aufgerufenen Methoden), ist in Ruby sehr schwierig (fast unmöglich), da die Sprache dynamisch ist und sehr starke Metaprogrammierungstechniken zulässt. Selbst der Parser selbst kennt die erforderlichen Methoden nicht, bis er versucht, den Code auszuführen.

Beispiel: Aufruf von eval mit Code, der aus einer Datei gelesen wurde.

    
Tomasz Stachewicz 20.08.2013 16:30
quelle

Tags und Links