Интерпретировать отчет Gcov для объектов класса

Я делаю покрытие кода в классе cashier и мой учитель дал очень краткое учение о значении отчета, который, я считаю, очень важен для развития моих навыков разработки программного обеспечения, поэтому мне понадобится ваша консультация по интерпретации следующего отчета gcov. Буду признателен за любые ссылки или статьи, которые помогут в моем понимании gcov

Спасибо

Заголовочный файл

#ifndef CASHIER_H
#define CASHIER_H
#include <string>
using namespace std;class cashier
{
public:

void setID(string);
string getID();

void setPassword(string);
string getPassword();

void settries(int);
int gettries();
void increase_tries();

private:
string ID;
string Password;
int tries;};

#endif  /* CASHIER_H */

Файл реализации

#include "cashier.h"void cashier::setID(string value)
{
this->ID = value;
}

void cashier::setPassword(string value)
{

this->Password = value;

}

string cashier::getID()
{
return this->ID;
}

string cashier::getPassword()
{
return this->Password;
}

void cashier::settries(int value)
{
this->tries=value;
}
int cashier::gettries()
{
return this->tries;
}
void cashier::increase_tries()
{
this->tries = this->tries + 1 ;

}

Я ввожу следующие команды в командной строке, чтобы использовать gcov в классе

gcov -b cashier.gnco

Я получил следующие результаты

File 'cashier.cpp'
Lines executed:100.00% of 18 //what does the 18 mean
No branches                  //what does no branches mean
Calls executed:100.00% of 4   // what does 4 mean ??
cashier.cpp:creating 'cashier.cpp.gcov'

File '/usr/include/c++/4.4/bits/basic_string.h' // Where did this come from ??
Lines executed:0.00% of 2
No branches
Calls executed:0.00% of 1
/usr/include/c++/4.4/bits/basic_string.h:creating 'basic_string.h.gcov

Я набираю следующую команду

gcov -f cashier.gnco

Я получил следующие результаты B

Function '_ZN7cashier8settriesEi' // does this refer to the function :settries
Lines executed:100.00% of 3       // my teacher doesnt think so but i feel it refer
//to it , who is correct??

Function '_ZN7cashier8gettriesEv'
Lines executed:100.00% of 2

Function '_ZN7cashier14increase_triesEv'
Lines executed:100.00% of 3

Function '_ZN7cashier11getPasswordEv'
Lines executed:100.00% of 2

Function '_ZN7cashier5getIDEv'
Lines executed:100.00% of 2

Function '_ZNSsaSERKSs'
Lines executed:0.00% of 2

Function '_ZN7cashier11setPasswordESs'
Lines executed:100.00% of 3

Function '_ZN7cashier5setIDESs'
Lines executed:100.00% of 3

File 'cashier.cpp'
Lines executed:100.00% of 18
cashier.cpp:creating 'cashier.cpp.gcov'

File '/usr/include/c++/4.4/bits/basic_string.h'
Lines executed:0.00% of 2
/usr/include/c++/4.4/bits/basic_string.h:creating 'basic_string.h.gcov'

Мои вопросы к результату А

1) Что 18 значит и его значение в Lines executed:100.00% of 18

2) Что делает no branches имею в виду

3) что делает 4 значит и его значение в Calls executed:100.00% of 4

4) Что означает весь абзац

 File '/usr/include/c++/4.4/bits/basic_string.h'
Lines executed:0.00% of 2
No branches
Calls executed:0.00% of 1
/usr/include/c++/4.4/bits/basic_string.h:creating 'basic_string.h.gcov

Мои вопросы к результату Б

1) Все имена функций и т.д .: : ‘_ ZN7cashier8settriesEi’ почти совпадает с именами функций кассира и т. д .: void урегулирования (int), я думаю, что это относится к той же функции, но мой учитель считает иначе, кто прав?

2) Что означает 3 в Lines executed:100.00% of 3для функции: ‘_ ZN7cashier8settriesEi’

0

Решение

Результат А:

  1. 18 строк вашего кода были выполнены после запуска программы (относятся к cashier.cpp).
  2. Ваш код не имеет никаких условий.
  3. 4 строки были выполнены из 4 инструментированных (относятся к cashier.h)
  4. Некоторые строки std :: string стали частью покрытия. Вы должны исключить std :: string из отчета о покрытии (gcov -e)

Результат Б:

  1. да
  2. 3 линии были выполнены из 3 инструментальных.

Постскриптум
Если вы заинтересованы в gcov, вы можете установить lcov — это графическое представление в отчете gcov.

3

Другие решения

Имена как _ZN7cashier8settriesEi являются искромсанный имена, и они определенно относятся к таким функциям, как cashier::settries() в этом случае.

Lines executed это просто количество строк в исходном файле, которые были пройдены во время выполнения программы. Вы должны посмотреть на подробные результаты (см. пример) изучить, какие из них являются актуальными исполнимый а также выполненный линий.

No branches означает, что нет точек принятия решения, как if заявления в коде.

Calls executed вызовы функций из этого файла к функциям этого файла.

void cashier::setID(string value)
{
this->ID = value; // call to string::operator=()
}

void cashier::setPassword(string value)
{
this->Password = value; // call to string::operator=()
}

string cashier::getID()
{
return this->ID; // call to copy-constructor of string
}

string cashier::getPassword()
{
return this->Password; // call to copy-constructor of string
}

Эти четыре метода вызывают std::stringМетоды, хотя это не написано явно. (См. Мои комментарии к коду выше.)
Три других метода манипулируют переменными базового типа. int и это не требует вызовов функций.

2

По вопросам рекламы [email protected]