SonarQube无法读取JavaScript的lcov.info

SonarQube无法读取JavaScript的lcov.info,sonarqube,sonar-runner,isparta,Sonarqube,Sonar Runner,Isparta,我在JavaScript单元测试中使用karma coverage和isparta loader来生成lcov.info文件 但是,当我使用运行SonarQube分析时,不会生成测试覆盖率报告。如果lcov.info包含1个文件的数据,则覆盖率报告不会失败,但如果lcov.info包含2个或更多文件的数据,则它总是在以下位置失败: 13:43:27.635信息-将结果存储在数据库中 13:43:27.649调试-执行org.sonar.batch.phases.GraphPersister 13

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

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

13:43:27.635信息-将结果存储在数据库中 13:43:27.649调试-执行org.sonar.batch.phases.GraphPersister 13:43:27.714调试-执行org.sonar.batch.index.SourcePersister 13:43:29.852调试-发布项目上的信号量:org.sonar.api.resources。Project@6b1e6f8b[id=7859,key=func.salesorder NG,qualifier=TRK],带关键字batch-func.salesorderNG 信息:------------------------------------------------------------------------ 信息:执行失败 信息:------------------------------------------------------------------------ 总时间:4:14.804s 最终内存:23M/828M 信息:--------------------------------------------------------------------

错误:执行Sonar runner时出错
org.sonar.runner.impl.RunnerException:无法执行sonar 位于org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:91) 位于org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:75) 位于java.security.AccessController.doPrivileged(本机方法) 位于org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69) 位于org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50) 位于org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:102) 位于org.sonar.runner.api.runner.execute(runner.java:100) 位于org.sonar.runner.Main.executeTask(Main.java:70) 位于org.sonar.runner.Main.execute(Main.java:59) 在org.sonar.runner.Main.Main(Main.java:53)上,由于以下原因导致:java.lang.IllegalStateException:无法保存文件源 位于org.sonar.batch.index.SourcePersister.persist(SourcePersister.java:84) 位于org.sonar.batch.phases.DatabaseModePhaseExecutor.executepersister(DatabaseModePhaseExecutor.java:165) 位于org.sonar.batch.phases.DatabaseModePhaseExecutor.execute(DatabaseModePhaseExecutor.java:133) 位于org.sonar.batch.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:264) 位于org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:92) 位于org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:77) 位于org.sonar.batch.scan.ProjectScanContainer.scan(ProjectScanContainer.java:235) 在org.sonar.batch.scan.ProjectScanContainer.scanRecursive上(ProjectScanContainer.java:230) 位于org.sonar.batch.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:220) 位于org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:92) 位于org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:77) 位于org.sonar.batch.scan.scanstask.scan(scanstask.java:57) 位于org.sonar.batch.scan.scanstask.execute(scanstask.java:45) 位于org.sonar.batch.bootstrap.TaskContainer.doAfterStart(TaskContainer.java:135) 位于org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:92) 位于org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:77) 位于org.sonar.batch.bootstrap.GlobalContainer.executeTask(GlobalContainer.java:158) 位于org.sonar.batch.bootstrapper.batch.executeTask(batch.java:95) 位于org.sonar.batch.bootstrapper.batch.execute(batch.java:67) 在org.sonar.runner.batch.IsolatedLauncher.execute(IsolatedLauncher.java:48)上 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源) 位于java.lang.reflect.Method.invoke(未知源) 位于org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:87) ... 9其他原因:java.lang.ArrayIndexOutOfBoundsException:-1 位于java.util.ArrayList.elementData(未知源) 位于java.util.ArrayList.get(未知源) 位于com.google.protobuf.RepeatedFieldBuilder.getBuilder(RepeatedFieldBuilder.java:245) 位于org.sonar.server.source.db.FileSourceDb$Data$Builder.getLinesBuilder(FileSourceDb.java:2911) 位于org.sonar.batch.index.SourceDataFactory.applyLineMeasure(SourceDataFactory.java:183) 位于org.sonar.batch.index.SourceDataFactory.applyLineMeasures(SourceDataFactory.java:117) 位于org.sonar.batch.index.SourceDataFactory.consolidateData(SourceDataFactory.java:76) 位于org.sonar.batch.index.SourcePersister.computeData(SourcePersister.java:152) 位于org.sonar.batch.index.SourcePersister.persist(SourcePersister.java:93) 位于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

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

    DA:0,1
这意味着第0行被单元测试覆盖。 这使得分析失败,因为只需要严格的正数


在这种情况下,有一种方法可以改进SonarQube的行为。

您使用的是哪个版本的JavaScript插件?SonarQube的哪个版本?javascript插件的2.4版本?我们使用es6代码到es5的转换,我想这就是原因