SonarQube无法读取JavaScript的lcov.info

问题描述 投票:0回答:1

我在我的JavaScript单元测试中使用karma-coverage和isparta-loader来生成lcov.info文件。

但是,当我使用JavaScript Plugin运行SonarQube分析时,不会生成测试覆盖率报告。如果lcov.info包含1个文件的数据,则覆盖率报告不会失败,但如果lcov.info包含2个或更多文件的数据,则它始终在以下情况下失败:

13:43:27.635 INFO - 将结果存储在数据库13:43:27.649 DEBUG - 执行org.sonar.batch.phases.GraphPersister 13:43:27.714 DEBUG - 执行org.sonar.batch.index.SourcePersister 13:43:29.852 DEBUG - 在项目上发布信号量:org.sonar.api.resources.Project@6b1e6f8b [id = 7859,key = func.salesorder NG,qualifier = TRK],带有密钥batch-func.salesorderNG INFO:------ -------------------------------------------------- ---------------- INFO:EXECUTION FAILURE INFO:---------------------------- --------------------------------------------总时间:4:14.804最终记忆:23M / 828M INFO:----------------------------------------- ---------------------------

错误:Sonar跑步者执行期间出错 org.sonar.runner.impl.RunnerException:无法在org.sonar.runner.impl.BatchLauncher $ 1.run(BatchLauncher。)的org.sonar.runner.impl.BatchLauncher $ 1.delegateExecution(BatchLauncher.java:91)中执行Sonar。 java:75)在org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69)的java.security.AccessController.doPrivileged(Native Method)org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher。 java:50)org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:102)atg.sonar.runner.api.Runner.execute(Runner.java:100)org.sonar.runner.Main位于org.sonar.runner.Main.main(Main.java:53)的org.sonar.runner.Main.execute(Main.java:59)的.executeTask(Main.java:70)引起:java.lang。 IllegalStateException:无法在org.sonar上的org.sonar.batch.apatch.apatch.apatch.apatch.DataModePhaseExecutor.executePersisters(DatabaseModePhaseExecutor.java:165)的org.sonar.batch.index.SourcePersister.persist(SourcePersister.java:84)中保存文件源。 batch.phases.DatabaseModePhaseExecutor.execute (DatabaseModePhaseExecutor.java:133)位于org.sonar的org.sonar.batch.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:264)org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:92)。在org.sonar.batch.scan.ProjectScanContainer.scanRecursively的org.sonar.batch.scan.ProjectScanContainer.scan(ProjectScanContainer.java:235)中的api.platform.ComponentContainer.execute(ComponentContainer.java:77)(ProjectScanContainer.java: 230)org.sonar.batch.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:220)org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:92)at org.sonar.api.platform.ComponentContainer org.sonar.batch.scan.ScanTask.scan(ScanTask.java:57)中的org.sonar.batch.scan.ScanTask.execute(ScanTask.java:45)中的.execute(ComponentContainer.java:77)。在org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer)的sonar.batch.bootstrap.TaskContainer.doAfterStart(TaskContainer.java:135) .java:92)org.sonar.batch上的org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:77)org.sonar.batch.bootstrap.GlobalContainer.executeTask(GlobalContainer.java:158)。 bootstrapper.Batch.executeTask(Batch.java:95)atg.sonar.batch.bootstrapper.Batch.execute(Batch.java:67)org.sonar.runner.batch.IsolatedLauncher.execute(IsolatedLauncher.java:48)在sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)at java.lang.reflect.Method.invoke(Unknown Source)在org.sonar.runner.impl.BatchLauncher $ 1.delegateExecution(BatchLauncher.java:87)... 9更多引起:java.lang.ArrayIndexOutOfBoundsException:-1在java的java.util.ArrayList.elementData(未知来源)位于org.sonar.server.source.db.FileSourceDb的com.google.protobuf.RepeatedFieldBuilder.getBuilder(RepeatedFieldBuilder.java:245)上的.util.ArrayList.get(未知来源)$ Data $ Bu org.sonar.batch.index.SourceDataFactory.applyLineMeasure(SourceDataFactory.java:183)中的orr.sonLinesBuilder(FileSourceDb.java:2911)org.sonar.batch.index.SourceDataFactory.applyLineMeasures(SourceDataFactory.java:117)at org位于org.sonar.batch.index.SourcePersister.persist的org.sonar.batch.index.SourcePersister.computeData(SourcePersister.java:152)的.sonar.batch.index.SourceDataFactory.consolidateData(SourceDataFactory.java:76)(SourcePersister) .java:93)at org.sonar.batch.index.SourcePersister.persist(SourcePersister.java:81)... 33更多

lcov.info显示以下信息:

SF:D:\SOC\src\UI\UI.ng\js\general\services\tabStateService.js
FN:3,_interopRequireDefault
FN:11,(anonymous_2)
FN:14,tabStateService
FN:17,moveNext
FNF:4
FNH:4
FNDA:1,_interopRequireDefault
FNDA:1,(anonymous_2)
FNDA:21,tabStateService
FNDA:2,moveNext
DA:0,1
DA:1,1
DA:4,1
DA:5,1
DA:8,1
DA:9,21
DA:10,21
DA:12,2
LF:8
LH:8
BRDA:3,1,0,0
BRDA:3,1,1,1
BRDA:3,2,0,1
BRDA:3,2,1,1
BRF:4
BRH:4
end_of_record
TN:
SF:D:\SOC\src\UI\UI.ng\js\general\services\pagingService.js
FN:5,(anonymous_1)
FN:8,pagingService
FN:14,getPagingParams
FN:20,calculateSkip
FNF:4
FNH:4
FNDA:1,(anonymous_1)
FNDA:23,pagingService
FNDA:11,getPagingParams
FNDA:7,calculateSkip
DA:1,1
DA:3,1
DA:4,1
DA:7,1
DA:9,23
DA:13,1
DA:14,11
DA:15,2
DA:16,9
DA:17,7
DA:18,2
DA:21,1
DA:22,7
LF:13
LH:13
BRDA:15,1,0,2
BRDA:15,1,1,9
BRDA:15,2,0,11
BRDA:15,2,1,9
BRDA:16,3,0,7
BRDA:16,3,1,2
BRDA:16,4,0,9
BRDA:16,4,1,7
BRF:8
BRH:8
end_of_record
sonarqube sonar-runner isparta
1个回答
0
投票

问题来自你的lcov.info这一行:

    DA:0,1

这意味着第0行由单元测试覆盖。这使分析失败,因为只有严格的正数行。

在这种情况下,有一个ticket可以改善SonarQube的行为。

© www.soinside.com 2019 - 2024. All rights reserved.