2010-07-02 15 views
11

Czy można wykluczyć niektóre funkcje lub linie kodu z analizy zasięgu gcov. Mój kod zawiera pewne funkcje, które są używane do debugowania i nie są wykonywane jako część mojego zestawu testów. Takie funkcje zmniejszają procent pokrycia zgłaszany przez gcov. Chciałbym wykluczyć te funkcje z wyników. Jeśli nie jest to możliwe za pośrednictwem gcov, być może jest to możliwe za pośrednictwem lcov, ale nie byłem w stanie tego rozgryźć. Twoja pomoc jest doceniana.Wyłączenie niektórych funkcji z zakresu pokrycia gcov/lcov

+0

Zobacz również http://stackoverflow.com/questions/3555083/how-do-i-tell-gcov-to-ignore-un-hittable-lines-of-c-code – jchl

Odpowiedz

5

Odfiltrowuję niektóre pliki źródłowe, uruchamiając wyjście lcov --capture za pomocą prostego skryptu awk. Dane wyjściowe lcov --capture mają bardzo prosty format, a poniższy skrypt awk filtruje pliki źródłowe pasujące do file_pattern. Myślę, że możliwe jest zaadaptowanie skryptu, aby uczynił go funkcjami filtrowania zamiast nazw plików.

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" 
}