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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von StinkyWinky (Gast)


Bewertung
0 lesenswert
nicht 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)


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

von A. S. (rava)


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

von Johann L. (gjlayde) Benutzerseite


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
gcov/gcovr sind deine Freunde. Evtl. mal bei Ceedling anschauen.

von jemand (Gast)


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

von MaWin (Gast)


Bewertung
0 lesenswert
nicht lesenswert
StinkyWinky schrieb:
> - Test coverage für CUnit wäre mir neu

Na dann hast du ja etwas neues gelernt.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.