我不是前端开发人员,但是我需要进行声纳扫描以处理单元测试范围。所有这些工作都可以正常进行,但是我们进行了SonarQube的大版本升级(从6.x升级到7.9.1),并且已经中断了一段时间,现在我正尝试使其再次正常工作。
这在过去一直有效,我们必须紧密合作,但是有些细节不太正确。
当构建运行时,它将运行单元测试并似乎生成覆盖数据,并且对“声纳扫描仪”的调用会将路径发送到lcov.info文件。在SonarQube项目中,它具有大量“要覆盖的线”,但具有相同数量的未覆盖线。我还注意到,它在概述中没有“单元测试”部分。
在构建输出中,我看到很多这样的行:
DEBUG: 'src/api/Api.spec.tsx' indexed as test with language 'ts'
但是如上所述,SonarQube项目似乎没有任何单元测试。
作为构建脚本的一部分,在测试运行结束时,我运行“ ls -lt coverage”以查看生成的内容,并显示以下内容:
total 6264
-rw-r--r-- 1 81050 20059 1229978 Jan 4 19:12 clover.xml
-rw-r--r-- 1 81050 20059 720443 Jan 4 19:12 lcov.info
drwxr-xr-x 6 81050 20059 4096 Jan 4 19:12 lcov-report
-rw-r--r-- 1 81050 20059 4455341 Jan 4 19:12 coverage-final.json
我在此文件中看到了对“ Api.tsx”(以及许多其他文件)的引用,但是我没有看到对“ Api.spec.tsx”的引用,但是我不知道我是否应该期待任何内容。 / p>
我已经查看了“ package.json”中最有趣的配置,但没有发现任何明显的问题。
在这里我还能显示什么线索?
更新:
这是生成的声纳扫描仪命令行,其中有一些省略:
sonar-scanner -Dsonar.typescript.node=/opt/app/bin/node -Dsonar.nodejs.executable=/opt/app/bin/node -Dsonar.host.url=http://... -Dsonar.login=... -Dsonar.password= -Dsonar.javascript.lcov.reportPaths=coverage/lcov.info -Dsonar.typescript.lcov.reportPaths=coverage/lcov.info -Dsonar.branch.name= -Dsonar.language=js -Dsonar.projectKey=... -Dsonar.projectName=... '-Dsonar.exclusions=**/*.scss.d.ts, **/*.scss, **/*Props.ts, **/*State.ts, **/*index.ts' '-Dsonar.coverage.exclusions=**/*.spec.tsx, **/*.spec.ts, **/*.scss.d.ts, **/*.css.d.ts, **/*.scss' -Dsonar.projectVersion=1.0.0 '-Dsonar.sources=src/components/,src/api/,src/models/mappers/, src/utils/' '-Dsonar.lang.patterns.js=*/.ts,*/.tsx' -Dsonar.js.file.suffixes=.ts,.tsx -Dsonar.sourceEncoding=UTF-8 -Dsonar.tests=src '-Dsonar.test.inclusions=**/*.spec.tsx' -Dsonar.typescript.tslintconfigpath=tslint.json -Dsonar.log.level=DEBUG -Dsonar.verbose=true '-Dsonar.exec.maxBuffer=1024 * 1024'
答案 0 :(得分:0)
我忘了问这个问题。我必须回到代码和历史记录中,以查看是否可以记住我所做的修复工作。我想这就是我在这里发现的:
简而言之,如果生成文件中的文件路径包含符号链接条目,则SonarTS中存在一个错误,该错误使它无法遵循符号链接。解决此特定问题的方法是检查生成的文件,以了解正在使用哪些符号链接的模式,然后编写了脚本以对lcov.info和test-report.xml文件进行后处理,以替换符号路径。链接到非符号链接文件的绝对路径。