<small id='2ma76'></small><noframes id='2ma76'>

    • <bdo id='2ma76'></bdo><ul id='2ma76'></ul>

      <tfoot id='2ma76'></tfoot>
      <i id='2ma76'><tr id='2ma76'><dt id='2ma76'><q id='2ma76'><span id='2ma76'><b id='2ma76'><form id='2ma76'><ins id='2ma76'></ins><ul id='2ma76'></ul><sub id='2ma76'></sub></form><legend id='2ma76'></legend><bdo id='2ma76'><pre id='2ma76'><center id='2ma76'></center></pre></bdo></b><th id='2ma76'></th></span></q></dt></tr></i><div id='2ma76'><tfoot id='2ma76'></tfoot><dl id='2ma76'><fieldset id='2ma76'></fieldset></dl></div>
        <legend id='2ma76'><style id='2ma76'><dir id='2ma76'><q id='2ma76'></q></dir></style></legend>

        SonarQube 不显示通过 Gradle 完全覆盖的类的每个文件的详细报告

        SonarQube does not display detailed report per file for fully covered classes via Gradle(SonarQube 不显示通过 Gradle 完全覆盖的类的每个文件的详细报告)

        <small id='I93NS'></small><noframes id='I93NS'>

            <bdo id='I93NS'></bdo><ul id='I93NS'></ul>
                <tbody id='I93NS'></tbody>
            • <legend id='I93NS'><style id='I93NS'><dir id='I93NS'><q id='I93NS'></q></dir></style></legend>
              <i id='I93NS'><tr id='I93NS'><dt id='I93NS'><q id='I93NS'><span id='I93NS'><b id='I93NS'><form id='I93NS'><ins id='I93NS'></ins><ul id='I93NS'></ul><sub id='I93NS'></sub></form><legend id='I93NS'></legend><bdo id='I93NS'><pre id='I93NS'><center id='I93NS'></center></pre></bdo></b><th id='I93NS'></th></span></q></dt></tr></i><div id='I93NS'><tfoot id='I93NS'></tfoot><dl id='I93NS'><fieldset id='I93NS'></fieldset></dl></div>
              <tfoot id='I93NS'></tfoot>

                • 本文介绍了SonarQube 不显示通过 Gradle 完全覆盖的类的每个文件的详细报告的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我正在 IntelliJ Java IDE 中运行 Gradle 构建.)?p>

                  这是我的 build.gradle:

                  存储库{mavenCentral()}应用插件:'java'应用插件:'jacoco'应用插件:声纳亚军"源兼容性 = 1.7项目版本 = '1.0'project.group = 'com.acme.sandbox'project.description = '只是一个测试项目'依赖{testCompile 组:'junit',名称:'junit',版本:'4.11'}//JaCoCo 测试覆盖率配置tasks.withType(Test) { 任务 ->雅可{附加=假}}//声纳配置sonarRunner {声纳属性 {属性 'sonar.host.url', 'http://host:port'属性sonar.jdbc.url"、myJdbcURL"属性sonar.jdbc.username"、dbuser"属性sonar.jdbc.password",dbpass"属性'sonar.login','builduser'属性'sonar.password','buildpass'属性 'sonar.profile', 'profilename'属性'sonar.branch','DEV'属性'sonar.language','java'属性 'sonar.sourceEncoding', 'UTF-8'属性 'sonar.verbose', 'true'//属性 'sonar.tests', "$projectDir\src\test\java"//属性 'sonar.binaries', "${buildDir}\classes\main,${buildDir}\classes\test"//属性 'sonar.java.coveragePlugin', 'jacoco'属性 'sonar.jacoco.reportPath', "${buildDir}\jacoco\test.exec"属性 'sonar.junit.reportsPath', "${buildDir}\test-results"}}

                  现在,如果您执行 clean,然后执行 sonarRunner,则会创建并处理 JaCoCo test.exec 文件:

                  <snip>18:35:27.705 调试 - 初始化程序:18:35:27.706 信息 - 基本目录:D:path	oJaCoCoTest18:35:27.706 信息 - 工作目录:D:path	oJaCoCoTestuildsonar18:35:27.707 信息 - 源目录:D:path	oJaCoCoTestsrcmainjava18:35:27.708 信息 - 测试目录:D:path	oJaCoCoTestsrc	estjava18:35:27.708 信息 - 二进制目录:D:path	oJaCoCoTestuildclassesmain<剪辑>18:35:27.931 信息 - 未找到 JaCoCo IT 报告.18:35:27.933 信息 - JaCoCo 报告未找到.18:35:27.938 调试 - 传感器:JavaSquidSensor ->QProfileSensor ->FindbugsSensor ->CpdSensor ->PmdSensor ->SurefireSensor ->CheckstyleSensor ->InitialOpenIssuesSensor ->ProfileEventsSensor ->ProjectLinksSensor ->版本事件传感器 ->FileHashSensor ->JaCoCo传感器<剪辑>18:35:34.055 信息 - 传感器 SurefireSensor...18:35:34.056 信息 - 解析 D:path	oJaCoCoTestuild	est-results18:35:34.116 信息 - 传感器 SurefireSensor 完成:61 毫秒<剪辑>18:35:34.936 信息 - 传感器 JaCoCoSensor...18:35:34.939 信息 - 分析 D:path	oJaCoCoTestuildjacoco	est.exec18:35:35.027 信息 - 没有关于每次测试覆盖率的信息.18:35:35.028 信息 - 传感器 JaCoCoSensor 完成:92 毫秒

                  这篇文章 建议设置sonar.tests,我试过没有效果.日志文件显示检测到测试源和二进制文件位于正确的位置.

                  FWIW,我在 Maven 构建中使用了相同的设置并且它有效.但是这里不能使用 Maven.

                  版本号:

                  • SonarQube 4.3
                  • SonarQube Java 生态系统 2.2.1
                  • Gradle 1.12(又名:1.11)
                  • IntelliJ IDEA Ultimate 13.1.3
                  • Java 1.7

                  这里是完整测试项目供下载,还有完整日志.

                  解决方案

                  这就是所谓的通缉"行为.Sonar 不显示覆盖率为 100% 的类.在您的项目中,您有一个类被测试完全覆盖,因此没有什么可显示的.

                  仅供参考:

                  即使您有 100% 覆盖的课程,您也可以通过在声纳搜索框(右上角)中搜索来查看该课程的覆盖率.

                  <小时>

                  如果您看到 .exec 并且它的大小很有价值,那么您已经收集了覆盖率数据.

                  查看我的常见问题解答

                  我为您的项目获得了这个代码分析小部件:

                  最后,在我添加了另一种被测试发现的方法之后,测试覆盖率下降到了 80%:

                  我得到了你需要的东西——按行覆盖:

                  顺便说一句,您为我的声纳修改的 build.gradle(这个 // 对我不起作用):

                  存储库{mavenCentral()}应用插件:'java'应用插件:'jacoco'应用插件:声纳亚军"源兼容性 = 1.7项目版本 = '1.0'project.group = 'com.acme.sandbox'project.description = '只是一个测试项目'依赖{testCompile 组:'junit',名称:'junit',版本:'4.11'}//JaCoCo 测试覆盖率配置tasks.withType(Test) { 任务 ->雅可{附加=假}}//声纳配置sonarRunner {声纳属性 {//关于 SonarQube 服务器的一般信息属性 'sonar.host.url', 'http://localhost:9000'属性 'sonar.jdbc.url'、'jdbc:h2:tcp://localhost:9092/sonar'属性sonar.jdbc.validationQuery",选择 1"属性sonar.jdbc.driverClassName",org.hibernate.dialect.H2Dialect"属性sonar.jdbc.password",声纳"属性sonar.jdbc.password",声纳"属性'sonar.login','jenkins'属性'sonar.password','jenkins'//这个项目的信息//属性 'sonar.profile', 'profilename'属性'sonar.branch','DEV'属性'sonar.language','java'属性 'sonar.sourceEncoding', 'UTF-8'属性 'sonar.verbose', 'true'//属性 'sonar.tests', "$projectDir\src\test\java"属性 'sonar.binaries', "${buildDir}/classes/main/"//在 SonarQube 运行之前执行 JaCoCo 以准备好报告文件//属性 'sonar.java.coveragePlugin', 'jacoco'属性 'sonar.jacoco.reportPath', "${buildDir}/jacoco/test.exec"属性 'sonar.junit.reportsPath', "${buildDir}/test-results"}}

                  I am running a Gradle build inside the IntelliJ Java IDE. The SonarQube runner Gradle plugin is used along with the JaCoCo Gradle plugin.

                  Problem: I am getting the message No information about coverage per test., (not a duplicate of this post, see below) and the coverage appears in SonarQube, but only as an overall percentage, not a detailed report per file:

                  Am I doing something wrong? Is it a bug in SonarQube maybe (as it was with Cobertura recently)?

                  Here is my build.gradle:

                  repositories {
                      mavenCentral()
                  }
                  
                  apply plugin: 'java'
                  apply plugin: 'jacoco'
                  apply plugin: 'sonar-runner'
                  
                  sourceCompatibility = 1.7
                  project.version = '1.0'
                  project.group = 'com.acme.sandbox'
                  project.description = 'just a test project'
                  
                  dependencies {
                      testCompile group: 'junit', name: 'junit', version: '4.11'
                  }
                  
                  // JaCoCo test coverage configuration
                  tasks.withType(Test) { task ->
                      jacoco {
                          append = false
                      }
                  }
                  
                  // Sonar configuration
                  sonarRunner {
                    sonarProperties {
                      property 'sonar.host.url', 'http://host:port'
                      property 'sonar.jdbc.url', 'myJdbcURL'
                      property 'sonar.jdbc.username', 'dbuser'
                      property 'sonar.jdbc.password', 'dbpass'
                      property 'sonar.login', 'builduser'
                      property 'sonar.password', 'buildpass'
                  
                      property 'sonar.profile', 'profilename'
                      property 'sonar.branch', 'DEV'
                      property 'sonar.language', 'java'
                      property 'sonar.sourceEncoding', 'UTF-8'
                      property 'sonar.verbose', 'true'
                      //property 'sonar.tests', "$projectDir\src\test\java"
                      //property 'sonar.binaries', "${buildDir}\classes\main,${buildDir}\classes\test"
                  
                      //property 'sonar.java.coveragePlugin', 'jacoco'
                      property 'sonar.jacoco.reportPath', "${buildDir}\jacoco\test.exec"
                      property 'sonar.junit.reportsPath', "${buildDir}\test-results"
                    }
                  }
                  

                  Now if you execute a clean, followed by sonarRunner, a JaCoCo test.exec file gets created and processed:

                  <snip>
                  18:35:27.705 DEBUG - Initializers : 
                  18:35:27.706 INFO  - Base dir: D:path	oJaCoCoTest
                  18:35:27.706 INFO  - Working dir: D:path	oJaCoCoTestuildsonar
                  18:35:27.707 INFO  - Source dirs: D:path	oJaCoCoTestsrcmainjava
                  18:35:27.708 INFO  - Test dirs: D:path	oJaCoCoTestsrc	estjava
                  18:35:27.708 INFO  - Binary dirs: D:path	oJaCoCoTestuildclassesmain
                  <snip>
                  18:35:27.931 INFO  - JaCoCo IT report not found.
                  18:35:27.933 INFO  - JaCoCo reports not found.
                  18:35:27.938 DEBUG - Sensors : JavaSquidSensor -> QProfileSensor -> FindbugsSensor -> CpdSensor -> PmdSensor -> SurefireSensor -> CheckstyleSensor -> InitialOpenIssuesSensor -> ProfileEventsSensor -> ProjectLinksSensor -> VersionEventsSensor -> FileHashSensor -> JaCoCoSensor
                  <snip>
                  18:35:34.055 INFO  - Sensor SurefireSensor...
                  18:35:34.056 INFO  - parsing D:path	oJaCoCoTestuild	est-results
                  18:35:34.116 INFO  - Sensor SurefireSensor done: 61 ms
                  <snip>
                  18:35:34.936 INFO  - Sensor JaCoCoSensor...
                  18:35:34.939 INFO  - Analysing D:path	oJaCoCoTestuildjacoco	est.exec
                  18:35:35.027 INFO  - No information about coverage per test.
                  18:35:35.028 INFO  - Sensor JaCoCoSensor done: 92 ms
                  

                  This post suggests to set sonar.tests, which I've tried to no effect. The log file shows that test sources and binaries are detected to be at the correct locations.

                  FWIW, I used the same settings with a Maven build and it worked. Can't use Maven here though.

                  Version numbers:

                  • SonarQube 4.3
                  • SonarQube Java Ecosystem 2.2.1
                  • Gradle 1.12 (also: 1.11)
                  • IntelliJ IDEA Ultimate 13.1.3
                  • Java 1.7

                  Here is the full test project for download, and also the full log.

                  解决方案

                  This is what is called 'wanted' behaviour. Sonar does not display classes with 100% coverage. In your project you have one class fully covered by tests, so nothing to show.

                  FYI:

                  Even if you have 100% covered class, you can look at this class coverage by searching in sonars search box (top-right corner).


                  If you see .exec and it is of valuable size, then you already collected coverage data.

                  See my FAQ

                  I got this code analysis widget for your project:

                  And finally after I added another method uncovered by tests and test coverage dropped to 80%:

                  I got what you need - coverage by line:

                  By the way, your modified build.gradle for my sonar (this // does not work for me):

                  repositories {
                      mavenCentral()
                  }
                  
                  apply plugin: 'java'
                  apply plugin: 'jacoco'
                  apply plugin: 'sonar-runner'
                  
                  
                  sourceCompatibility = 1.7
                  project.version = '1.0'
                  project.group = 'com.acme.sandbox'
                  project.description = 'just a test project'
                  
                  dependencies {
                      testCompile group: 'junit', name: 'junit', version: '4.11'
                  }
                  
                  // JaCoCo test coverage configuration
                  tasks.withType(Test) { task ->
                      jacoco {
                          append = false
                      }
                  }
                  
                  // Sonar configuration
                  sonarRunner {
                      sonarProperties {
                          // general information about the SonarQube server
                          property 'sonar.host.url', 'http://localhost:9000'
                          property 'sonar.jdbc.url', 'jdbc:h2:tcp://localhost:9092/sonar'
                          property 'sonar.jdbc.validationQuery', 'select 1'
                          property 'sonar.jdbc.driverClassName', 'org.hibernate.dialect.H2Dialect'
                          property 'sonar.jdbc.password', 'sonar'
                          property 'sonar.jdbc.password', 'sonar'
                          property 'sonar.login', 'jenkins'
                          property 'sonar.password', 'jenkins'
                  
                          // information about this project
                          //property 'sonar.profile', 'profilename'
                          property 'sonar.branch', 'DEV'
                          property 'sonar.language', 'java'
                          property 'sonar.sourceEncoding', 'UTF-8'
                          property 'sonar.verbose', 'true'
                          //property 'sonar.tests', "$projectDir\src\test\java"
                          property 'sonar.binaries', "${buildDir}/classes/main/"
                  
                          // execute JaCoCo before the SonarQube run to have report file ready
                          //property 'sonar.java.coveragePlugin', 'jacoco'
                          property 'sonar.jacoco.reportPath', "${buildDir}/jacoco/test.exec"
                          property 'sonar.junit.reportsPath', "${buildDir}/test-results"
                      }
                  }
                  

                  这篇关于SonarQube 不显示通过 Gradle 完全覆盖的类的每个文件的详细报告的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  How to send data to COM PORT using JAVA?(如何使用 JAVA 向 COM PORT 发送数据?)
                  How to make a report page direction to change to quot;rtlquot;?(如何使报表页面方向更改为“rtl?)
                  Use cyrillic .properties file in eclipse project(在 Eclipse 项目中使用西里尔文 .properties 文件)
                  Is there any way to detect an RTL language in Java?(有没有办法在 Java 中检测 RTL 语言?)
                  How to load resource bundle messages from DB in Java?(如何在 Java 中从 DB 加载资源包消息?)
                  How do I change the default locale settings in Java to make them consistent?(如何更改 Java 中的默认语言环境设置以使其保持一致?)

                    <legend id='1zHCw'><style id='1zHCw'><dir id='1zHCw'><q id='1zHCw'></q></dir></style></legend>

                    • <bdo id='1zHCw'></bdo><ul id='1zHCw'></ul>
                        <tbody id='1zHCw'></tbody>

                          <small id='1zHCw'></small><noframes id='1zHCw'>

                        1. <i id='1zHCw'><tr id='1zHCw'><dt id='1zHCw'><q id='1zHCw'><span id='1zHCw'><b id='1zHCw'><form id='1zHCw'><ins id='1zHCw'></ins><ul id='1zHCw'></ul><sub id='1zHCw'></sub></form><legend id='1zHCw'></legend><bdo id='1zHCw'><pre id='1zHCw'><center id='1zHCw'></center></pre></bdo></b><th id='1zHCw'></th></span></q></dt></tr></i><div id='1zHCw'><tfoot id='1zHCw'></tfoot><dl id='1zHCw'><fieldset id='1zHCw'></fieldset></dl></div>
                          • <tfoot id='1zHCw'></tfoot>