2016-12-28 46 views
4

我試圖尋找Jacoco離線儀器gradle腳本片段,但找不到一個。是否有可能通過gradle腳本執行Jacoco離線檢測?如果是的話......一個例子就是偉大的。謝謝。Jacoco離線儀器Gradle腳本

+0

恕我直言,沒有好的理由去做脫機的字節碼工具了。使用Java代理(如JaCoCo)是最直接的方法。 –

+0

@ G.Demecki我通常會同意,但是那裏有一些Java工具鏈並沒有完全支持通過Java代理進行即時檢測(一個例子是由Aicas提供的實時功能的JamaicaVM)。 – AdrianoKF

回答

-1

gradle jacoco插件不支持脫機檢測,它總是通過java代理進行在線檢測。

如果螞蟻jacoco插件支持離線儀器儀表這是有可能獲得離線儀器儀表在gradle這個

+0

你能指出腳本/摘錄從他正在做脫機檢測的文檔....我無法弄清楚脫機檢測的腳本。在例子中,我沒有明白他在做什麼。如果你能通過那些很棒的片段。 – karthik

+1

使用Java代理進行檢測 - 正在實時檢測。離線檢測不需要Java代理。我懷疑Gradle插件是否支持這一點,這可能是您的@karthik無法找到示例的原因。 – Godin

+0

@LanceJava我想你可以編輯一個答案來擺脫這種困惑;) – Godin

4

在這裏工作的最好辦法是執行使用JaCoCo Ant任務,離線儀器儀表搖籃腳本的例子:

apply plugin: 'java' 

configurations { 
    jacoco 
    jacocoRuntime 
} 

dependencies { 
    jacoco group: 'org.jacoco', name: 'org.jacoco.ant', version: '0.7.9', classifier: 'nodeps' 
    jacocoRuntime group: 'org.jacoco', name: 'org.jacoco.agent', version: '0.7.9', classifier: 'runtime' 
    testCompile 'junit:junit:4.12' 
} 

repositories { 
    mavenCentral() 
} 

task instrument(dependsOn: ['classes']) { 
    ext.outputDir = buildDir.path + '/classes-instrumented' 
    doLast { 
    ant.taskdef(name: 'instrument', 
       classname: 'org.jacoco.ant.InstrumentTask', 
       classpath: configurations.jacoco.asPath) 
    ant.instrument(destdir: outputDir) { 
     fileset(dir: sourceSets.main.output.classesDir) 
    } 
    } 
} 

gradle.taskGraph.whenReady { graph -> 
    if (graph.hasTask(instrument)) { 
    tasks.withType(Test) { 
     doFirst { 
     systemProperty 'jacoco-agent.destfile', buildDir.path + '/jacoco/tests.exec' 
     classpath = files(instrument.outputDir) + classpath + configurations.jacocoRuntime 
     } 
    } 
    } 
} 

task report(dependsOn: ['instrument', 'test']) { 
    doLast { 
    ant.taskdef(name: 'report', 
       classname: 'org.jacoco.ant.ReportTask', 
       classpath: configurations.jacoco.asPath) 
    ant.report() { 
     executiondata { 
     ant.file(file: buildDir.path + '/jacoco/tests.exec') 
     } 
     structure(name: 'Example') { 
     classfiles { 
      fileset(dir: sourceSets.main.output.classesDir) 
     } 
     sourcefiles { 
      fileset(dir: 'src/main/java') 
     } 
     } 
     html(destdir: buildDir.path + '/reports/jacoco') 
    } 
    } 
} 
+0

可以確認此作品。任何有關在官方插件中獲得此信息的想法? –

+0

@KyleC,僅供參考:[爲Gradle Jacoco插件添加離線工具支持·Issue#2429·gradle/gradle](https://github.com/gradle/gradle/issues/2429)。 –