OpenCppCoverage无法找到句柄的路径

时间:2016-10-25 06:47:07

标签: c++ jenkins code-coverage

我正在使用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。 我没有任何防病毒软件。

由于

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

对我来说,我能够通过使用以管理员身份运行的命令提示符解决此问题。

答案 2 :(得分:0)

选项一: 您必须为“--input_coverage”指定.cov文件参数的完整路径。所以你的最后一行应该是这样的:

BOOL

选项二: 在.bat文件的顶部有cd到bin文件。

--input_coverage=D:\Jenkins\workspace\bfsearch\bin\coverage_results_bfs_add_test_TESTTARGET.exe.cov
--input_coverage=D:\Jenkins\workspace\bfsearch\bin\coverage_results_bfs_cluster_around_center_tests_TESTTARGET.exe.cov
--input_coverage=D:\Jenkins\workspace\bfsearch\bin\coverage_results_bfs_multiple_cluster_centers_test_TESTTARGET.exe.cov