2010-07-02 14 views
11

Ist es möglich, bestimmte Funktionen oder Codezeilen aus der gcov-Coverage-Analyse auszuschließen? Mein Code enthält bestimmte Funktionen, die zum Debuggen verwendet werden und nicht als Teil meiner Testsuite ausgeführt werden. Solche Funktionen reduzieren den von gcov gemeldeten Abdeckungsprozentsatz. Ich möchte diese Funktionen von den Ergebnissen ausschließen. Wenn es über gcov nicht möglich ist, ist es vielleicht über lcov möglich, aber ich konnte es nicht herausfinden. Deine Hilfe wird geschätzt.Ausschließen bestimmter Funktionen aus gcov/lcov-Coverage-Ergebnissen

+0

Siehe auch http://stackoverflow.com/questions/3555083/how-do-i-tell-gcov-to-ignore-un-hittable-lines-of-c-code – jchl

Antwort

5

Ich filtere bestimmte Quelldateien aus, indem ich die Ausgabe von lcov --capture über ein einfaches awk-Skript ausführe. Die Ausgabe von lcov --capture hat ein sehr einfaches Format und das unten stehende awk-Skript filtert Quelldateien heraus, die mit file_pattern übereinstimmen. Ich denke, es ist möglich, das Skript so anzupassen, dass es Funktionen anstelle von Dateinamen filtert.

BEGIN { 
     record="" 
} 

/^SF/ { 
     if (match ($0, "file_pattern")) { 
      doprint = 0 
     } else { 
      doprint = 1 
     } 
} 

/^end_of_record$/ { 
     if (doprint) { 
      print record $0 
     } 
     record = "" 
     next 
} 

{ 
    record=record $0 "\n" 
}