Klassenverfolgung möglich?

Status
Nicht offen für weitere Antworten.

spike78

Bekanntes Mitglied
Hallo zusammen,

ich habe folgendes Problem. Ich würde mir gerne ein Tool schreiben (evtl. gibts ja auch schon eines das sowas kann), dass mir ausgibt welche Klassen meines Java Programms aufgerufen wurden.

Beispiel:

Ich habe ein Java Programm test.jar das mit test.bat gestartet wird.
Folgendes wird z.B. gemacht
1) Main Klasse wird aufgerufen
2) Klasse x wird aufgerufen
3) Klasse y wird aufgerufen

Ich würde jetzt ganz gerne etwas schreiben, dass diese Aufrufe protokoliert. Eine Anpassung meines test.jar (z.B. mit einem System.out o.Ä. ist leider nicht möglich)

Danke und Gruß

Spike
 

spike78

Bekanntes Mitglied
Leider hab ich nicht die möglichkeiten die Klassen meiner zu untersuchenden Java Anwendung zu verändern. Da gelten bei uns ganz strenge Entwicklungsrichtlinien. Ist nun mal so. Daher muss nach einer Lösung suchen, bei der dies nicht notwendig ist.

Gruß
 
M

maki

Gast
Mit EMMA werden die Class Files verändert, aber das machst nicht du, sondern EMMA.
 

spike78

Bekanntes Mitglied
Was wird da verändert? Kannst du mir ungefähr beschreiben was dieses Tool macht?
Die meisten Tools die ich bisher gefunden habe, setzen alle auf JUnit Tests auf und sind daher leider für micht nicht relevant.

Gruß
 
M

maki

Gast
EMMA wird meist auch mit JUnit zusammen verwendet, muss aber nicht.

EMMA "instrumentiert" die Klassen, da wird soz. für jede Zeile Code ein Log geschrieben und später ausgewertet welche Code Zeilen aufgerufen wurden, man könnte auch sagen, dass die Aufrufe der Codezeilen protokolliert werden ;)

Erzähl doch mal genauer was du eigentlich erreichen willst.
 

spike78

Bekanntes Mitglied
Ok also folgendes. Wir entwickeln eine Anwendung x die jeden Tag mittels Regressionstests soweit wie möglich abgetestet wird. Die Anwendung besteht aus einem Server Teil und einem Client Teil. Der Server Teil wird mit dem Open Source Tool "Testmanager" abgetestet. Dazu werden bestimmte Kommandozeilenparameter mit bestimmten Parametern aufgerufen.

Nun hätte unser Produktchef gerne eine Auswertung darüber wie hoch der Anteil des Codes ist, der über die Regressionstests abgedeckt wird. Also so ne Art Report über die Testabdeckung.

Beispiel:

Klasse x wird 10 mal aufgerufen
Klasse y wird 0 mal aufgerufen.

Er will also erkennen für welche Klassen automatische Tests fehlen.

Gruß
 
B

bygones

Gast
Mit EMMA werden die Class Files verändert, aber das machst nicht du, sondern EMMA.

*verwirrt* seit wann aendert EMMA konkret den bytecode einer Klasse... EMMA analysiert ihn - es findet aber keine physikalische Veraenderung des bytecodes statt ?!

ansonsten ist EMMA genau das was du suchst...
 
M

maki

Gast
Ok also folgendes. Wir entwickeln eine Anwendung x die jeden Tag mittels Regressionstests soweit wie möglich abgetestet wird. Die Anwendung besteht aus einem Server Teil und einem Client Teil. Der Server Teil wird mit dem Open Source Tool "Testmanager" abgetestet. Dazu werden bestimmte Kommandozeilenparameter mit bestimmten Parametern aufgerufen.

Nun hätte unser Produktchef gerne eine Auswertung darüber wie hoch der Anteil des Codes ist, der über die Regressionstests abgedeckt wird. Also so ne Art Report über die Testabdeckung.

Beispiel:

Klasse x wird 10 mal aufgerufen
Klasse y wird 0 mal aufgerufen.

Er will also erkennen für welche Klassen automatische Tests fehlen.

Gruß
Offensichtlich hat der sog. Produktchef keine Ahnung, genau dafür ist EMMA und Clover da, natürlich in Verbindung mit JUnit oder eben ein anderes Testframework, oder was nehmt ihr zum schreiben der Tests???

"Klasse x wird 0 mal aufgerufen" ist komplett sinnfrei, was interessiert sind die eigentlichen Codezeilen, und das macht sowohl EMMA (umsonst) als auch Clover (kostenpflichtig).

@bygones
Doch doch, so arbeiten eigentlich alle Coverage Tools, aus der Emma Doku (Launching):
In the Coverage tab the Java class path entries can be selected which should be prepared for coverage analysis . EMMA modifies these classes in a process called instrumentation. Instrumentation is possible for source based classes as well as for binary libraries. At least one entry must be selected to run an application in Coverage mode. The rules which class path entries are selected by default can be adjusted in the code coverage preferences.
 
T

tuxedo

Gast
Wenn man Maven benutzen kann, dann bekommt man quasi frei Haus einen "Test Code Coverage" report der einem genau die Info (und noch n bisschen mehr) zeigt die von dir/deinem Chef gewünscht wird.

Weiß nicht ob das auch außerhalb Maven geht ...

- Alex
 

spike78

Bekanntes Mitglied
Das ganze hat auch noch einen zweiten Hintergedanken. Ich bin gerade auf der Suche nach einem geeigneten Diplomthema für micht (Informatik FH). Beruflich arbeite ich im Qualitätsmanagment für die Softwareentwicklung. Mein P.Manager meinte das dies evtl. ein mögliches Thema sei. Aber wenn es da ja schon Tools gibt, die dazu noch kostenlos sind, sehe ich das nun eher kritisch als geeignetes Thema.

Gruß
 
M

maki

Gast
Wenn man Maven benutzen kann, dann bekommt man quasi frei Haus einen "Test Code Coverage" report der einem genau die Info (und noch n bisschen mehr) zeigt die von dir/deinem Chef gewünscht wird.

Weiß nicht ob das auch außerhalb Maven geht ...
Klar geht das auch ohne Maven2, zB. mit Ant, ist eben nur aufwendiger ;)
Maven2 nutzt das cobertura-maven-plugin dafür, Clover geht auch, kostet aber ;)

Zum Thema instrumentierte Klassen:
Wenn man Eclipse mit dem EMMA Plugin verwendet, findet man die "instrumentierten" Klassen in den Ordnern unter [c].metadata/.plugins/com.mountainminds.eclemma.core/.instr[/c], wenn man die mal Dekompiliert, ist man überrascht wie simpel CodeCoverage umgesetzt wird.

@spike78
Solltest nicht mehr deinen "P.Manager" nach Themen für die Dipl. Arbeit fragen, der scheint die letzten Jahre verschlafen zu haben.
 
B

bygones

Gast
danke maki fuer den link...

code coverage gibt es dank EMMA, Clover und wie sie alle heissen schon recht gute sachen.

Du kannst natuerlich allgemein im Metriken Bereich bleiben - eine eher theoretische Arbeit (Bedeutung und Interpretation von Metriken in der Software Entwicklung ?) oder auch praktische (seis eine eigene Metrik finden, oder bestehende Metriken zu aggregieren).
die mir bekannten Metriken haben leider schon gute implementierungen bzw auch eclipse plugins....
 

spike78

Bekanntes Mitglied
Scheint so:)

Ich muss allerdings sagen, dass ich mir bei der Auswahl eines geeigneten Themas extrem schwierig tue. Von meiner Arbeit bekomme ich immer nur folgendes mitgeteilt. "Für das Thema bist du verantwortlich..."
Klar das ich richtig, hilft mir aber leider nicht viel weiter.
Jedesmal wenn ich mir überlege eine bestimmte Anwendung für meinen QM Bereich zu entwickeln und anschließend mal in Google suche, sehe ich das bereits etliche Entwickler sowas bereits entwicklt haben.

Hätte nie im Leben daran gedacht, dass die Auswahl eines Diplomthemas so schwierig sein kann.

Gruß
Spike
 
B

bygones

Gast
im grunde ist ein neues Thema zu finden wie die nadel im heuhaufen zu suchen - das sehe ich als verdammt schwierig an.

Was aber nicht heisst das bestehende tools nachteile haben bei denen du Idee hast es besser machen zu koennen

bzw ist es denk ich auch interessant zu deuten welche Systeme gibt es, soll man alle einsetzen, welche, welche nicht

haengt stark von deinen praeferenzen ab - theoretisch oder brutal-praktisch
 

spike78

Bekanntes Mitglied
Das heist ich könnte auch eine Abhandlung über den Einsatz von Code Coverage Tools in der Software Entwicklung schreiben? Das dabei nicht unbedingt eigene Entwicklung im Vordergrund steht, würde micht unbedingt stören.
Also in ungefähr so:

- welche Tools gibts?
- Vor und Nachteile
- Einsetzbarkeit in der Software Entwicklung (z.B. Anhand eines Entwicklungsbeispiels in unserer Firma)

?

Gruß
 
B

bygones

Gast
meiner Ansicht nach ja:

was gibts, was messen sie, alle nutzvoll, wie kann man sie interpretieren.
Anhand eines Projektes in der Firma Metrikwerte analysieren.

Ansonsten falls du was schreiben willst (oder vll weiss jemand wo es das gibt) - ich suche ein verlaessliches Tool zum Messen des CRAP werts (Crap4j ist komisch und ausser selber zusammenzusuchen hab ich noch nix gefunden)
 

spike78

Bekanntes Mitglied
Dachte immer ich müsste auch ein Stück Software selbst entwickeln. Aber da ich ja aus der QM Ecke komme, werde ich dort wohl kaum etwas finden, was noch nicht irgendjemand entwicklt hat.
Kannst du kurz beschreiben was der GRAP Wert ist? Evtl. ist das ja ein mögliches Thema :)

Gruß
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
berserkerdq2 SceneBuilder GUI erstellt, nun muss ich noch ein Polygon erstellen, ist die Connection möglich? Allgemeine Java-Themen 3
E Es ist nicht möglich, eine Batch-Anweisung auszuführen. Allgemeine Java-Themen 9
B Arrays von Methoden möglich? Allgemeine Java-Themen 44
D VBA Code mit Java ausführen möglich? Allgemeine Java-Themen 10
R Java Stream: Ist es möglich, einen stream zusammenzufassen Allgemeine Java-Themen 6
M WSDL: Doppelte Typenames (Keine Verwendung möglich) Allgemeine Java-Themen 5
M Keine weitere Eingabe in der Main möglich. Eventueller Ansatz über while. Allgemeine Java-Themen 8
I Eine Anwendung so gut wie möglich beschützen Allgemeine Java-Themen 9
D Java auf Webserver Website möglich Allgemeine Java-Themen 7
I PrinterJob - bestimmtes Druckerfach festlegen möglich? Allgemeine Java-Themen 2
D Eine Forschleife mit Threads abarbeiten um es zu schneller zu machen. Ist das möglich? Allgemeine Java-Themen 20
OnDemand Zeilenumbruch ignorieren möglich? Allgemeine Java-Themen 1
0 Eingabe nicht möglich... Allgemeine Java-Themen 12
FunnyO KeyEvent.VK_ + int i, ausgeben mit Bot möglich? Allgemeine Java-Themen 2
C Programmierung von Fotoeffekten mit Java möglich? Allgemeine Java-Themen 3
B ist es möglich in java keyboardtöne per MIDI kabel aufzunhemen ? Allgemeine Java-Themen 5
F Mehrfachverebung in Java (möglich)? Allgemeine Java-Themen 4
F E-Mail aus JAVA senden nach Umstellung auf Netbean 7.4 mit Java 7U45 nicht mehr möglich Allgemeine Java-Themen 4
E Ermitteln einer eindeutigen ID eines Objekts möglich? Allgemeine Java-Themen 17
R Löschen von Files nicht möglich Allgemeine Java-Themen 11
F Frage zu Regex möglich Allgemeine Java-Themen 4
P Code in Methode auslagern möglich? Allgemeine Java-Themen 9
P Datentypen float mit komma statt punkt möglich? Allgemeine Java-Themen 6
DStrohma Swing Nicht möglich für ein JPanel den Fokus zu bekommen? Allgemeine Java-Themen 9
H JTable per iText in PDF: Größenanpassung möglich? Allgemeine Java-Themen 2
GianaSisters Erste Schritte Debuggen im CMD möglich ? Allgemeine Java-Themen 19
C Strings und JSON Objekte so klein wie möglich im Speicher ablegen Allgemeine Java-Themen 5
P RegEx mit HTML Parser für Java möglich? Allgemeine Java-Themen 10
F Screenshot von gewissen Anwendungen nicht möglich Allgemeine Java-Themen 5
K Serialisierung in Properties-Datei möglich? Allgemeine Java-Themen 3
Haave Audio Device Unavailable: Kein gleichzeitiger Zugriff auf Soundsystem möglich Allgemeine Java-Themen 7
B Arraylist.contains(Klasse) möglich? Allgemeine Java-Themen 19
J Objekt selbst ertellen möglich? Allgemeine Java-Themen 6
J DLL ansteuern möglich? Allgemeine Java-Themen 3
D Double to Integer - ist das möglich? Allgemeine Java-Themen 3
U Externe Logiken möglich? Allgemeine Java-Themen 8
K Test-Code in Java-Klassen verstecken (wie mit Precompiler möglich) Allgemeine Java-Themen 10
T Zugriff per Reflection o.ä. möglich? Allgemeine Java-Themen 18
D JOptionPane nur 1 Input möglich? Allgemeine Java-Themen 6
D besseres Klassenkonzept möglich? Allgemeine Java-Themen 9
N Werte Von C++ nach Java über den Stream möglich? Allgemeine Java-Themen 8
J Immutable mit Interfaces möglich? Allgemeine Java-Themen 2
F Code vereinfachen möglich? Allgemeine Java-Themen 18
E Attribute in Interfaces möglich? Allgemeine Java-Themen 17
B Chat öffnen nicht möglich ! Allgemeine Java-Themen 5
L Kein Ausführen möglich Allgemeine Java-Themen 3
S Datei aller möglich encodings generieren Allgemeine Java-Themen 2
P Ist das möglich mit Java - wenn Nein wie sonst? Allgemeine Java-Themen 8
M ist "public abstract class * extends" möglich? Allgemeine Java-Themen 2
S drucken unter j2sdk-1.4 möglich; unter jdk1.5 nicht; warum? Allgemeine Java-Themen 4
M 2 verschiedene LookAndFeels in einem Fenster möglich? Allgemeine Java-Themen 6
P Dynamisch casten - möglich? wie? Allgemeine Java-Themen 5
F POI Library - Graphic in Excel inserten möglich? Allgemeine Java-Themen 2
H Vererbung auch ohne erzeugung einer Instanz möglich? Allgemeine Java-Themen 3
N Graphische Oberfläche dynamisch erweitern möglich? Allgemeine Java-Themen 4
D Buffer Overflow in Java möglich? Allgemeine Java-Themen 5
G Java-1.5 mit Eclipse möglich? Allgemeine Java-Themen 26
B Java-Programm auf Handheld (Windows CE) möglich? Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben