2016-08-04 6 views
3

나는 Gradle을 사용하는 멀티 모듈 Groovy 프로젝트를 가지고있다. jacoco, sonarqube 플러그인을 적용했습니다. 새로운 Gradle SonarQube 플러그인을 사용하여 Jacoco Groovy 코드 범위를 Sonar에보고하는 방법?

나는

  1. 찾기 빌드/jacoco/test.exec 할 수 있었다. 젠킨스는 그것을 올바르게 표현할 수있었습니다. SonarQube

그러나 Code Coverage의 모든 코드 커버리지 정보

  • 찾기 단위 테스트 결과 및 소스 코드
  • 찾아 jacocoHtml은 SonarQube에보고 받고되지 않았습니다.

    은 여기 내 build.gradle

    plugins { 
        id "org.sonarqube" version "2.0.1" 
    } 
    
    allprojects { 
        group = 'my' 
        version = '1.0-SNAPSHOT' 
    } 
    
    subprojects { 
        apply plugin: 'groovy' 
        apply plugin: "jacoco" 
    
        dependencies { 
         compile group: 'org.codehaus.groovy', name: 'groovy-all', version: '2.4.1' 
         testCompile group: 'org.spockframework', name: 'spock-core', version: '1.0-groovy-2.4' 
         testCompile group: 'org.assertj', name: 'assertj-core', version: '2.4.1' 
        } 
    } 
    

    내가 빌드하는 동안 로그 문 다음 관찰합니다.

    No binary directories defined for project core. 
    Project coverage is set to 0% since there is no directories with classes. 
    

    다음으로 하위 프로젝트 또는 allprojects를 추가하려고 시도했지만 여전히 범위가 SonarQube에보고되지 않았습니다.

    sonarqube { 
        properties { 
         property "sonar.groovy.jacoco.reportPath", "${project.buildDir}/jacoco/test.exec" 
         property "sonar.jacoco.reportPath", "${project.buildDir}/jacoco/test.exec" 
         property "sonar.binaries", "${project.buildDir}/classes" 
         property "sonar.groovy.binaries", "${project.buildDir}/classes" 
        } 
    } 
    

    어떻게 Jacco Groovy 코드 범위를 SonarQube에보고 할 수 있습니까?

  • +0

    설정이 괜찮은 것 같습니다. 우리는 이것을 "$ project.buildDir.name/classes"라는 바이너리로 사용했습니다. 어쩌면 로그에서 더 긴 스 니펫을 추가하여 모듈과 커버리지 파일을 찾는 경로를 명시 할 수 있습니다. 업데이트 : 루트에 sonarqube 플러그인을 적용하려고합니다. 그렇지 않으면 실제로는 별개의 프로젝트라고 생각할 수 있습니다. – dbalakirev

    +0

    이제는 비슷한 문제가 있는데,이 문제는 하나의 프로젝트에서는 작동하지만 다른 프로젝트에서는 그렇지 않습니다.루트에 직접 구성을 적용 해 보셨습니까? – dbalakirev

    답변

    2

    같은 문제로 인해 내 의견을 보았을 수도 있습니다.

    sonar.groovy.binaries이 루트 프로젝트에 대해 한 번만 해결 :

    나는 다음과 같은 문제가보고 된 그루비 플러그인의 사이트를 발견했습니다. 속성이 루트 모듈에서 정의되었지만 리프 모듈에만 정의되어 있지 않은 다중 모듈 프로젝트의 경우 누락 된 범위 정보가 발생합니다.

    https://github.com/SonarQubeCommunity/sonar-groovy/issues/52

    이 모듈 설정, 그래서 경우에도 :

    "myspecialsubmodule.sonar.groovy.binaries"-> "/ 홈/사용자/프로젝트/루트 프로젝트/myspecialsubmodule/build/classes/main "

    루트로 설정되기 전까지는 작동하지 않습니다.

    루트에 설정을 지정하면 (현재는 문제가 해결 될 때까지) 저에게 적합합니다.

    property "sonar.groovy.binaries", "${project.buildDir.name}${File.separator}classes" 
    

    나는이 해결 방법을 언제 제거 할 수 있는지 알고 있기 위해 github 문제를 추적합니다.

    +0

    내가 그걸 보자. 매우 감사합니다. 업데이트를 게시합니다. – phani

    +2

    그것은 효과가 있었다. 감사. ''$ {project.buildDir.name} $ {File.separator} classes "에 대한 답변에서 관련 부분을 편집하십시오." – phani

    +0

    아주 좋은 지적입니다. – dbalakirev