Forum: PC-Programmierung Liste aller Funktionen in C-Modul


von StinkyWinky (Gast)


Lesenswert?

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.

von foobar (Gast)


Lesenswert?

Aus dem .o-File die exportierten Symbole rausholen (nm foo.o) reicht dir 
nicht?

von A. S. (rava)


Lesenswert?

google mal "test coverage", die meisten unit test frameworks haben dafür 
eine Unterstützung dabei.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

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.

von StinkyWinky (Gast)


Lesenswert?

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.

von c-hater-hater (Gast)


Lesenswert?

gcov/gcovr sind deine Freunde. Evtl. mal bei Ceedling anschauen.

von jemand (Gast)


Lesenswert?

Mit valgrind müsstest du sogar rausbekommen können, welche Code-Zweige 
wie häufig aufgerufen werden.

von MaWin (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.