Ich habe eine Methode m1 in Klasse A, die eine Variable b vom Typ Klasse B hat und m1 ruft eine Methode m2 in Klasse B durch Aufruf von b.m2 (...). Nun ist die Methode m2 nicht in Klasse B implementiert, sondern in einer Klasse C, aus der B abgeleitet wurde. Wenn Sie jQAssistant für dieses Szenario ausführen, erhalte ich die folgenden Beziehungen, wenn alle drei Klassen demselben Artefakt angehören: (A) - [: DECLARES] -> (m1) - [: INVOKES] -> (m2) < - [: DECLARES] - (B) < - [: EXTENDS] - (C) und (C) - [: DECLARES] -> (m2 '). Beachten Sie, dass (B) - [: DECLARES] -> (m2) eine Art synthetische Deklaration ist, da m2 nicht wirklich von B deklariert, sondern nur geerbt wird.classPath: Resolve löst Methodenaufrufe unter bestimmten Umständen nicht richtig
Angenommen, Klasse A gehört zu einem anderen Artefakt als Klasse B und C. Dann erzeugt der Auflösungsmechanismus nicht die synthetische Deklaration in der aufgelösten Klasse B. Genauer gesagt generiert das Scannen von A's Artefakt: (A) - [: DEKLAREN] -> (m1) - [: INVOKES] -> (m2 '') < - [: DEKLAREN] - (B '). Und Auflösung über das Konzept classPath: Resolve wird erstellen: (B ') - [: RESOLVES_TO] -> (B) aber es wird nicht (B) - [: DECLARES] -> (m2) und damit m2' ' kann nicht in m2 aufgelöst werden. Somit kann auch die Beziehung: INVOKES nicht aufgelöst werden.
Klingt wie ein Problem, das behoben werden muss, kann ich bitte Sie, ein auf GitHub zu schaffen? Prost, Dirk –