JetBrains dotCover: сеанс покрытия завершен с ошибками: вне допустимой итерации для создания уникального временного имени

Я создаю отчет о покрытии с помощью 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-й — успешно.


person sashoalm    schedule 27.06.2017    source источник
comment
Вы пытались сообщить о проблеме в JetBrains с помощью их системы отслеживания ошибок?   -  person SergGr    schedule 29.06.2017
comment
похоже на ошибку, этот 0A96C261.tmp выглядит как закодированная временная метка. возможно, несколько наборов тестов пытаются создать временный файл одновременно.   -  person igorc    schedule 01.07.2017
comment
@jasοndιnAlt Это сделал nunit? Я знаю, что он может запускать тесты параллельно, поэтому, возможно, если мне удастся убедить его сериализовать их (то есть запускать их один за другим), проблема исчезнет.   -  person sashoalm    schedule 02.07.2017
comment
@SergGr Спасибо, я нашел существующую ошибку по этому поводу, которая не появлялась в любые результаты. Кажется, их система отслеживания ошибок не индексируется Google. Уверяют, что скоро исправят.   -  person sashoalm    schedule 02.07.2017
comment
@sashoalm они представили его в версии eap6, которая уже вышла   -  person NtFreX    schedule 04.07.2017
comment
@NtFreX Спасибо, попробую протестировать, как только смогу.   -  person sashoalm    schedule 05.07.2017


Ответы (1)


время от времени сталкивался с этой проблемой, используя версию раннего доступа (JetBrains.dotCover.CommandLineTools.2017.2.20170630.95316-eap06), проблема исчезла до сих пор.

Похоже, ошибка в инструменте dotcover открыта здесь. Вы можете загрузить последнюю версию инструменты командной строки dotcover из здесь

Изменить:

Загрузите последнюю версию dotcover из здесь, так как проблема решена.

person Rohith    schedule 06.07.2017
comment
Использование ссылки для скачивания 2017.2 eap6 больше не является хорошей идеей. Вместо этого используйте эту ссылку: jetbrains.com/dotcover/download/#section=commandline - person JCH2k; 11.04.2018