cobertura_Cobertura和Sonar 5.1的问题
cobertura
最近,我有些麻煩,試圖在我的Grails 2.4.4項目中使用Sonar 5.1。 我使用的是Groovy常用的東西: Gmetrics,Codenarc和Cobertura 。 對于Sonar數據庫,我使用的是Postgres 9.4 。
聲納跑步者的日志文件給了我這個:
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沒什么用! 我認為存在一些權限問題,因為“無法保存文件源”通常意味著! 但是沒有權限問題。 然后我禁用了分析的Cobertura部分,一切正常,因此Cobertura部分出了問題。 然后,我:
- 啟用詳細日志記錄— sonar.verbose = true
 - 啟用了完整堆棧跟蹤日志記錄—使用-e開關
 - 使用-X開關啟用了完整的調試日志記錄
 
這提供了更多線索。
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.現在,我可以在日志的前面看到Cobertura分析已經完成。 我還可以看到Cobertura coverage.xml生成正確(這是整理代碼coverage信息的文件)。 創建coverage.xml文件之后,下一步是讓聲納跑步者解析該文件并將其發送給Postgres,在解析階段必須出錯,因為連接到Postgres絕對不是問題(記住Cobertura禁用時一切正常)。 我知道將請求發送到Postgres沒問題,因此認為coverage.xml文件中肯定有些奇怪,這意味著Sonar運行程序無法解析它。 如前所述,coverage.xml文件詳細說明了每個類的行號已經被覆蓋。 樣品:
<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文件中有一些奇數行怎么辦? 嗯……要檢查這一點,我運行了以下grep:
> grep "line number" coverage.xml這給了太多。 負數行號怎么辦?
>grep "line number=\"\-" coverage.xml不,沒有 好,回到異常,看這一行:
java.lang.ArrayIndexOutOfBoundsException: -1hmmm ...如果行號為0,我想知道它是否可以在聲納運行器中進行一些數組解析,使索引超出范圍?
>grep "line number=\"0" coverage.xml擊中! 是時候前后grep行,并獲取有關此文件的更多信息。
>grep -C20 "line number=\"0" coverage.xml這給了我罪魁禍首。 對于我來說,Cobertura為什么說行號0的點擊率為0毫無意義。 仍然可以打開Cobertura html報告并查看分析。 聲納在解析時只是在f地。 因此,通過將以下內容添加到我的構建配置中,從Cobertura分析中刪除了此文件。
coverage {xml = trueexclusions = ["**/com/dublintech/me/MyOddFile*"] }然后,我重新運行,嘿嘿,一切正常。 該文件不在coverage.xml文件中。 這意味著Sonar跑步者可以解析文件,一切正常。
我喜歡聲納,喜歡穩定的構造,喜歡快速反饋,是的,當它再次工作時,我是一個快樂的人!
翻譯自: https://www.javacodegeeks.com/2015/06/problems-with-cobertura-and-sonar-5-1.html
cobertura
總結
以上是生活随笔為你收集整理的cobertura_Cobertura和Sonar 5.1的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: (fdisk linux)
 - 下一篇: 电脑rbg的意思(电脑rbg什么意思)