Code Couverage Messen, aber wie .. [Gelöst]

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1363
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Code Couverage Messen, aber wie .. [Gelöst]

Beitrag von corpsman »

Servus zusammen,

ich habe beruflich ein Testsystem geschrieben, welches via JSON, Dateien einliest und damit das Interface von Linearem Code (also ohne OOP, genauer gesagt ist das C-Code) abtestet.
Aktuell haben wir knapp 4000 Testfälle. Was wir aber nicht wissen ist, wie viel Code wurde denn nun eigentlich getestet, sprich welche Couverage haben wir denn da nun eigentlich.

Im Englischen Forum scheint das auch schon mal jemand probiert zu haben siehe https://forum.lazarus.freepascal.org/in ... ic=37186.0 aber so recht schlau geworden bin ich daraus nicht.

Bevor ich mir nun ein eigenes Tool baue, mit welchem man den Code instrumentalisiert und dann die Coverage rausmisst, dachte ich mir ich frag mal ganz Frech hier im Forum, ob da jemand Erfahrungen mit hat ...

[Edit]
Das hier scheint auch related: https://gitlab.com/ccrdude/laz-codecoverage-helper
Zuletzt geändert von corpsman am Di 31. Mai 2022, 11:09, insgesamt 1-mal geändert.
--
Just try it

Warf
Beiträge: 1680
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Code Couverage Messen, aber wie ..

Beitrag von Warf »

Im grunde kannst du dir die Coverage informationen mittels Valgrind holen:

Code: Alles auswählen

$> valgrind --tool=callgrind --compress-strings=no --compress-pos=no --collect-jumps=yes "command"
und musst die dann nur noch statistisch auswerten.

Auf die schnelle habe ich dazu das als all in one lösung gefunden: https://github.com/squeek502/grindcov

Alternativ, könntest du mal KCov versuchen, das kann theoretisch beliebeige binaries mit DWARF2 symbolen:
https://github.com/SimonKagstrom/kcov

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1363
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Code Couverage Messen, aber wie ..

Beitrag von corpsman »

Danke für die Tipps, das Valgrind wollte ich eh schon immer mal ausprobieren, leider arbeite ich unter Windows muss mal schaun ob das dort auch so einfach geht ...
--
Just try it

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1363
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Code Couverage Messen, aber wie ..

Beitrag von corpsman »

Sodale, hab nun einiges Ausprobiert, und wie für mich typisch habe ich nun eine Custom Made variante gebastelt die macht was ich will :roll:

Im Prinzip habe ich nun ein kleines Tool das vor dem Compilieren meinen Code instrumentalisiert (und zwar nur den Teil den ich testen will) und einen "PfadBesucht" befehl einbaut.
Im Finalen Testsystem wird dann vor dem Ausführen der Tests jeder Pfad als "Nicht" besucht markiert und nach den Tests geschaut welche besucht wurden.
Das Funktioniert derart gut, dass es nun schon auf die nächsten Projekte ausgerollt wird ;).
Mit hilfe eines kleinen weiteren Tools kann man dann auch anzeigen welche Pfade unbesucht sind. Und weil mein Tool custom made ist haben wir auch gleich eingebaut, dass man Pfade via Review von der Pfadanalyse streichen lassen kann. Ist echt cool geworden, danke für eure hilfe.
--
Just try it

Antworten