2016-12-28 5 views
4

Я пробовал искать фрагменты сценария сценария Jacoco без инструментов, но не смог найти его. Можно ли использовать онлайн-инструменты Jacoco через сценарии градации? Если да ... Примером этого было бы здорово. Благодарю.Jacoco online instrumentation Градиентный скрипт

+0

ИМХО, нет веских оснований для того, чтобы выполнять автономную байтовую аппаратуру. Использование Java-агента (например, JaCoCo) является наиболее простым способом. –

+0

@ G.Demecki Я обычно соглашаюсь, но есть Java toolchains, которые не полностью поддерживают «на лету» инструментарий через Java-агентов (одним из примеров является JamaicaVM в режиме реального времени от Aicas). – AdrianoKF

ответ

-1

Плагин gradle jacoco не поддерживает автономную аппаратуру, он всегда делает онлайн-инструменты через java-агент.

Если муравей jacoco плагин поддерживает автономный инструментарий, который, вероятно, лучший способ, чтобы получить автономный инструментарий работы в Gradle

+0

Можете ли вы указать сценарий/фрагмент из документа, где он делает автономную аппаратуру .... Я не мог понять сценарий, который выполняет автономную аппаратуру. Я не понял, где он делает это на примерах. Если бы вы могли с помощью фрагментов, которые были бы замечательными. – karthik

+1

Инструментарий с Java-агентом - это прибор на лету. Офлайн-инструментарий не требует Java-агента. И я сомневаюсь, что плагин Gradle поддерживает это, и поэтому, вероятно, вы @karthik не можете найти примеры. – Godin

+0

@LanceJava Думаю, вы можете отредактировать ответ, чтобы избавиться от этой путаницы;) – Godin

4

Вот пример Gradle сценария, который выполняет автономную аппаратуру с помощью 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 plugin · Проблема № 2429 · gradle/gradle] (https://github.com/gradle/gradle/issues/2429). –