Это ошибка в lcov или значимая разница в количестве обращений в одной функции?

 10 [ +  - ][ +  - ] :          2 : Conf::~Conf() {}
  11                 :            : 
  12                 :            : 
  13                 :          2 : Conf::Conf( std::string filename, std::string delimiter,
  14                 :            : std::string comment )
  15 [ +  - ][ +  - ]:          2 :: m_Delimiter(delimiter), m_Comment(comment)
  16                 :            : {
  17                 :            :         // Construct a Conf, getting keys and values from given file
  18                 :            : 
  19 [ +  - ][ +  - ]:          4 :         std::ifstream in( filename.c_str() );
             [ +  - ]
  20                 :            : 
  21 [ +  - ][ -  + ]:          2 :         if( !in ) throw File_not_found( filename ); 
             [ #  # ]
  22                 :            : 
  23         [ +  - ]:          2 :         in >> (*this);
  24                 :          2 : }

Отчет о покрытии кода, как указано выше. Для класса Conf счетчик посещений конструктора равен 2, но счетчик посещений этой строки std::ifstream in( filename.c_str() ); это 4, который я думаю, что это должно быть 2 тоже. Как вы думаете о различном числе посещений в этом отчете о покрытии кода? lcov или значимый?

1 ответ

Похоже, что они рассчитывают две вещи (есть две строки с квадратными скобками для строки 19), и счет должен показывать вам сумму этих двух записей. Почему компилятор разбил строку на две части? В этом я не слишком уверен.

С моей стороны я фактически удалил функцию подсчета веток, чтобы избежать необходимости иметь дело с ней. Это не показалось полезным с большим проектом, как у меня. Возможно, это устранит этот побочный эффект.

Другие вопросы по тегам