gel*_*ara 5 python pytest sonarqube gitlab-ci gitlab-ci-runner
我正在尝试为 python 项目设置 gitlab ci 管道,但 sonarqube 客户端遇到一些问题,该客户端无法解析coverage.xml 文件
\n\n我收到的错误如下:
\n\nINFO: Python test coverage\nINFO: Parsing report \'/builds/core-tech/tools/nlu/mix-nlu-middleware/server/tests/cov.xml\'\nWARN: Invalid directory path in \'source\' element: /bolt-webserver/bolt\nWARN: Invalid directory path in \'source\' element: /bolt-webserver/tests\nERROR: Cannot resolve the file path \'base.py\' of the coverage report, the file does not exist in all <source>.\nERROR: Cannot resolve 404 file paths, ignoring coverage measures for those files\nINFO: Sensor Cobertura Sensor for Python coverage [python] (done) | time=74ms\nINFO: Sensor PythonXUnitSensor [python]\nINFO: Sensor PythonXUnitSensor [python] (done) | time=20ms\nINFO: Sensor JaCoCo XML Report Importer [jacoco]\nRun Code Online (Sandbox Code Playgroud)\n\n覆盖率文件 (cov.xml) 以此开头:
\n\n<?xml version="1.0" ?>\n<coverage branch-rate="0" branches-covered="0" branches-valid="0" complexity="0" line-rate="0.3476" lines-covered="10369" lines-valid="29833" timestamp="1564079534753" version="4.4.2">\n <!-- Generated by coverage.py: https://coverage.readthedocs.io -->\n <!-- Based on https://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtd -->\n <sources>\n <source>/bolt-webserver/bolt</source>\n <source>/bolt-webserver/tests</source>\n </sources>\n <packages>\n <package branch-rate="0" complexity="0" line-rate="0.55" name=".">\n <classes>\n <class branch-rate="0" complexity="0" filename="base.py" line-rate="0.5955" name="base.py">\n <methods/>\n <lines>\n <line hits="1" number="1"/>\n <line hits="1" number="2"/>\n <line hits="1" number="3"/>\n <line hits="1" number="4"/>\n <line hits="1" number="5"/>\n <line hits="1" number="7"/>\n <line hits="1" number="9"/>\n <line hits="1" number="10"/>\n .......................\nRun Code Online (Sandbox Code Playgroud)\n\n声纳的称呼是这样的:
\n\n- sonar-scanner -Dsonar.projectKey=mix-nlu-middleware -Dsonar.sources=./server -Dsonar.host.url=$SONAR_SERVER_HOST -Dsonar.login=$SONAR_LOGIN -Dsonar.python.coverage.reportPaths=server/tests/cov.xml -Dsonar.junit.reportPaths=server/tests/junit-report.xml\nRun Code Online (Sandbox Code Playgroud)\n\n项目树如下所示:
\n\n.\n+-- CONTRIBUTING.md\n+-- gen_version.sh\n+-- package-lock.json\n+-- README.md\n+-- scripts\n\xe2\x94\x82\xc2\xa0\xc2\xa0 +-- .....\n+-- server\n\xe2\x94\x82\xc2\xa0\xc2\xa0 +-- alembic.ini\n\xe2\x94\x82\xc2\xa0\xc2\xa0 +-- bolt\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 +-- .....\n\xe2\x94\x82\xc2\xa0\xc2\xa0 +-- Bolt.egg-info\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 +-- .....\n\xe2\x94\x82\xc2\xa0\xc2\xa0 +-- conf\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 +-- .....\n\xe2\x94\x82\xc2\xa0\xc2\xa0 +-- dev-requirements.txt\n\xe2\x94\x82\xc2\xa0\xc2\xa0 +-- Dockerfile\n\xe2\x94\x82\xc2\xa0\xc2\xa0 +-- Dockerfile-dev\n\xe2\x94\x82\xc2\xa0\xc2\xa0 +-- http.log\n\xe2\x94\x82\xc2\xa0\xc2\xa0 +-- MANIFEST.in\n\xe2\x94\x82\xc2\xa0\xc2\xa0 +-- pytest.ini\n\xe2\x94\x82\xc2\xa0\xc2\xa0 +-- requirements.txt\n\xe2\x94\x82\xc2\xa0\xc2\xa0 +-- scripts\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 +-- .....\n\xe2\x94\x82\xc2\xa0\xc2\xa0 +-- sdks\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 +-- ....\n\xe2\x94\x82\xc2\xa0\xc2\xa0 +-- server.log\n\xe2\x94\x82\xc2\xa0\xc2\xa0 +-- setup.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 +-- templates\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 +-- .....\n\xe2\x94\x82\xc2\xa0\xc2\xa0 +-- tests\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 +-- .....\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \\-- version.properties\n\\-- test.txt\nRun Code Online (Sandbox Code Playgroud)\n\n知道我在这里做错了什么吗?
\n\n我还尝试在项目和文件系统的根文件夹中创建路径 /bolt-webserver/bolt 但仍然没有成功。
\n\n“base.py”文件和 conv.xml 中提到的其他文件位于“/builds/core-tech/tools/nlu/mix-nlu-middleware/server/tests”下
\n好的,问题似乎来自 cov.xml 内容。看来 sonarqube 无法仅根据名称找到测试文件: filename="base.py" 为了解决问题,我必须更新 cov.xml 以便文件名字段包含完整的文件路径。文件名=“/base.py”