Hallo zusammen Ich möchte für mein Unit-Testing herausfinden, welche Funktionen eines C-Modules bereits durch einen Test geprüft werden. Daher muss ich zuerst wissen, welche Funktionen denn im C-Modul überhaupt implementiert sind. Als Zeil möchte ich erreichen, dass mir der Unit-Test am Ende ausspuckt, welche Tests noch fehlen. Am liebsten hätte ich eine Lösung über den Präprozessor, aber das halte ich für "utopisch". Als weitere Möglichkeit sehe ich eine Umsetzung in Python: C-Modul parsen und Resultat in eine Datei speichern. Gibt es in Python vielleicht schon eine Lib, die mir das weitestgehend abnehmen könnte? Seht ihr noch andere Möglichkeiten? Kommerzielle Produkte (z.B. Tessy) kommen vorerst nicht in Frage.
Aus dem .o-File die exportierten Symbole rausholen (nm foo.o) reicht dir nicht?
google mal "test coverage", die meisten unit test frameworks haben dafür eine Unterstützung dabei.
StinkyWinky schrieb: > C-Modul parsen und Resultat in eine Datei speichern. Gibt es in Python > vielleicht schon eine Lib, die mir das weitestgehend abnehmen könnte? Wie wär's mit gcc -aux-info file
1 | -aux-info filename |
2 | |
3 | Output to the given filename prototyped declarations for all functions |
4 | declared and/or defined in a translation unit, including those in |
5 | header files. This option is silently ignored in any language other |
6 | than C. |
7 | |
8 | Besides declarations, the file indicates, in comments, the origin of |
9 | each declaration (source file and line), whether the declaration was |
10 | implicit, prototyped or unprototyped (‘I’, ‘N’ for new or ‘O’ for old, |
11 | respectively, in the first character after the line number and the |
12 | colon), and whether it came from a declaration or a definition ... |
http://gcc.gnu.org/onlinedocs/gcc-8.3.0/gcc/C-Dialect-Options.html#index-aux-info Braucht zwr immer noch'n Skript, um in das Format zu transformieren, das du brauchst. Ist aber deutlich einfacher, als nen kompletten C-Parser zu basteln.
Danke für die Ideen. - gcc-nm foo.o -> funktioniert gut, zeig was ich will, den Rest kann ich wegfiltern - Test coverage für CUnit wäre mir neu - gcc (...) -aux-inf -> listet viele Objekte, jedoch vermisse ich da meine Funktionen Ich denke, ich werde gcc-nm verwenden.
gcov/gcovr sind deine Freunde. Evtl. mal bei Ceedling anschauen.
Mit valgrind müsstest du sogar rausbekommen können, welche Code-Zweige wie häufig aufgerufen werden.
StinkyWinky schrieb: > - Test coverage für CUnit wäre mir neu Na dann hast du ja etwas neues gelernt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.