2014-04-24 13 views
7

Ich frage mich, ob es die Möglichkeit gibt, lcov zu sagen, einige Zeilen in einer Quelldatei zu ignorieren, dh. Melde sie nicht als unbesucht an. Ich bin auf der Suche nach einer Lösung, die sich in dem Code gesetzt werden kann, wie:Wie man lcov sagt, um Zeilen in den Quelldateien zu ignorieren

int some_method(char some_var, char some_other_var) 
{ 
    if(some_var == 'A') 
    { 
     if(some_other_var == 'B') 
     { 
       /* do some real stuff here */ 
     } 
     else 
     { 
       LCOV_DO_NOT_REPORT_NEXT_LINE // **<-- this?? ** 
       NOT_IMPLEMENTED("A*") 
     } 
    } 
    else 
    { 
     NOT_IMPLEMENTED("*") 
    } 

und den notwendigen Hintergrund:

Ein großes Stück Code wie die oben in einer Reihe von Einheit getestet wird Tests, aber da dieser Code noch in der Entwicklung ist, gibt es viele NOT_IMPLEMENTED("A*") Makros, die einfach eine Nachricht mit der Zeilennummer/Dateiname auf den Bildschirm schreiben und die Anwendung beenden. Es gibt keine Tests für die nicht implementierten Zweige, offensichtlich werden sie geschrieben, wenn das Feature implementiert wird.

Allerdings meldet lcov diese NOT_IMPLEMENTED Zeilen und sie sehen sehr hässlich in der Abdeckung Bericht (dh: sie machen ein hohes Verhältnis von roten Linien).

Ist das, was ich für möglich, oder wir sollten nur damit leben?

+0

Gibt es Gründe für leere Verzweigungen, wenn Sie noch nicht mit ihnen gehen, etwas zu tun? – PomfCaster

+0

@PomfCaster alle leeren Zweige haben ein Makro 'NOT_IMPLEMENTED', das anzeigt, dass in diesem Zweig eine Funktionalität vorhanden ist – fritzone

+0

Löst meine Antwort Ihr Problem? – PomfCaster

Antwort

10

Sie können Folgendes als Kommentare in der Quelle verwenden.

Von http://ltp.sourceforge.net/coverage/lcov/geninfo.1.php

  • LCOV_EXCL_LINE
    • Linien diesen Marker enthalten, werden ausgeschlossen.
  • LCOV_EXCL_START
    • markiert den Beginn eines ausgeschlossenen Abschnitt. Die aktuelle Zeile ist Teil dieses Abschnitts.
  • LCOV_EXCL_STOP
    • Markiert das Ende eines Abschnitts ausgeschlossen. Die aktuelle Zeile ist nicht Teil dieses Abschnitts.