Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Code coverage (https://www.delphipraxis.net/211833-code-coverage.html)

TurboMagic 9. Nov 2022 06:19


Code coverage
 
Hallo,

frei nach dem Motto "tue Gutes" und sprich darüber, habe ich
eine komplett neu geschriebene Version des "Delphi Code Coverage Wizards"
(Fork der bisherigen Version siehe hier: https://github.com/MHumm/delphi-code-coverage-wizard) auf der EKON präsentiert.

Ich bin noch nicht ganz soweit, dass ich ein 1.0 Release machen will,
was fehlt ist aber eher noch kosmetischer Natur.

Das Kommandozeilen Tool zur Durchführung des Coverage Testlaufs wird
gleich als exe mitgeliefert.

Wer er ausprobieren will findet es hier:
https://github.com/MHumm/delphi-code...ge-wizard-plus
Einfach runterladen, Projekt öffnen und F9 drücken...

Voraussetzung:
Vermutlich wird mindestens 10.4 benötigt, entwickelt wurde es mit 11.2.

Was ist da jetzt anders dran?
  1. Es sollte unter HiDPI besser aussehen
  2. Es hat ein Projektformat spendiert bekommen, damit kann man später über das Tool Änderungen leicht umsetzen
    ohne jetzt die generierte Batch Datei oder eine der anderen generierten Dateien händisch anpassen zu müssen.
  3. Wird als Ausgabeformat HTML eingestellt, wird die Übersichtsseite nach Ausführung eines Testlaufes gleich
    im Tool angezeigt und man kann dort natürlich auch alle anderen verlinkten Seiten aufrufen.
  4. Beim Start erkennt das Tool wenn es neue Delphi Versionen/Konfigurationen auf dem PC gibt und bietet
    an, es dort ins Tools Menü einzutragen (erfordert danach IDE Neustart). Beim ersten Start wird das
    natürlich auch angeboten.
  5. Im Gegensatz zu seinem Vorgänger braucht es kein JVCL/JCL.

Grüße
TurboMagic

TurboMagic 9. Nov 2022 16:19

AW: Code coverage
 
Noch was dazu: eine Veröffentlichung via GetIt in ein paar Tagen ist auch geplant...

freimatz 9. Nov 2022 17:39

AW: Code coverage
 
Ich würde ja gerne, aber "DelphiCodeCoverageWizard is a simple wizard to setup and build scripts for DelphiCodeCoverage ...". Leider habe ich es trotz mehreren Versuchen nicht geschafft DelphiCodeCoverage mit unserem Projekt zum Laufen zu bringen.
Habe nachgeschaut, da gab es ein "EJclFileUtilsError".
Nun lese ich oben "5. Im Gegensatz zu seinem Vorgänger braucht es kein JVCL/JCL.". Sollte ich es nochmals versuchen? :gruebel:

TurboMagic 10. Nov 2022 05:57

AW: Code coverage
 
Hallo,

danke für's Testen und sorry, da muss sich der Fehlerteufel eingeschlichen haben.
Ich versuche das heute Abend zu fixen. Mist!

Grüße

TurboMagic

dummzeuch 10. Nov 2022 08:41

AW: Code coverage
 
Zitat:

Zitat von TurboMagic (Beitrag 1514560)
danke für's Testen und sorry, da muss sich der Fehlerteufel eingeschlichen haben.
Ich versuche das heute Abend zu fixen. Mist!

Pro Tip: 3rd-Party Bibliotheken sollten nicht im globalen Library-Path der IDE stehen sondern nur im Suchpfad des jeweiligen Projekts. Dann kann sowas schlicht nicht passieren.

Aber mal 'ne blöde Frage: Woher stammt das eigentliche Code Coverage Tool? Der Link führt zu Google Code, welches wiederum auf Sourceforge verlinkt, aber ist das wirklich die aktuelle Version?

Stevie 10. Nov 2022 16:12

AW: Code coverage
 
Zitat:

Zitat von dummzeuch (Beitrag 1514569)
Aber mal 'ne blöde Frage: Woher stammt das eigentliche Code Coverage Tool? Der Link führt zu Google Code, welches wiederum auf Sourceforge verlinkt, aber ist das wirklich die aktuelle Version?

Na, die auf GitHub natürlich :lol:

TurboMagic 10. Nov 2022 17:54

AW: Code coverage
 
Naja, mir ist klar, dass es da schon noch das eine oder andere gibt was man aufarbeiten könnte/sollte, aber diese
erste Version ist (vom JCL/JVCL Problem abgesehen und wenn man's installiert hat ist auch das keines) auch so schon
nützlich.

Und ja, es wird nur C0 oder wie das heißt abgedeckt, dafür muss es nicht den Quellcode instrumentieren.
Und selbst C0 ist besser als es nicht zu verwenden denke ich.

=> wenn's so funktioniert wie geplant gibt's in absehbarer Zeit eine gefixte Version und ich hab' auch noch
ein paar Ideen für kleine Verbesserungen. Ist eigentlich im Standard Lieferumfang der VCL ein URL/Link-Label dabei?
Ich glaube mich zu erinnern, dass da irgendwas war. Naja, nacher mal danach schauen...

TurboMagic 10. Nov 2022 19:00

AW: Code coverage
 
Zitat:

Zitat von freimatz (Beitrag 1514546)
Ich würde ja gerne, aber "DelphiCodeCoverageWizard is a simple wizard to setup and build scripts for DelphiCodeCoverage ...". Leider habe ich es trotz mehreren Versuchen nicht geschafft DelphiCodeCoverage mit unserem Projekt zum Laufen zu bringen.
Habe nachgeschaut, da gab es ein "EJclFileUtilsError".
Nun lese ich oben "5. Im Gegensatz zu seinem Vorgänger braucht es kein JVCL/JCL.". Sollte ich es nochmals versuchen? :gruebel:

Hm, jetzt frage ich mich wie wir die Ursache dafür herausbekommen.
Ich habe eben alle 11 Units des Projektes durchgeschaut und bei keinem war etwas in den Uses
was nicht mit Delphi (Professional) selber mitgeliefert wird. :?

Irgendjemand eine Idee? EJclFileUtilsError kann natürlich auch nirgends mittels Strg-Shift-F gefunden werden...

mytbo 10. Nov 2022 20:49

AW: Code coverage
 
Zitat:

Zitat von TurboMagic (Beitrag 1514620)
Hm, jetzt frage ich mich wie wir die Ursache dafür herausbekommen.

Die Exception wird in der Unit JclFileUtils definiert. Diese Unit wird im Projekt DelphiCodeCoverage (Link von Stevie) an mehreren Stellen verwendet.

Nachtrag: Der Fehler tritt in der Unit Debugger, Funktion TDebugger.Start auf. Die Funktion ForceDirectories wirft diesen Fehler, wenn kein Verzeichnisname übergeben wird. In der Konfiguration muss für OutputDir ein Verzeichnis angegeben werden.

Bis bald...
Thomas

TurboMagic 10. Nov 2022 21:38

AW: Code coverage
 
Zitat:

Zitat von mytbo (Beitrag 1514625)
Zitat:

Zitat von TurboMagic (Beitrag 1514620)
Hm, jetzt frage ich mich wie wir die Ursache dafür herausbekommen.

Die Exception wird in der Unit JclFileUtils definiert. Diese Unit wird im Projekt DelphiCodeCoverage (Link von Stevie) an mehreren Stellen verwendet.

Nachtrag: Der Fehler tritt in der Unit Debugger, Funktion TDebugger.Start auf. Die Funktion ForceDirectories wirft diesen Fehler, wenn kein Verzeichnisname übergeben wird. In der Konfiguration muss für OutputDir ein Verzeichnis angegeben werden.

Bis bald...
Thomas

Hallo,

danke für diese Infos! Das ist dann also nicht mein Problem, da mein Wizard das Kommandozeilen Tool
ja in vorcompilierter Fassung enthält. Somit bleibt mein Wizard JCL/JVCL frei.

Grüße
TurboMagic

freimatz 11. Nov 2022 07:50

AW: Code coverage
 
ok, dann nicht dein Problem. Das bedeutet dann umgekehrt dass der Wizard mir erstmal nichts nützt. Oder?
Dass die Exception kommt weil da ein Leerstring kommt meine ich auch mal herausgefunden zu haben. Leider habe ich nicht verstanden was das soll und was ich dazu tun könnte.
Magst Du mytbo oder sonst wer mir helfen?
Dann würde ich nächste Woche nochmals einen Versuch wagen, das mit unserem Projekt zum Laufen zu bekommen.
Falls Ja, macht es dann Sinn gleich mit dem Wizard zu starten? Oder ist es besser DelphiCodeCoverage erstmal alleine zu verwenden?

TurboMagic 11. Nov 2022 14:25

AW: Code coverage
 
Naja, ein gewisses Interesse sollte ich schon dran haben, dass des Coverage Tool selber läuft,
sonst nutzt ja der Wizard nix. Wir können uns gerne mal darüber unterhalten was da bei dir
genau passiert und wie dein Projekt aussieht.

Evtl. ist es ja auch möglich den Fall in einem reduzierten Projekt nachzustellen?
Das könnte man dann evtl. teilen?

Noch eine Kleinigkeit: ich hab' gestern schon (siehe Development Branch) die nähsten
Weiterentwicklungen vorgenommen, jedoch noch nicht immer funktional oder getestet.

Grüße
TurboMagic

Mavarik 11. Nov 2022 17:04

AW: Code coverage
 
Vielleicht eine blöde Frage...

Wofür? Was macht man damit? Warum?

LG Mavarik

Der schöne Günther 11. Nov 2022 17:38

AW: Code coverage
 
Die ersten Erklärungen wenn ich "Testabdeckung" oder "Code Coverage" in die Suchmaschine meines Vertrauens eingebe sind eigentlich ganz brauchbar. Darunter auch Wikipedia, ganz allgemein für Maschinenbau und Softwareentwicklung:
https://de.wikipedia.org/wiki/Testabdeckung

Vlt. hast du auch auf Platformen wie Github Automatismen gesehen die einen Pull-Request blockieren, wenn dieser die prozentuale Testabdeckung senkt.

"Im echten Leben" hast du teilweise auch Kunden die wissen wollen, ob die Testabdeckung in deiner Software mindestens X % hoch ist. Klar ist das nur beschränkt aussagekräftig, aber gegenüber dem Konkurrenten ohne Unit-Tests mit 0% Abdeckung bist du definitiv im Vorteil 😉

TurboMagic 11. Nov 2022 18:02

AW: Code coverage
 
Hallo,

1. Ja, es macht Testabdeckung, d.h. ermittelt welche deiner Code Zeilen beim laufen Lassen deiner
Unit Tests (die du ja sicher hast ;-) ) ausgeführt werden und welche nicht.

2. Es ändert dazu deinen Code NICHT, kann aber daher auch nur C0, was nicht ganz alle Szenarien
testen kann. Aber besser als nix zu testen!

3. Die eigentliche Analyse hab' ich nicht geschrieben, aber der Wizard soll die benutzung etwas
erleichtern, da er einen GUI bietet.

Jetzt hab' ich aber noch ein Problem: momentan stürzt die CodeCoverage.exe immer beim Aufruf ab
(irgendwas in der NTDLL.DLL?!?!). Gibt's eine Möglichkeit beim Prozessausführen mitzubekommen,
dass sowas böses passiert ist? Als Rückgabewert bekomme ich nämlich 0, was ja meist "OK" bedeutet...

Grüße
TurboMagic

mytbo 11. Nov 2022 21:39

AW: Code coverage
 
Zitat:

Zitat von freimatz (Beitrag 1514640)
Magst Du mytbo oder sonst wer mir helfen?

Der Wert für OutputDirectory fehlt! Dieses Verzeichnis wird mit dem Switch -od gesetzt. TurboMagic bezeichnet es ReportOutputPath. Da er die Labels nicht aussagekräftig benamt, muss ich beim Blick in die *.dfm Datei raten. Es könnte Label6 mit der Caption 'Generated report output folder' sein. Ich weiß schon, warum ich Labels im Bezeichnerteil wie das jeweilige Eingabeelement benenne.

Bis bald...
Thomas

TurboMagic 11. Nov 2022 21:54

AW: Code coverage
 
Zitat:

Zitat von mytbo (Beitrag 1514671)
Zitat:

Zitat von freimatz (Beitrag 1514640)
Magst Du mytbo oder sonst wer mir helfen?

Der Wert für OutputDirectory fehlt! Dieses Verzeichnis wird mit dem Switch -od gesetzt. TurboMagic bezeichnet es ReportOutputPath. Da er die Labels nicht aussagekräftig benamt, muss ich beim Blick in die *.dfm Datei raten. Es könnte Label6 mit der Caption 'Generated report output folder' sein. Ich weiß schon, warum ich Labels im Bezeichnerteil wie das jeweilige Eingabeelement benenne.

Bis bald...
Thomas

Hallo,

dazu gibt's diverses zu sagen:
  1. Seit eben gibt's ein Update im Master Branch das auch mit der Geschichte zu tun hat, wollte es gerade "verkünden" ;-)
  2. Ja, die Labels kann man sicher noch sprechend benennen. Sorry!
  3. Ich habe einen Bug der mir selber Probleme machte behoben: es konnte passieren, dass in die .lst Dateien leere Pfade/Dateinamen ausgegeben wurde. Das Crashte CodeCoverage.exe, bzw. hat das NTDLL.DLL gecrasht :-( (zum Glück nicht den PC)
  4. Ich habe alle Pfade in der generierten batch-Datei in "" gesetzt, falls dort Leerzeichen drin sein sollten.
  5. Ich habe die Option zur Ausgabe der Logdatei in der Batch-Datei jetzt um den ReportOutputPath ergänzt. Damit die .log Datei wo definiertes landet.
  6. Die Links im "About" Dialog sind jetzt funktional, d.h. werden im Webbrowser geöffnet (ShellExec)

Ich glaube, damit hab' ich das Tool wieder ein Stückchen nach vorne gebracht. Oder?

Grüße
TurboMagic

TurboMagic 11. Nov 2022 22:15

AW: Code coverage
 
So und um noch etwas zu illustrieren was das Dingens so tut, hab' ich jetzt noch Screenshots am Ende der Readme hinzugefügt.

Mavarik 12. Nov 2022 08:19

AW: Code coverage
 
Zitat:

Zitat von TurboMagic (Beitrag 1514664)
Hallo,

1. Ja, es macht Testabdeckung, d.h. ermittelt welche deiner Code Zeilen beim laufen Lassen deiner
Unit Tests (die du ja sicher hast ;-) ) ausgeführt werden und welche nicht.

Ahh Unittests... OK hatte ich gerade nicht auf dem Schirm.

dummzeuch 12. Nov 2022 11:12

AW: Code coverage
 
Zitat:

Zitat von TurboMagic (Beitrag 1514672)
Ja, die Labels kann man sicher noch sprechend benennen.

Es soll da Tools geben, die das erleichtern bzw. automatisch einen Namen abfragen (und auch gleich erlauben weitere Properties zu setzen z.B. bei Labels die Caption).

dummzeuch 12. Nov 2022 11:57

AW: Code coverage
 
Ich hatte unpraktischerweise beim ersten Start die Installation in das Tools-Menü abgebrochen.

Kann man diesen Dialog irgendwie manuell aufrufen?

Edit: Anscheinend nicht, zumindest finde ich im Sourcecode nichts dazu.

Ich habe jetzt den Eintrag in der Registry gelöscht, dann kommt der Dialog wieder:

[Computer\HKEY_CURRENT_USER\SOFTWARE\DelphiCodeCove rageWizard]
KnownConfigurations="...."

dummzeuch 12. Nov 2022 12:07

AW: Code coverage
 
Sollte der Tools-Menü Eintrag keine Parameter haben? Sowas wie das aktuelle Projekt?

TurboMagic 12. Nov 2022 13:03

AW: Code coverage
 
Zitat:

Zitat von dummzeuch (Beitrag 1514680)
Sollte der Tools-Menü Eintrag keine Parameter haben? Sowas wie das aktuelle Projekt?

Hallo,

1. Der Dialog zum Hinzufügen kommt außer beim ersten Start immer dann wieder, wenn eine bisher
noch nicht bekannte Konfiguration entdeckt wird (also auch ein neues Delphi).

2. Das fände ich nur dann sinnvoll, wenn es da einen Platzhalter für das aktuell in der IDE
geladene Projekt gibt. Warum?
a) der Eintrag wäre sonst statisch
b) und würde daher nur für ein bestimmtes Projekt gelten. Ich vermute aber die meisten
Entwickler nutzen die selbe IDE Konfiguration für alle ihre Projekte. Damit würde
ganz sicher immer statisch das richtige geladen, gell? ;-) (naja eben eher nicht)
c) es gibt ja die Liste zuletzt benutzter Projekte. Einfach dort Doppelklicken und es wird
geladen.

=> Ich bin nicht komplett abgeneigt, aber eben nur, wenn die Rahmenbedingungen passen. Ich
hab' damit schon noch ein bisschen was vor, das wäre aber nicht die höchste Priorität.
Aber es ist ja ein Open Source Projekt... ;-)

Grüße
TurboMagic

dummzeuch 12. Nov 2022 13:24

AW: Code coverage
 
Zitat:

Zitat von TurboMagic (Beitrag 1514684)
Zitat:

Zitat von dummzeuch (Beitrag 1514680)
Sollte der Tools-Menü Eintrag keine Parameter haben? Sowas wie das aktuelle Projekt?

2. Das fände ich nur dann sinnvoll, wenn es da einen Platzhalter für das aktuell in der IDE geladene Projekt gibt.

=> Ich bin nicht komplett abgeneigt, aber eben nur, wenn die Rahmenbedingungen passen.

Es gibt zwei Platzhalter, die sich anböten:
  • $PROJECT = Name des aktuellen Projekts
  • $EXENAME = kompletter Pfade des erzeugten Executables (des aktuellen Projekts)

(GExperts macht anscheinend den Tool-Properties Dialog in Delphi 11 kaputt, habe ich gerade bemerkt. :cry: )

Zitat:

Aber es ist ja ein Open Source Projekt... ;-)
Ist mir beinahe entgangen. ;-)

TurboMagic 12. Nov 2022 17:13

AW: Code coverage
 
Es hat mich zwar vom Umbenennen der Labels abgehalten, aber ich habe den Vorschlag mit der
geänderten Tools Menü Integration jetzt umgesetzt.

Sogar noch besser: es gibt jetzt zwei Einträge.
Huh? Warum? :?

Weil ich jetzt Kommandozeilenparameter eingeführt habe:
  • -?: Anzeige des Versionsinfobildschirms, der wurde um einen kurzen Hilfetext zu den Kommandozeilenparametern ergänzt
  • -O <Dateiname> : öffnet die angegebene Datei, im Fall einer dpr/dproj wird daraus der DCCP Dateinameabgeleitet
  • -R <Dateiname> : öffnet die angegebene Datei und führt gleich den Testlauf aus, im Fall einer dpr/dproj wird daraus der DCCP Dateinameabgeleitet

Ist das ein nützlicher Fortschritt?

Grüße
TurboMagic

TurboMagic 13. Nov 2022 10:03

AW: Code coverage
 
Hallo,

es gibt eine neue Version 1.10:
https://github.com/MHumm/delphi-code...eases/tag/V1.1

Die Release notes beschreiben was sich seit der V1.0 vor ein paar Tagen alles getan hat.

Grüße
TurboMagic

freimatz 15. Nov 2022 07:42

AW: Code coverage
 
Zitat:

Zitat von mytbo (Beitrag 1514671)
Zitat:

Zitat von freimatz (Beitrag 1514640)
Magst Du mytbo oder sonst wer mir helfen?

Der Wert für OutputDirectory fehlt! Dieses Verzeichnis wird mit dem Switch -od gesetzt.

Das wird es damals wohl wohl sein. Es stand da
Code:
-od directory      -- the output directory where reports shall be
                       generated - default is current directory
Und aufgrund dem "default" kam ich nicht auf die Idee dass das gesetzt werden müsse.

Ich habe nun einen Neuanfang mit dem Wizard gewagt. Dazu benutze ich unser "tiefliegendste" Testprojekt. Erfahrungen:
1. "Einfach runterladen, Projekt öffnen und F9 drücken..." ist ein bischen dürftig. Vorher Lesen Readme hätte geholfen. Map war nicht da, musste abbrechen und neu starten.
2. Bei manchen Einträgen musste ich raten was gemeint ist. Vermutlich habe ich richti geraten.
3. Erster Durchlauf sah schon mal gut aus, es gab immerhin ein Ergebnis.
4. Allerdings war das Ergebnis vom unit test und nicht vom zu testenden Code, also nochmals in Wizard. Bei Source dann die richtige Datei ausgewählt.
5. Da ist wohl ein Bug, denn "Next" war Disabled. Ich bin dann Zurück und wieder vor, dann war sie enabled.
6. Bin nun am Schluss. Muss ich jetzt nochmals "Save&Generate" machen. Ich versuchs, wieso werde ich nach einem Dateinamen gefragt? Muss ich jedes Mal speichern oder kann ich gleich nach einer Änderung auf "Run"?
7. Ok ich speichere halt und geh dann auf Run. Läuft durch.
8. Wieder ein Ergebnis, aber nicht von der Datei die ich will. Ich markiere nun halt mal alle Dateien. Die zu testende Datei und die Datei mit dem unit test ist dabei. Dieses Testprojekt beinhaltet 1359 unit tests in ca. 70 units und dazu nochmals 70 units mit dem Produktivcode.
Im Output befinden sich jedoch wieder nur wenige Dateien. Als Outputformat habe ich HTML gewählt. Es gibt im Wizard drei Seiten
- "Summary Coverage Report" - da sind 10 Dateien aufgeführt
- Coverage report for <eine unit-test-unit> - da sind drei Dateien aufgeführt, habe zu keiner ein Ergebnis.
- "Summary Coverage Report" - sieht aus wie die erste
Nun bin ich diesbezüglich ratlos. :? Hilfäää!

(Etwas anderes was ich bei meinen Versuchen festgestellt. Es sind einige unit test fehlgeschlagen mit der Meldung er könne Dateien nicht schreiben. Jedesmal war im Pfad der Datei der Ordner enthalten, den ich für die Coverage angegeben habe. Diese liegt jedoch ganz woanders. Könnte es sein, dass DelphiCodeCoverage und die unit test das Aktive Verzeichnis (ChDir) benutzen und ändern? Das würde dies für mich erklären. Das Problem ist für mich jedoch sekundär.)

Nachträge:
1. Natürlich muss nicht nur das Testprojekt eine map enthalten, sondern auch das Package mit dem Produktivcode. :-D
Gibt es dazu irgendwo eine Fehlermeldung
Mit der map ist die Ausgabe nun schon wesentlich umfangreicher, jedoch immer noch fehlt das meiste.
2. Entdeckt habe ich eine log Datei, die Delphi-Code-Coverage-Debug.log mit über 12MByte.
Zu der Datei die mich interssiert steht allerdings darin:
"Module Bla.Test.Math.Geometry skipped"
Eingeschaltet müsste die m.E. sein, in der dccp steht:
<SourceFile Selected="True">Bla.Math.Geometry.pas</SourceFile>
<SourceFile Selected="True">Test\Bla.Test.Math.Geometry.pas</SourceFile>
Eher am Ende der log finde ich sehr viele
Exception during generation of unit coverage for: Bla.pas exception:Cannot open file "D:\Project\_Anderes\delphi-code-coverage-wizard-plus-master\Binaries\Win32\Debug\Bla.pas". Das System kann die angegebene Datei nicht finden
Dabei ist bei mir "D:\Project\_Anderes\delphi-code-coverage-wizard-plus-master\Binaries\Win32\Debug" der Ordner wo die "DelphiCodeCoverageWizard.exe" drin liegt. Die Bla.pas ist jeweils eine Sourcedatei von uns, die sicherlich in diesem Ordner liegen sollte.

TurboMagic 16. Nov 2022 07:48

AW: Code coverage
 
Hallo,

danke schon mal für's Testen!
Und ja: das hat sicher auch noch Kinderkrankheiten.

Zitat:

Zitat von freimatz (Beitrag 1514788)
Zitat:

Zitat von mytbo (Beitrag 1514671)
Zitat:

Zitat von freimatz (Beitrag 1514640)
Magst Du mytbo oder sonst wer mir helfen?

Der Wert für OutputDirectory fehlt! Dieses Verzeichnis wird mit dem Switch -od gesetzt.

Das wird es damals wohl wohl sein. Es stand da
Code:
-od directory      -- the output directory where reports shall be
                       generated - default is current directory
Und aufgrund dem "default" kam ich nicht auf die Idee dass das gesetzt werden müsse.

Die aktuelle Version des Wizards (also nicht die V1.0 im GetIt) gibt für -od in der Batch Datei nun artig
das eingegebene Ausgabeverzeichnis an.

Zitat:

Zitat von freimatz (Beitrag 1514788)
Ich habe nun einen Neuanfang mit dem Wizard gewagt. Dazu benutze ich unser "tiefliegendste" Testprojekt. Erfahrungen:
1. "Einfach runterladen, Projekt öffnen und F9 drücken..." ist ein bischen dürftig. Vorher Lesen Readme hätte geholfen. Map war nicht da, musste abbrechen und neu starten.
2. Bei manchen Einträgen musste ich raten was gemeint ist. Vermutlich habe ich richti geraten.

Magst du mir sagen welche Optionen nicht gleich verständlich waren?

Zitat:

Zitat von freimatz (Beitrag 1514788)
3. Erster Durchlauf sah schon mal gut aus, es gab immerhin ein Ergebnis.
4. Allerdings war das Ergebnis vom unit test und nicht vom zu testenden Code, also nochmals in Wizard. Bei Source dann die richtige Datei ausgewählt.
5. Da ist wohl ein Bug, denn "Next" war Disabled. Ich bin dann Zurück und wieder vor, dann war sie enabled.

An dem next hab' ich glaube ich letztens noch was gemacht, bin mir aber auch nicht sicher, ob das in jeder Situation
funktioniert. Es sollte ja Enabled sein, wenn man da einen Pfad eingestellt hat und mindestens eine Datei ausgewählt hat.
Der aktuellste Stand ist im Entwicklungszweig auf GitHub.

Zitat:

Zitat von freimatz (Beitrag 1514788)
6. Bin nun am Schluss. Muss ich jetzt nochmals "Save&Generate" machen. Ich versuchs, wieso werde ich nach einem Dateinamen gefragt? Muss ich jedes Mal speichern oder kann ich gleich nach einer Änderung auf "Run"?

Ja, Run führt nur die Batch Datei aus. Sollte das geändert werden?
Save ist im Prinzip "Save as", schlägt aber den Dateinamen vor, wenn man eine geladene Datei speichert.
Somit kann man auch eine Datei laden und unter einem neuen Namen speichern.

Sollte das geändert werden? Falls ja, wie?

Zitat:

Zitat von freimatz (Beitrag 1514788)
7. Ok ich speichere halt und geh dann auf Run. Läuft durch.
8. Wieder ein Ergebnis, aber nicht von der Datei die ich will. Ich markiere nun halt mal alle Dateien. Die zu testende Datei und die Datei mit dem unit test ist dabei. Dieses Testprojekt beinhaltet 1359 unit tests in ca. 70 units und dazu nochmals 70 units mit dem Produktivcode.
Im Output befinden sich jedoch wieder nur wenige Dateien. Als Outputformat habe ich HTML gewählt. Es gibt im Wizard drei Seiten
- "Summary Coverage Report" - da sind 10 Dateien aufgeführt
- Coverage report for <eine unit-test-unit> - da sind drei Dateien aufgeführt, habe zu keiner ein Ergebnis.
- "Summary Coverage Report" - sieht aus wie die erste
Nun bin ich diesbezüglich ratlos. :? Hilfäää!

Hm, da stellt sich zum einen die Frage, ob alle gewünschten Dateien unterhalb eines bestimmten ordners liegen (ggf. in Unterordnern)?
Also z. B. D:\Projekte\MeinProjekt4711 und dort z. B. in den unterordnern Source und 3rdPartySource statt:
D:\Projekte\MeinProjekt4711 und D:\Projekte\3rdPartySource

Werden alle gewünscvhte Dateien in der Checklistbox aufgeführt?

Wenn man die Batch Datei von der Kommandozeile aus aufruft, werden dann noch irgendwelche Meldungen von CodeCoverage.exe angezeigt?
Sind alle ausgewählten Dateien und Verzeichnisse in <Projektname>_Paths.lst und <ProjektName>_Units.lst enthalten?
Falls ja und es werden nicht alle richtig bearbeitet müssten wir in CodeCoverage nach dem Problem suchen, falls nein ist der Fehler
wohl in meinem Wizard.

Zitat:

Zitat von freimatz (Beitrag 1514788)
(Etwas anderes was ich bei meinen Versuchen festgestellt. Es sind einige unit test fehlgeschlagen mit der Meldung er könne Dateien nicht schreiben. Jedesmal war im Pfad der Datei der Ordner enthalten, den ich für die Coverage angegeben habe. Diese liegt jedoch ganz woanders. Könnte es sein, dass DelphiCodeCoverage und die unit test das Aktive Verzeichnis (ChDir) benutzen und ändern? Das würde dies für mich erklären. Das Problem ist für mich jedoch sekundär.)

Das müsste man dort mal nachschauen. Damit hab' ich mich bisher nicht so richtig befasst, da ich ja einen Wizard drumherum schreiben wollte ;)

Zitat:

Zitat von freimatz (Beitrag 1514788)
Nachträge:
1. Natürlich muss nicht nur das Testprojekt eine map enthalten, sondern auch das Package mit dem Produktivcode. :-D
Gibt es dazu irgendwo eine Fehlermeldung
Mit der map ist die Ausgabe nun schon wesentlich umfangreicher, jedoch immer noch fehlt das meiste.

Mir ist da bisher keine Fehlermeldung bekannt. Aber: müsste die map Datei in dem Ordner, den man im Wizard als Stammordner
für den Code angibt liegen? Da man ja keine dpr/dproj oder so direkt angibt, kann der Wizard nicht automatisch ermitteln wie
diese .map Datei heißen müsste, man könnte aber prüfen und warnen wenn dort keine liegt.

Zitat:

Zitat von freimatz (Beitrag 1514788)
2. Entdeckt habe ich eine log Datei, die Delphi-Code-Coverage-Debug.log mit über 12MByte.
Zu der Datei die mich interssiert steht allerdings darin:
"Module Bla.Test.Math.Geometry skipped"
Eingeschaltet müsste die m.E. sein, in der dccp steht:
<SourceFile Selected="True">Bla.Math.Geometry.pas</SourceFile>
<SourceFile Selected="True">Test\Bla.Test.Math.Geometry.pas</SourceFile>
Eher am Ende der log finde ich sehr viele
Exception during generation of unit coverage for: Bla.pas exception:Cannot open file "D:\Project\_Anderes\delphi-code-coverage-wizard-plus-master\Binaries\Win32\Debug\Bla.pas". Das System kann die angegebene Datei nicht finden
Dabei ist bei mir "D:\Project\_Anderes\delphi-code-coverage-wizard-plus-master\Binaries\Win32\Debug" der Ordner wo die "DelphiCodeCoverageWizard.exe" drin liegt. Die Bla.pas ist jeweils eine Sourcedatei von uns, die sicherlich in diesem Ordner liegen sollte.

Hm? Die Source Datei im Win32\Debug Ordner des projektes?
Oder hab' ich dich da falsch verstanden?

Grüße
TurboMagic

TurboMagic 16. Nov 2022 08:50

AW: Code coverage
 
Die Fragestellung, warum die Quellcode Dateien im falschen ordner gesucht werden hab'
ich auch beim CodeCoverage Projekt mal aufgeworfen:
https://github.com/DelphiCodeCoverag...rage/issues/33

Meine neueste interne Entwicklungsversion fügt jetzt den -sd Parameter (inkl. Pfad) zur Batch Datei hinzu.
Ich habe eben in einem Test auch die neueste CodeCoverage.exe benutzt, die hat ja noch mehr Optionen und schönere HTML Ausgabe.
Bei mir (ok, ist ein minimalistisches Testprojekt) funktionierte das, wenn man kapiert hat, welche der Tabelleneinträge der Übersichtsseite
tatsächlich Links sind die man anklicken kann.

Die neue Fassung wird vermutlich irgendwann heute auf Github verfügbar sein.
Wenn es mit der weiterhin Probleme geben sollte, dass die nicht für alles zu erwartende entsprechende Ausgabe-Dateien erzeugt, sollten
wir mal gemeinsam Kontakt mit den CodeCoverage Entwicklern aufnehmen und denen entsprechende Daten liefern (erzeugte lst-Dasteien, Log-Datei usw.)

Grüße
TurboMagic

freimatz 16. Nov 2022 09:14

AW: Code coverage
 
(Meine Anwort bezieht sich auf den vorvorigen Beitrag.)

Hallo TurboMagic,
nichts zu Danken fürs Testen. Ich will das ja haben weil ich es für eine professionelle Entwicklung für unverzichtbar halte.

Es ist jetzt ein bischen viel. Sollten wir die Aspekte vielleicht getrennt behandeln? Ok, ich versuchs mal der Reihe nach:


"default is current directory" - ja da ist es super wenn der Wizard das gleich so abfüllt. (Ich habs nur erwähnt um das Fehlschlagen bei meinem Versuch vor Jahren mal zu erklären.)


"Magst du mir sagen welche Optionen nicht gleich verständlich waren?"
"Script output folder" und "Generated report output folder". Ich hatte nur eine vage Ahnung wofür das ist. Man muss erst mal wissen wie das ganze Ding so ungefähr arbeitet. War nicht schlimm, habe halt irgendeinen neuen Ordner da eingetragen. Irgendwann habe ich danach mal reingeschat was da so drin liegt. Vielleicht könnte man da einen Default vorschlagen (relativ zu DelphiCodeCoverageWizard.exe oder zum Source)? Gesammt nicht so wichtig.
Wichtig ist jedoch schon wie ich schrieb, dass man die Readme vorher liest ;-)


"denn "Next" war Disabled.". Mein Stand war vor ein bis zwei Tagen. Für mich nicht schlimm.

6. "Save&Generate" etc.:
"Run führt nur die Batch Datei aus." - dazu müsste man erst mal wissen wofür den eine Batchdatei ist. Als Einsteiger kommt man da vielleicht nicht so schnell drauf. Wenn man so wie ich ein Projekt hat und damit experimentiert, dann wäre ein Save&Run schön.
Es war und ist oft üblich ein "Save" und ein "Save as" zu haben. Beim ersten mal geht "Save" dann auch immer zu "Save As".
Aber auch das ist nicht so wichtig für mich, erst muss es mal funktionieren ;-)


8.
Alle gewünschten Source Dateien liegen in und ggf. unterhalb eines bestimmten Ordners. Diesen Order gebe ich auch an. Der Unit-Test liegt auch in einem Unterorder.
Soweit ich es sehe werden alle Dateien in der Checklistbox aufgeführt.
Ich habe hier eine Datei "TestSystem3_dcov_execute.bat" und daneben eine "TestSystem3_dcov_units.lst". Darin sind auch alle Dateien aufgeführt.
Irgendwelche Meldungen von CodeCoverage.exe sah ich keine. Aber wie weiter unten erwähnt ist in dem log einiges an Fehlern drin.


Nachtrag 1. map:
Habe da nicht so eine Ahnung was man da tun könnte. Für mich auch kein Problem mehr nehme ich an.

Nachtrag 2. - für mich das allerwichtigste Punkt
"Hm? Die Source Datei im Win32\Debug Ordner des projektes?"
Ja, Delphi-Code-Coverage sucht offensichtlich die Sourcedateien im Debug Ordner vom Wizard. Da sind die Dateien natürlich nicht drin. Die liegen bei mir ja ganz woanders.
Ich habe gerade mal nachgeschaut und habe eine Idee:

Hier der Inhalt der bat:
Code:
"D:\Project\_Anderes\delphi-code-coverage-wizard-plus-master\Binaries\CodeCoverage.exe" -e "J:\bladir\sysWin32\TestSystem.exe" -m "J:\bladir\sysWin32\TestSystem.map" -uf "J:\bladir\DelphiCodeCoverage\Script\TestSystem3_dcov_units.lst" -spf "J:\bladir\DelphiCodeCoverage\Script\TestSystem3_dcov_paths.lst" -od "J:\bladir\DelphiCodeCoverage\Report" -lt "J:\bladir\DelphiCodeCoverage\Report\Delphi-Code-Coverage-Debug.log" -html
Weiter, in der Datei "J:\bladir\DelphiCodeCoverage\Script\TestSystem3_d cov_paths.lst" steht nur "Test\" drin. Das ist wohl ein Unterordner von meinen Sourcen. In der Datei "TestSystem3_dcov_units.lst" stehen alle Dateien drin ohne Pfad.

Im Wizard habe ich den Pfad zu den source files angegeben mit "J:\bladir\_dev\src\System\". Alle Sourcedateien liegen dort oder darunter
Ich finde diese Angabe einer keiner der Dateien im Scriptsverezichnis. Woher weiss dann CodeCoverage.exe wo es die Dateien suchen muss?
Nimmt das dann etwas das aktuelle Verzeichnis? Das wäre suboptimal.


Nachtrag zum vorigem Beitrag.
"Quellcode Dateien im falschen ordner gesucht" - ja das dürfte das Problem bei mir sein. Gerne helfe ich damit, habe ja auch Interesse daran.

TurboMagic 16. Nov 2022 09:47

AW: Code coverage
 
Hallo,

warte einfach noch einige Minuten.
Dann hab' ich evtl. eine neue Fassung im Development Branch.

Was ist dort dann neu:
  • Umstellung auf die aktuelle Version von CodeCoverage.exe
  • Dadurch moderner aussehendere HTML Ausgabe (man muss aber wissen wo man klicken kann bzw. drüberfahren)
  • Weitere Optionen unter Output folders/formats
  • Quellcode Ordner wird mittels Parameter -sd nun zur Batch Datei hinzugefügt

Grüße
TurboMagic

freimatz 16. Nov 2022 10:07

AW: Code coverage
 
Habe kurz mal die -sd manuell hinzugefügt zur Batch. Es wird nun wesentlich mehr gemacht als vorher. Gut ist es noch nicht, aber eins nach dem anderen. Ich warte dann mal auf die neue Version <lechz>:-D

TurboMagic 16. Nov 2022 10:24

AW: Code coverage
 
Dein Durst kann seit eben gestillt werden! ;)
Alle der bisher immer ausgegrauten Optionen unter dem AUsgabeformat Menü sind jetzt auch verfügbar.
Ist alles noch im Development Branch.

Grüße
TurboMagic

TurboMagic 16. Nov 2022 16:18

AW: Code coverage
 
Na, hat das deinen Durst für's Erste gestillt?
Bist du zum Testen gekommen?

Stevie 16. Nov 2022 16:31

AW: Code coverage
 
Ich habe mal an diejenigen, die schon CodeCoverage für ihre Unittests nutzen, folgende Fragen:
- Welchen Workflow nutzt ihr dafür? (Klassisches DUnit(X), TestInsight, Ausführung auf dem CI Server, etc)
- Wie schaut ihr euch den Coverage Report an? (meines Wissens nach generiert CodeCoverage ja so ein paar HTML Seiten oder auch andere Formate, welche noch weiter verarbeitet werden können).
- Wie gut funktioniert DelphiCodeCoverage bei euch? Meine Erfahrung ist, dass es entweder inakkurate Ergebnisse liefert oder sich auch mal mit AVs oder ähnlichem auf den Rücken legt.

Ich frage, da es mir schon seit langem ein Befürfnis ist, eine "ganzheitliche" Lösung dafür zu schaffen und speziell in Verbindung mit TI wäre das höchste der Gefühle natürlich, das ganze direkt in der IDE sehen zu können, wie man es auch in VisualStudio kann. Da wir GitLab benutzen und das wunderbar mit dem Cobertura Format klar kommt, um CodeCoverage anzuzeigen, hatte ich mal einen Prototypen für CodeCoverage gebaut, der dieses Format ausspuckt. Daraus wiederum kann man dann mit anderen externen Tools (wie zum Beispiel ReportGenerator) auch wunderbare HTML Seiten generieren oder auch in einem IDE Plugin das ganze in der IDE anzeigen.

freimatz 16. Nov 2022 17:14

AW: Code coverage
 
Zitat:

Zitat von TurboMagic (Beitrag 1514862)
Na, hat das deinen Durst für's Erste gestillt?
Bist du zum Testen gekommen?

Beides mal Nein. Es gibt da sowas das nennt sich "Release" - und da sind noch Fehler rein gekommen, die haben Vorrang.

TurboMagic 16. Nov 2022 17:16

AW: Code coverage
 
Die aktuelle Version des CodeCoverage kann jedenfalls auch XML im JaCoCo Format ausgeben.
Der Wizard (Version aus dem Development Branch) kann das seit heute Vormittag auch anschalten.
Darüberhinaus kann man dort seit heute Vormittag auch optional beliebige Parameter dieses
Kommandozeilen Programms angeben, damit auch Dinge nutzbar werden, die ich noch nicht vorgesehen
habe.

Grüße
TurboMagic

PS: habe in meiner einen EKON Session zum Unit Testen letzte Woche auch dein TestInsight gezeigt

TurboMagic 16. Nov 2022 17:17

AW: Code coverage
 
Zitat:

Zitat von freimatz (Beitrag 1514872)
Zitat:

Zitat von TurboMagic (Beitrag 1514862)
Na, hat das deinen Durst für's Erste gestillt?
Bist du zum Testen gekommen?

Beides mal Nein. Es gibt da sowas das nennt sich "Release" - und da sind noch Fehler rein gekommen, die haben Vorrang.

Verständlich! Nach dem Release, sofern möglich, gleich Regressionstests für die Fehler schrieben ;)

freimatz 16. Nov 2022 17:25

AW: Code coverage
 
Zitat:

Zitat von TurboMagic (Beitrag 1514874)
Zitat:

Zitat von freimatz (Beitrag 1514872)
Zitat:

Zitat von TurboMagic (Beitrag 1514862)
Na, hat das deinen Durst für's Erste gestillt?
Bist du zum Testen gekommen?

Beides mal Nein. Es gibt da sowas das nennt sich "Release" - und da sind noch Fehler rein gekommen, die haben Vorrang.

Verständlich! Nach dem Release, sofern möglich, gleich Regressionstests für die Fehler schrieben ;)

Nein, bei uns muss man die gleich machen wenn man die Behebung in Test geben will. Dafür wäre die Coverage dann auch gut. :-)
Nice wäre auch etwas das prüft ob alle seit dem letzten master geändreten Zeilen abgedeckt sind. Aber erst muss das überhaupt mal tun.

TurboMagic 16. Nov 2022 18:37

AW: Code coverage
 
Liste der Anhänge anzeigen (Anzahl: 3)
Zitat:

Zitat von Stevie (Beitrag 1514865)
Ich habe mal an diejenigen, die schon CodeCoverage für ihre Unittests nutzen, folgende Fragen:
- Welchen Workflow nutzt ihr dafür? (Klassisches DUnit(X), TestInsight, Ausführung auf dem CI Server, etc)
- Wie schaut ihr euch den Coverage Report an? (meines Wissens nach generiert CodeCoverage ja so ein paar HTML Seiten oder auch andere Formate, welche noch weiter verarbeitet werden können).
- Wie gut funktioniert DelphiCodeCoverage bei euch? Meine Erfahrung ist, dass es entweder inakkurate Ergebnisse liefert oder sich auch mal mit AVs oder ähnlichem auf den Rücken legt.

Ich frage, da es mir schon seit langem ein Befürfnis ist, eine "ganzheitliche" Lösung dafür zu schaffen und speziell in Verbindung mit TI wäre das höchste der Gefühle natürlich, das ganze direkt in der IDE sehen zu können, wie man es auch in VisualStudio kann. Da wir GitLab benutzen und das wunderbar mit dem Cobertura Format klar kommt, um CodeCoverage anzuzeigen, hatte ich mal einen Prototypen für CodeCoverage gebaut, der dieses Format ausspuckt. Daraus wiederum kann man dann mit anderen externen Tools (wie zum Beispiel ReportGenerator) auch wunderbare HTML Seiten generieren oder auch in einem IDE Plugin das ganze in der IDE anzeigen.

Die Frage ist auch in wieweit sich CodeCoverage seit deiner Begutachtung weiterentwickelt hat. Zwischen der Version
die ich ursprünglich benutzte (die beim ursprünglichen WIzard dabei war) und der aktruellen, die ich seit heute damit benutze
liegen auch irgendwie Welten. Mehrere neue Parameter für Ausgabeoptionen und auch die HTML Ausgabe sieht ganz anders (moderner)
aus, inkl. Prozentbalken und Tortendiagrammen.

Es stellt sich auch die Frage, ob man das, was im CodeCoverage evtl. noch nicht ganz passt fixen kann. Das Projekt scheint
ja schließlich grundsätzlich noch gewartet zu werden und es kann ja auch schon einiges...

Anbei mal ein paar Screenshots, die Anzeige ist hierbei die im Delphi Code Coverage Wizard Plus integrierte HTML Anzeige.
Mittels Option kann man sich das aber auch im mit HTML Dateien verknüpften Programm anschauen (ShellExec).

Grüße
TurboMagic


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:01 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz