Ermitteln, ob eine Methode eine Methode in einer anderen Assembly aufruft, die eine neue Anweisung enthält, und umgekehrt

8

Ich möchte eine Regel schreiben, die fehlschlägt, wenn eine Objektzuordnung innerhalb einer Methode erfolgt, die von einer Methode aufgerufen wird, die mit einem bestimmten Attribut gekennzeichnet ist.

Ich habe das bisher funktioniert, indem ich alle Methoden, die meine Methode aufrufen, mit CallGraph.CallersFor() überprüfe, um zu sehen, ob irgendeine dieser Elternmethoden das Attribut hat.

Dies funktioniert, um übergeordnete Methoden in derselben Assembly wie die zu überprüfende Methode zu überprüfen. Bei Online-Lektüren scheint CallGraph.CallersFor() jedoch einmal alle Assemblys überprüft zu haben, jetzt jedoch nicht.

Frage: Gibt es eine Möglichkeit, eine Liste von Methoden zu erhalten, die eine bestimmte Methode aufrufen, einschließlich solcher in einer anderen Assembly?

Alternative Antwort: Wenn das obige nicht möglich ist, wie durchlaufe ich jede Methode, die von einer bestimmten Methode aufgerufen wird, einschließlich solcher in einer anderen Assembly.

Beispiel:

%Vor%

Es macht mir nichts aus, wo die Regel den Fehler meldet, in diesem Stadium reicht es aus, den Fehler zu bekommen.

    
George Duckett 22.06.2011, 11:54
quelle

2 Antworten

2

Ich habe dieses Problem gelöst, indem ich alle referenzierten DLLs in meinem FxCop-Projekt hinzugefügt habe und den folgenden Code verwendet habe, der eine Aufrufstruktur manuell erstellt (fügt auch Aufrufe für abgeleitete Klassen hinzu, um ein anderes Problem zu behandeln, hier .

%Vor%     
George Duckett 27.06.2011, 09:15
quelle
0

Hast du es auf diese Weise versucht,

%Vor%     
Illuminati 26.06.2011 09:21
quelle

Tags und Links