我正在Jenkins使用CI工作流。

每次编译结束时都会生成一个bat文件,如下所示:

OpenCppCoverage -q --continue_after_cpp_exception  --sources D:\Jenkins\workspace\bfsearch --modules D:\Jenkins\workspace\bfsearch  --excluded_sources D:\Jenkins\workspace\bfsearch\tests  --excluded_sources D:\Jenkins\workspace\bfsearch\bin  --export_type=binary:coverage_results_bfs_add_test_TESTTARGET.exe.cov -- D:\Jenkins\workspace\bfsearch\bin\tests\Debug\bfs_add_test_TESTTARGET.exe
OpenCppCoverage -q --continue_after_cpp_exception  --sources D:\Jenkins\workspace\bfsearch --modules D:\Jenkins\workspace\bfsearch  --excluded_sources D:\Jenkins\workspace\bfsearch\tests  --excluded_sources D:\Jenkins\workspace\bfsearch\bin  --export_type=binary:coverage_results_bfs_cluster_around_center_tests_TESTTARGET.exe.cov -- D:\Jenkins\workspace\bfsearch\bin\tests\Debug\bfs_cluster_around_center_tests_TESTTARGET.exe
OpenCppCoverage -q --continue_after_cpp_exception  --sources D:\Jenkins\workspace\bfsearch --modules D:\Jenkins\workspace\bfsearch  --excluded_sources D:\Jenkins\workspace\bfsearch\tests  --excluded_sources D:\Jenkins\workspace\bfsearch\bin  --export_type=binary:coverage_results_bfs_multiple_cluster_centers_test_TESTTARGET.exe.cov -- D:\Jenkins\workspace\bfsearch\bin\tests\Debug\bfs_multiple_cluster_centers_test_TESTTARGET.exe
OpenCppCoverage -q --continue_after_cpp_exception  --sources D:\Jenkins\workspace\bfsearch --modules D:\Jenkins\workspace\bfsearch  --excluded_sources D:\Jenkins\workspace\bfsearch\tests  --excluded_sources D:\Jenkins\workspace\bfsearch\bin --input_coverage=coverage_results_bfs_add_test_TESTTARGET.exe.cov --input_coverage=coverage_results_bfs_cluster_around_center_tests_TESTTARGET.exe.cov --input_coverage=coverage_results_bfs_multiple_cluster_centers_test_TESTTARGET.exe.cov  --export_type=cobertura:coverage_results.xml -- D:\Jenkins\workspace\bfsearch\bin\tests\Debug\bfs_radius_test_TESTTARGET.exe

由于opencppcoverage中的明确错误,我的测试运行总是失败:
错误:HandleInformation.cpp:85找不到句柄的路径。该句柄无效。
D:\Jenkins\workspace\bfsearch>./runtests.bat

D:\Jenkins\workspace\bfsearch>OpenCppCoverage -q --continue_after_cpp_exception  --sources D:\Jenkins\workspace\bfsearch --modules D:\Jenkins\workspace\bfsearch  --excluded_sources D:\Jenkins\workspace\bfsearch\\tests  --excluded_sources D:\Jenkins\workspace\bfsearch\\bin  --export_type=binary:coverage_results_bfs_add_test_TESTTARGET.exe.cov -- D:\Jenkins\workspace\bfsearch\bin\tests\Debug\bfs_add_test_TESTTARGET.exe
Error: HandleInformation.cpp:85 Cannot find path for the handle.The handle is invalid.



D:\Jenkins\workspace\bfsearch>OpenCppCoverage -q --continue_after_cpp_exception  --sources D:\Jenkins\workspace\bfsearch --modules D:\Jenkins\workspace\bfsearch  --excluded_sources D:\Jenkins\workspace\bfsearch\\tests  --excluded_sources D:\Jenkins\workspace\bfsearch\\bin  --export_type=binary:coverage_results_bfs_cluster_around_center_tests_TESTTARGET.exe.cov -- D:\Jenkins\workspace\bfsearch\bin\tests\Debug\bfs_cluster_around_center_tests_TESTTARGET.exe
Error: HandleInformation.cpp:85 Cannot find path for the handle.The handle is invalid.



D:\Jenkins\workspace\bfsearch>OpenCppCoverage -q --continue_after_cpp_exception  --sources D:\Jenkins\workspace\bfsearch --modules D:\Jenkins\workspace\bfsearch  --excluded_sources D:\Jenkins\workspace\bfsearch\\tests  --excluded_sources D:\Jenkins\workspace\bfsearch\\bin  --export_type=binary:coverage_results_bfs_multiple_cluster_centers_test_TESTTARGET.exe.cov -- D:\Jenkins\workspace\bfsearch\bin\tests\Debug\bfs_multiple_cluster_centers_test_TESTTARGET.exe
Error: HandleInformation.cpp:85 Cannot find path for the handle.The handle is invalid.



D:\Jenkins\workspace\bfsearch>OpenCppCoverage -q --continue_after_cpp_exception  --sources D:\Jenkins\workspace\bfsearch --modules D:\Jenkins\workspace\bfsearch  --excluded_sources D:\Jenkins\workspace\bfsearch\\tests  --excluded_sources D:\Jenkins\workspace\bfsearch\\bin --input_coverage=coverage_results_bfs_add_test_TESTTARGET.exe.cov --input_coverage=coverage_results_bfs_cluster_around_center_tests_TESTTARGET.exe.cov --input_coverage=coverage_results_bfs_multiple_cluster_centers_test_TESTTARGET.exe.cov  --export_type=cobertura:coverage_results.xml -- D:\Jenkins\workspace\bfsearch\bin\tests\Debug\bfs_radius_test_TESTTARGET.exe
Argument of input_coverage <coverage_results_bfs_add_test_TESTTARGET.exe.cov> does not exist.
OpenCppCoverage Version: 0.9.5.2

Usage: [options] -- program_to_run optional_arguments:

Command line only:
  -v [ --verbose ]                 Verbose mode.
  -q [ --quiet ]                   Quiet mode.
  -h [ --help ]                    Show help message.
  --config_file arg                Filename of a configuration file.

Command line and configuration file:
  --modules arg (=*)               The pattern that module's paths should
                                   match. Can have multiple occurrences.
  --excluded_modules arg           The pattern that module's paths should NOT
                                   match. Can have multiple occurrences.
  --sources arg (=*)               The pattern that source's paths should
                                   match. Can have multiple occurrences.
  --excluded_sources arg           The pattern that source's paths should NOT
                                   match. Can have multiple occurrences.
  --input_coverage arg             A output path of export_type=binary. This
                                   coverage data will be merged with the
                                   current one. Can have multiple occurrences.
  --export_type arg (=html)        Format: <exportType>:<outputPath>.
                                   <exportType> can be: binary, cobertura, html
                                   <outputPath> (optional) output file or
                                   directory for the export.
                                   Example: html:MyFolder\MySubFolder
                                   This flag can have multiple occurrences.
  --working_dir arg                The program working directory.
  --cover_children                 Enable code coverage for children processes.
  --no_aggregate_by_file           Do not aggregate coverage for same file
                                   path.
  --unified_diff arg               Format: <unifiedDiffPath>?<rootFolder>
                                   <unifiedDiffPath> path of the unified diff
                                   file. Git users can use git diff output.
                                   <rootFolder> (optional) root folder for
                                   paths in the diff file.
                                   See documentation for limitations.
  --continue_after_cpp_exception   Try to continue after throwing a C++
                                   exception.

Build step 'Execute Windows batch command' marked build as failure
Skipping Cobertura coverage report as build was not UNSTABLE or better ...
Can you help me with this? The same script was working a month ago, now it doesn't. Is there something related to windows updates ? I've also looked at the source code, there's no such code at HandleInformation.cpp:85 that can cause an error like that. Is source code updated in the repository?

我已经安装了最新版本,问题仍然存在。

这是我为测试该问题而创建的一个快速项目。

https://github.com/onatbas/OpenCppCoverageTestFail

我已经包含了详细的输出。

我正在运行Windws 7 x64。
我没有任何防病毒软件。

谢谢

最佳答案

基于https://github.com/OpenCppCoverage/OpenCppCoverage/issues/84,应在OpenCppCoverage 0.9.8.0中修复。

08-07 13:04