Cobertura和Sonar 5.1的问题
最近,我有些麻煩,試圖在我的Grails 2.4.4項(xiàng)目中使用Sonar 5.1。 我使用的是Groovy常用的東西: Gmetrics,Codenarc和Cobertura 。 對于Sonar數(shù)據(jù)庫,我使用的是Postgres 9.4 。
聲納跑步者的日志文件給了我這個(gè):
build 22-Jun-2015 07:44:30 INFO: ------------------------------------------------------------------------ build 22-Jun-2015 07:44:30 INFO: EXECUTION FAILURE build 22-Jun-2015 07:44:30 INFO: ------------------------------------------------------------------------ build 22-Jun-2015 07:44:30 Total time: 9.153s build 22-Jun-2015 07:44:30 Final Memory: 30M/1039M build 22-Jun-2015 07:44:30 INFO: ------------------------------------------------------------------------ error 22-Jun-2015 07:44:30 ERROR: Error during Sonar runner execution error 22-Jun-2015 07:44:30 ERROR: Unable to execute Sonar error 22-Jun-2015 07:44:30 ERROR: Caused by: Unable to save file sources error 22-Jun-2015 07:44:30 ERROR: Caused by: -1沒什么用! 我認(rèn)為存在一些權(quán)限問題,因?yàn)椤盁o法保存文件源”通常意味著! 但是沒有權(quán)限問題。 然后,我禁用了分析的Cobertura部分,一切正常,因此Cobertura部分出了問題。 然后,我:
- 啟用詳細(xì)日志記錄— sonar.verbose = true
- 啟用了完整堆棧跟蹤日志記錄—使用-e開關(guān)
- 使用-X開關(guān)啟用了完整的調(diào)試日志記錄
這提供了更多線索。
error 22-Jun-2015 11:09:06 ERROR: Error during Sonar runner execution build 22-Jun-2015 11:09:06 INFO: ------------------------------------------------------------------------ error 22-Jun-2015 11:09:06 org.sonar.runner.impl.RunnerException: Unable to execute Sonar error 22-Jun-2015 11:09:06 at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:91) error 22-Jun-2015 11:09:06 at org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:75) error 22-Jun-2015 11:09:06 at java.security.AccessController.doPrivileged(Native Method) error 22-Jun-2015 11:09:06 at org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69) error 22-Jun-2015 11:09:06 at org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50) error 22-Jun-2015 11:09:06 at org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:102) error 22-Jun-2015 11:09:06 at org.sonar.runner.api.Runner.execute(Runner.java:100) error 22-Jun-2015 11:09:06 at org.sonar.runner.Main.executeTask(Main.java:70) error 22-Jun-2015 11:09:06 at org.sonar.runner.Main.execute(Main.java:59) error 22-Jun-2015 11:09:06 at org.sonar.runner.Main.main(Main.java:53) error 22-Jun-2015 11:09:06 Caused by: java.lang.IllegalStateException: Unable to save file sources error 22-Jun-2015 11:09:06 at org.sonar.batch.index.SourcePersister.persist(SourcePersister.java:84) error 22-Jun-2015 11:09:06 at org.sonar.batch.phases.DatabaseModePhaseExecutor.executePersisters(DatabaseModePhaseExecutor.java:165) error 22-Jun-2015 11:09:06 at org.sonar.batch.phases.DatabaseModePhaseExecutor.execute(DatabaseModePhaseExecutor.java:133) error 22-Jun-2015 11:09:06 at org.sonar.batch.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:264) error 22-Jun-2015 11:09:06 at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:92) error 22-Jun-2015 11:09:06 at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:77) error 22-Jun-2015 11:09:06 at org.sonar.batch.scan.ProjectScanContainer.scan(ProjectScanContainer.java:235) error 22-Jun-2015 11:09:06 at org.sonar.batch.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:230) error 22-Jun-2015 11:09:06 at org.sonar.batch.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:220) error 22-Jun-2015 11:09:06 at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:92) error 22-Jun-2015 11:09:06 at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:77) error 22-Jun-2015 11:09:06 at org.sonar.batch.scan.ScanTask.scan(ScanTask.java:57) error 22-Jun-2015 11:09:06 at org.sonar.batch.scan.ScanTask.execute(ScanTask.java:45) error 22-Jun-2015 11:09:06 at org.sonar.batch.bootstrap.TaskContainer.doAfterStart(TaskContainer.java:135) error 22-Jun-2015 11:09:06 at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:92) error 22-Jun-2015 11:09:06 at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:77) error 22-Jun-2015 11:09:06 at org.sonar.batch.bootstrap.GlobalContainer.executeTask(GlobalContainer.java:158) error 22-Jun-2015 11:09:06 at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:95) error 22-Jun-2015 11:09:06 at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:67) error 22-Jun-2015 11:09:06 at org.sonar.runner.batch.IsolatedLauncher.execute(IsolatedLauncher.java:48) error 22-Jun-2015 11:09:06 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) error 22-Jun-2015 11:09:06 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) error 22-Jun-2015 11:09:06 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) error 22-Jun-2015 11:09:06 at java.lang.reflect.Method.invoke(Method.java:606) error 22-Jun-2015 11:09:06 at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:87) error 22-Jun-2015 11:09:06 ... 9 more error 22-Jun-2015 11:09:06 Caused by: java.lang.ArrayIndexOutOfBoundsException: -1 error 22-Jun-2015 11:09:06 at java.util.ArrayList.elementData(ArrayList.java:371) error 22-Jun-2015 11:09:06 at java.util.ArrayList.get(ArrayList.java:384) error 22-Jun-2015 11:09:06 at com.google.protobuf.RepeatedFieldBuilder.getBuilder(RepeatedFieldBuilder.java:245) error 22-Jun-2015 11:09:06 at org.sonar.server.source.db.FileSourceDb$Data$Builder.getLinesBuilder(FileSourceDb.java:2911) error 22-Jun-2015 11:09:06 at org.sonar.batch.index.SourceDataFactory.現(xiàn)在,我可以在日志的前面看到Cobertura分析已經(jīng)完成。 我還可以看到Cobertura coverage.xml生成正常(這是整理代碼coverage信息的文件)。 創(chuàng)建coverage.xml文件之后,下一步是讓聲納運(yùn)行器解析該文件并將其發(fā)送給Postgres,在解析階段必須出錯(cuò),因?yàn)檫B接到Postgres絕對不是問題(記住Cobertura禁用后一切都很好) )。 我知道將請求發(fā)送到Postgres沒問題,所以認(rèn)為coverage.xml文件中一定有一些奇怪的地方,這意味著Sonar運(yùn)行程序無法解析它。 如前所述,coverage.xml文件詳細(xì)說明了每個(gè)類的行號已經(jīng)被覆蓋。 樣品:
<class name="com.dublintech.me.ApiLogFilters" filename="com/dublintech/me/ApiLogFilters.groovy" line-rate="0.0" branch-rate="0.0" complexity="0.0"><methods><method name="<clinit>" signature="()V" line-rate="0.0" branch-rate="1.0"><lines><line number="25" hits="0" branch="false"></line></lines></method>... </methods></class> ...那么什么樣的東西可以使解析桶呢? 如果coverage.xml文件中有一些奇數(shù)行怎么辦? 嗯……要檢查這一點(diǎn),我運(yùn)行了以下grep:
> grep "line number" coverage.xml這給了太多。 負(fù)數(shù)行號怎么辦?
>grep "line number=\"\-" coverage.xml不,沒有 好,回到異常,看這一行:
java.lang.ArrayIndexOutOfBoundsException: -1hmmm ...如果行號為0,我想知道它是否可以在聲納運(yùn)行器中進(jìn)行一些數(shù)組解析,從而使索引超出范圍?
>grep "line number=\"0" coverage.xml擊中! 是時(shí)候前后grep行,并獲得有關(guān)此文件的更多信息。
>grep -C20 "line number=\"0" coverage.xml這給了我罪魁禍?zhǔn)住?對于我來說,Cobertura為什么說行號0的點(diǎn)擊率為0毫無意義。 仍然可以打開Cobertura html報(bào)告并查看分析。 聲納在解析時(shí)只是在f地。 因此,通過將以下內(nèi)容添加到我的構(gòu)建配置中,從Cobertura分析中刪除了此文件。
coverage {xml = trueexclusions = ["**/com/dublintech/me/MyOddFile*"] }然后,我重新運(yùn)行,嘿嘿,一切正常。 該文件不在coverage.xml文件中。 這意味著Sonar跑步者可以解析文件,一切正常。
我喜歡聲納,喜歡穩(wěn)定的構(gòu)造,喜歡快速反饋,是的,當(dāng)它再次工作時(shí),我是一個(gè)快樂的人!
翻譯自: https://www.javacodegeeks.com/2015/06/problems-with-cobertura-and-sonar-5-1.html
總結(jié)
以上是生活随笔為你收集整理的Cobertura和Sonar 5.1的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从Java集成Active Direct
- 下一篇: rabbitmq订单模块_RabbitM