Я использую VS 2015 Enterprise, и я провел общий модульный тест для анализа покрытия кода. Я просматриваю список закрытых блоков для каждой функции, и они, как правило, кажутся правильными. Однако, когда я нажимаю правой кнопкой мыши метод -> «Перейти к исходному коду», некоторые функции идут в нужное место в исходном коде (соответствующий .cpp-файл), но на других он пытается открыть файл заголовка (номер исходной строки верен, но код находится в файле .cpp, а не в файле .h). Это влияет на выделение исходного кода - функции, которые VS думает в .h, не выделяются в .cpp. Я не могу определить разницу в функциях (одинаковая видимость, те же заголовочные и исходные файлы), за исключением, может быть, какого потока они вызываются. Любая идея, почему VS думает, что какой-то код находится в .h, а не .cpp?Visual Studio 2015 Code Coverage Неверный файл
ответ
Очевидно, несмотря на то, что VS 2015 поддерживает функцию C++ 11 non-static data member initializers (она правильно компилируется), инструмент покрытия зажимает эту функцию. Вот MCVE. Я использую VS 14.0.24720.00 Update 1. Чтобы воспроизвести, скомпилируйте эту программу, затем получите покрытие кода, запустив ее с помощью Generic Test. Если инициализируется x
, инструмент покрытия ищет код для конструктора в файле .h. Если вы выберете = 0
, он правильно определит определение конструктора, как в .cpp. В моем коде продукта это был не конструктор, а, казалось бы, случайные функции, которые, по мнению инструмента покрытия, были определены в файле .h. Исправить, в моем случае, было просто переместить инициализацию члена данных в список инициализации конструктора.
//.h
class Test
{
public:
Test();
~Test();
void Func1();
void Func2();
void Func3();
int x = 0;
};
.
// .cpp
#include "Test.h"
#include <iostream>
Test::Test()
{
std::cout << "in Test()" << std::endl;
}
Test::~Test()
{
}
void Test::Func1()
{
std::cout << "in Func1" << std::endl;
Func2();
Func3();
}
void Test::Func2()
{
std::cout << "in Func2" << std::endl;
}
void Test::Func3()
{
std::cout << "in Func3" << std::endl;
}
- 1. Code Coverage Visual Studio 2010
- 2. Visual Studio 2015 Code Coverage threw - Не удалось включить ограничения
- 3. Исключить авто свойства из Code Coverage в Visual Studio 2015
- 4. Наглость Visual Studio Code Coverage проблема
- 5. Code Coverage Tools & Visual Studio 2008 Pro
- 6. Visual Studio 2015 Code Snippet?
- 7. TFS 2015 Code Coverage не отображается
- 8. Как покрыть исключения в Visual Studio Code Coverage
- 9. Visual Studio Code Coverage устарел с vNext-проектами?
- 10. Jacoco Code Coverage in android studio
- 11. Intellitest code coverage
- 12. Maven code coverage
- 13. Visual Studio Overwriting Code
- 14. 'ConnectedServicesPackages' - Visual Studio 2015
- 15. Visual Studio 2015 IronPython
- 16. Code Coverage on Where method
- 17. Xcode и Code Coverage
- 18. Laravel Code Coverage
- 19. Xcode 8 Code Coverage
- 20. JavaScript Code Coverage
- 21. Code Coverage Tool
- 22. Angular2 Qunit code coverage
- 23. Nightmare.js и Code Coverage
- 24. Сохранить файл в пакете Visual Studio 2015
- 25. Microsoft Visual Studio 2015 небольшой текстовый файл
- 26. Файл не найден Exception Visual Studio 2015
- 27. Visual Studio 2015 добавить JSON-файл
- 28. MIcrosoft Test Manager и Code Coverage
- 29. Visual Studio 2015 vs Visual Studio '15'
- 30. Ошибка 400 (неверный запрос) из Visual Studio 2015 Ripple
[mcve] поможет. Вы используете шаблонные функции? – AndyG
Согласен. Нет шаблонных функций. – Jeff
Является ли проект x64 или x86? Я помню, что есть проблемы с x64. – AndyG