Я создаю отчет о покрытии с помощью dotCover.exe из командной строки, но он случайным образом завершается ошибкой:
[JetBrains dotCover] Coverage session finished with errors: Out of allowed iteration to generate unique temp name
[location] = C:\Build Agent\work\f532b5455ffc19e9\Profiler\Kernel\Windows\Native\Solution\core\src\Util\temp_util.cpp(44)
[function] = class boost::filesystem::path __cdecl jetbrains::profiler::temp::`anonymous-namespace'::create_temp<class jetbrains::profiler::temp::create_temp_file::<lambda_91d5f1a5933e4e60038be7ca777762a9>,0x010>(const class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > &,class jetbrains::profiler::temp::create_temp_file::<lambda_91d5f1a5933e4e60038be7ca777762a9> &&)
[file name] = C:\Temp\ft.EC76593C.tmp
[WIN32 error] = 80, The file exists.
Моя командная строка выглядит так:
dotCover.exe analyse /TargetExecutable=nunit3-console.exe /TargetArguments="unittest1.dll unittest2.dll ... unittest10.dll" /ReportType="html" /Output=CodeCoverage.html /Filters="+:*;-:*.*Tests;-:*.*.Tests;-:*.Tests;-:*.Tests*" /TempDir=C:\Temp\
Кажется, что чем больше DLL я пытаюсь охватить, тем больше вероятность того, что эта ошибка завершится ошибкой. Из сообщения об ошибке видно, что dotCover написан на C++ и использует boost::filesystem::path
для создания временного файла, но есть некоторые условия гонки, и он пытается создать новый временный файл там, где он уже существует. Моя версия dotCover JetBrains dotCover Console Runner 2017.1.2. Build 108.0.20170428.80910
.
Кто-нибудь знает, как исправить эту ошибку?
Редактировать: есть еще одна ошибка, из-за которой происходит сбой — Access is denied
:
[function] = class boost::filesystem::path __cdecl jetbrains::profiler::temp::`anonymous-namespace'::create_temp<class jetbrains::profiler::temp::create_temp_file::<lambda_91d5f1a5933e4e60038be7ca777762a9>,0x010>(const class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > &,class jetbrains::profiler::temp::create_temp_file::<lambda_91d5f1a5933e4e60038be7ca777762a9> &&)
[file name] = C:\Temp2\ft.0A96C261.tmp
[WIN32 error] = 5, Access is denied.
Опять же, это происходит случайным образом — обычно 3 раза происходит сбой, а 4-й — успешно.