From 8f3a62abf407d362559e131dbbe2ab9964795e9d Mon Sep 17 00:00:00 2001 From: "Marc R. Hoffmann" Date: Thu, 19 Dec 2013 17:07:09 +0100 Subject: Include examples in JUnit and code coverage reports. --- org.jacoco.doc/pom.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/org.jacoco.doc/pom.xml b/org.jacoco.doc/pom.xml index 720f18ae..9716ec65 100644 --- a/org.jacoco.doc/pom.xml +++ b/org.jacoco.doc/pom.xml @@ -93,6 +93,7 @@ + @@ -130,6 +131,14 @@ + + + + + + + + @@ -162,6 +171,7 @@ + -- cgit v1.2.3 From 98ccc89f2ac0262223b974240a989bafe1b994f2 Mon Sep 17 00:00:00 2001 From: "Marc R. Hoffmann" Date: Thu, 19 Dec 2013 17:12:43 +0100 Subject: Add missing @Override annotations. --- .../src/org/jacoco/maven/AgentITMojo.java | 14 ++++--- .../src/org/jacoco/maven/AgentMojo.java | 1 + .../src/org/jacoco/maven/ReportITMojo.java | 43 ++++++++++++---------- .../src/org/jacoco/maven/ReportMojo.java | 12 +++--- 4 files changed, 40 insertions(+), 30 deletions(-) diff --git a/jacoco-maven-plugin/src/org/jacoco/maven/AgentITMojo.java b/jacoco-maven-plugin/src/org/jacoco/maven/AgentITMojo.java index b62e0885..5742578f 100644 --- a/jacoco-maven-plugin/src/org/jacoco/maven/AgentITMojo.java +++ b/jacoco-maven-plugin/src/org/jacoco/maven/AgentITMojo.java @@ -15,14 +15,17 @@ package org.jacoco.maven; import java.io.File; /** - * Prepares a property pointing to the JaCoCo runtime agent that can be passed as a VM argument to the application under test for - * integration tests. Depending on the project packaging type by default a property with the following name is set: + * Prepares a property pointing to the JaCoCo runtime agent that can be passed + * as a VM argument to the application under test for integration tests. + * Depending on the project packaging type by default a property with the + * following name is set: *
    *
  • tycho.testArgLine for packaging type eclipse-test-plugin and
  • *
  • argLine otherwise.
  • *
- * Resulting coverage information is collected during execution and by default written to a file when the process terminates. - * + * Resulting coverage information is collected during execution and by default + * written to a file when the process terminates. + * * @phase pre-integration-test * @goal prepare-agent-integration * @requiresProject true @@ -34,7 +37,7 @@ public class AgentITMojo extends AbstractAgentMojo { /** * Path to the output file for execution data. - * + * * @parameter expression="${jacoco.destFile}" * default-value="${project.build.directory}/jacoco-it.exec" */ @@ -43,6 +46,7 @@ public class AgentITMojo extends AbstractAgentMojo { /** * @return the destFile */ + @Override protected File getDestFile() { return destFile; } diff --git a/jacoco-maven-plugin/src/org/jacoco/maven/AgentMojo.java b/jacoco-maven-plugin/src/org/jacoco/maven/AgentMojo.java index 0ba0428a..cfdd97a6 100644 --- a/jacoco-maven-plugin/src/org/jacoco/maven/AgentMojo.java +++ b/jacoco-maven-plugin/src/org/jacoco/maven/AgentMojo.java @@ -60,6 +60,7 @@ public class AgentMojo extends AbstractAgentMojo { /** * @return the destFile */ + @Override protected File getDestFile() { return destFile; } diff --git a/jacoco-maven-plugin/src/org/jacoco/maven/ReportITMojo.java b/jacoco-maven-plugin/src/org/jacoco/maven/ReportITMojo.java index 79d0186c..1096caa9 100644 --- a/jacoco-maven-plugin/src/org/jacoco/maven/ReportITMojo.java +++ b/jacoco-maven-plugin/src/org/jacoco/maven/ReportITMojo.java @@ -16,9 +16,9 @@ import java.io.File; import java.util.Locale; /** - * Creates a code coverage report for integration tests of a single project in multiple formats - * (HTML, XML, and CSV). - * + * Creates a code coverage report for integration tests of a single project in + * multiple formats (HTML, XML, and CSV). + * * @phase verify * @goal report-integration * @requiresProject true @@ -33,14 +33,14 @@ public class ReportITMojo extends AbstractReportMojo { * build lifecycle. If the goal is run indirectly as part of a site * generation, the output directory configured in the Maven Site Plugin is * used instead. - * + * * @parameter default-value="${project.reporting.outputDirectory}/jacoco-it" */ private File outputDirectory; /** * File with execution data. - * + * * @parameter default-value="${project.build.directory}/jacoco-it.exec" */ private File dataFile; @@ -53,28 +53,31 @@ public class ReportITMojo extends AbstractReportMojo { @Override public void setReportOutputDirectory(final File reportOutputDirectory) { if (reportOutputDirectory != null - && !reportOutputDirectory.getAbsolutePath().endsWith("jacoco-it")) { + && !reportOutputDirectory.getAbsolutePath().endsWith( + "jacoco-it")) { outputDirectory = new File(reportOutputDirectory, "jacoco-it"); } else { outputDirectory = reportOutputDirectory; } } - @Override - protected File getDataFile() { - return dataFile; - } + @Override + protected File getDataFile() { + return dataFile; + } - @Override - protected File getOutputDirectoryFile() { - return outputDirectory; - } + @Override + protected File getOutputDirectoryFile() { + return outputDirectory; + } - public String getOutputName() { - return "jacoco-it/index"; - } + @Override + public String getOutputName() { + return "jacoco-it/index"; + } - public String getName(final Locale locale) { - return "JaCoCo IT"; - } + @Override + public String getName(final Locale locale) { + return "JaCoCo IT"; + } } diff --git a/jacoco-maven-plugin/src/org/jacoco/maven/ReportMojo.java b/jacoco-maven-plugin/src/org/jacoco/maven/ReportMojo.java index 819b1fa6..3e1037a4 100644 --- a/jacoco-maven-plugin/src/org/jacoco/maven/ReportMojo.java +++ b/jacoco-maven-plugin/src/org/jacoco/maven/ReportMojo.java @@ -15,9 +15,9 @@ import java.io.File; import java.util.Locale; /** - * Creates a code coverage report for tests of a single project in multiple formats - * (HTML, XML, and CSV). - * + * Creates a code coverage report for tests of a single project in multiple + * formats (HTML, XML, and CSV). + * * @phase verify * @goal report * @requiresProject true @@ -32,14 +32,14 @@ public class ReportMojo extends AbstractReportMojo { * build lifecycle. If the goal is run indirectly as part of a site * generation, the output directory configured in the Maven Site Plugin is * used instead. - * + * * @parameter default-value="${project.reporting.outputDirectory}/jacoco" */ private File outputDirectory; /** * File with execution data. - * + * * @parameter default-value="${project.build.directory}/jacoco.exec" */ private File dataFile; @@ -69,10 +69,12 @@ public class ReportMojo extends AbstractReportMojo { return outputDirectory; } + @Override public String getOutputName() { return "jacoco/index"; } + @Override public String getName(final Locale locale) { return "JaCoCo Test"; } -- cgit v1.2.3 From 7bbf8ffd29bb35515b449965271d79ea540d248e Mon Sep 17 00:00:00 2001 From: "Marc R. Hoffmann" Date: Thu, 19 Dec 2013 18:32:06 +0100 Subject: Fix JavaDoc for Java8 builds. --- .../src/org/jacoco/maven/AbstractAgentMojo.java | 40 +++++++++++----------- org.jacoco.build/pom.xml | 25 ++++++++++++++ 2 files changed, 45 insertions(+), 20 deletions(-) diff --git a/jacoco-maven-plugin/src/org/jacoco/maven/AbstractAgentMojo.java b/jacoco-maven-plugin/src/org/jacoco/maven/AbstractAgentMojo.java index bcc1de73..b572a668 100644 --- a/jacoco-maven-plugin/src/org/jacoco/maven/AbstractAgentMojo.java +++ b/jacoco-maven-plugin/src/org/jacoco/maven/AbstractAgentMojo.java @@ -14,12 +14,13 @@ package org.jacoco.maven; import java.io.File; import java.util.Map; import java.util.Properties; + import org.apache.maven.artifact.Artifact; import org.codehaus.plexus.util.StringUtils; import org.jacoco.core.runtime.AgentOptions; /** - * + * * @author Mirko Friedenhagen */ public abstract class AbstractAgentMojo extends AbstractJacocoMojo { @@ -38,7 +39,7 @@ public abstract class AbstractAgentMojo extends AbstractJacocoMojo { protected static final String SUREFIRE_ARG_LINE = "argLine"; /** * Map of plugin artifacts. - * + * * @parameter expression="${plugin.artifactMap}" * @required * @readonly @@ -48,7 +49,7 @@ public abstract class AbstractAgentMojo extends AbstractJacocoMojo { * Allows to specify property which will contains settings for JaCoCo Agent. * If not specified, then "argLine" would be used for "jar" packaging and * "tycho.testArgLine" for "eclipse-test-plugin". - * + * * @parameter expression="${jacoco.propertyName}" */ protected String propertyName; @@ -56,7 +57,7 @@ public abstract class AbstractAgentMojo extends AbstractJacocoMojo { * If set to true and the execution data file already exists, coverage data * is appended to the existing file. If set to false, an existing execution * data file will be replaced. - * + * * @parameter expression="${jacoco.append}" */ protected Boolean append; @@ -67,28 +68,27 @@ public abstract class AbstractAgentMojo extends AbstractJacocoMojo { * special frameworks that conflict with JaCoCo code instrumentation, in * particular class loaders that do not have access to the Java runtime * classes. - * + * * @parameter expression="${jacoco.exclClassLoaders}" */ protected String exclClassLoaders; /** * A session identifier that is written with the execution data. Without * this parameter a random identifier is created by the agent. - * + * * @parameter expression="${jacoco.sessionId}" */ protected String sessionId; /** * If set to true coverage data will be written on VM shutdown. - * + * * @parameter expression="${jacoco.dumpOnExit}" */ protected Boolean dumpOnExit; /** * Output method to use for writing coverage data. Valid options are: *
    - *
  • file: At VM termination execution data is written to the file - * specified in the {@link #destfile}.
  • + *
  • file: At VM termination execution data is written to a file.
  • *
  • tcpserver: The agent listens for incoming connections on the TCP port * specified by the {@link #address} and {@link #port}. Execution data is * written to this TCP connection.
  • @@ -97,7 +97,7 @@ public abstract class AbstractAgentMojo extends AbstractJacocoMojo { * TCP connection. *
  • none: Do not produce any output.
  • *
- * + * * @parameter expression="${jacoco.output}" */ protected String output; @@ -105,7 +105,7 @@ public abstract class AbstractAgentMojo extends AbstractJacocoMojo { * IP address or hostname to bind to when the output method is tcpserver or * connect to when the output method is tcpclient. In tcpserver mode the * value "*" causes the agent to accept connections on any local address. - * + * * @parameter expression="${jacoco.address}" */ protected String address; @@ -114,7 +114,7 @@ public abstract class AbstractAgentMojo extends AbstractJacocoMojo { * the output method is tcpclient. In tcpserver mode the port must be * available, which means that if multiple JaCoCo agents should run on the * same machine, different ports have to be specified. - * + * * @parameter expression="${jacoco.port}" */ protected Integer port; @@ -123,13 +123,13 @@ public abstract class AbstractAgentMojo extends AbstractJacocoMojo { * class files it processes to the given location. This can be useful for * debugging purposes or in case of dynamically created classes for example * when scripting engines are used. - * + * * @parameter expression="${jacoco.classDumpDir}" */ protected File classDumpDir; /** * If set to true the agent exposes functionality via JMX. - * + * * @parameter expression="${jacoco.jmx}" */ protected Boolean jmx; @@ -146,8 +146,8 @@ public abstract class AbstractAgentMojo extends AbstractJacocoMojo { } protected File getAgentJarFile() { - final Artifact jacocoAgentArtifact = pluginArtifactMap.get( - AGENT_ARTIFACT_NAME); + final Artifact jacocoAgentArtifact = pluginArtifactMap + .get(AGENT_ARTIFACT_NAME); return jacocoAgentArtifact.getFile(); } @@ -158,13 +158,13 @@ public abstract class AbstractAgentMojo extends AbstractJacocoMojo { agentOptions.setAppend(append.booleanValue()); } if (getIncludes() != null && !getIncludes().isEmpty()) { - final String agentIncludes = StringUtils.join( - getIncludes().iterator(), ":"); + final String agentIncludes = StringUtils.join(getIncludes() + .iterator(), ":"); agentOptions.setIncludes(agentIncludes); } if (getExcludes() != null && !getExcludes().isEmpty()) { - final String agentExcludes = StringUtils.join( - getExcludes().iterator(), ":"); + final String agentExcludes = StringUtils.join(getExcludes() + .iterator(), ":"); agentOptions.setExcludes(agentExcludes); } if (exclClassLoaders != null) { diff --git a/org.jacoco.build/pom.xml b/org.jacoco.build/pom.xml index 72df8181..a158b593 100644 --- a/org.jacoco.build/pom.xml +++ b/org.jacoco.build/pom.xml @@ -677,6 +677,31 @@ -XX:-FailOverToOldVerifier -Xverify:all + + + jdk18 + + + jdk.version + 1.8 + + + + -XX:-FailOverToOldVerifier -Xverify:all + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + -Xdoclint:none + + + + + sign -- cgit v1.2.3 From 9f4ef8dcffb3acbcd066ec073d87de65eeb06b48 Mon Sep 17 00:00:00 2001 From: "Marc R. Hoffmann" Date: Thu, 19 Dec 2013 18:36:12 +0100 Subject: Keep ASM API version at central place to simplify migration to ASM 5. --- .../core/internal/instr/ClassInstrumenterTest.java | 6 ++--- .../core/internal/instr/FrameTrackerTest.java | 3 ++- .../org/jacoco/core/runtime/RuntimeTestBase.java | 3 ++- .../test/validation/ClassFileVersionsTest.java | 29 +++++++++++----------- .../jacoco/core/test/validation/FramesTest.java | 7 +++--- org.jacoco.core/src/org/jacoco/core/JaCoCo.java | 5 ++++ .../core/internal/flow/ClassProbesAdapter.java | 3 ++- .../core/internal/flow/ClassProbesVisitor.java | 4 +-- .../core/internal/flow/LabelFlowAnalyzer.java | 3 ++- .../core/internal/flow/MethodProbesAdapter.java | 3 ++- .../core/internal/flow/MethodProbesVisitor.java | 4 +-- .../internal/instr/DuplicateFrameEliminator.java | 4 +-- .../jacoco/core/internal/instr/FrameTracker.java | 3 ++- .../jacoco/core/internal/instr/ProbeInserter.java | 3 ++- .../core/runtime/ModifiedSystemClassRuntime.java | 3 ++- 15 files changed, 49 insertions(+), 34 deletions(-) diff --git a/org.jacoco.core.test/src/org/jacoco/core/internal/instr/ClassInstrumenterTest.java b/org.jacoco.core.test/src/org/jacoco/core/internal/instr/ClassInstrumenterTest.java index a28dfcb3..fe5c2df5 100644 --- a/org.jacoco.core.test/src/org/jacoco/core/internal/instr/ClassInstrumenterTest.java +++ b/org.jacoco.core.test/src/org/jacoco/core/internal/instr/ClassInstrumenterTest.java @@ -13,13 +13,13 @@ package org.jacoco.core.internal.instr; import static org.junit.Assert.assertNull; +import org.jacoco.core.JaCoCo; import org.jacoco.core.runtime.IRuntime; import org.jacoco.core.runtime.LoggerRuntime; import org.junit.Before; import org.junit.Test; import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; /** * Unit tests for {@link ClassInstrumenter}. @@ -34,7 +34,7 @@ public class ClassInstrumenterTest { public void setup() { runtime = new LoggerRuntime(); instrumenter = new ClassInstrumenter(123, runtime, new ClassVisitor( - Opcodes.ASM4) { + JaCoCo.ASM_API_VERSION) { }); } @@ -55,7 +55,7 @@ public class ClassInstrumenterTest { @Test public void testNoMethodVisitor() { instrumenter = new ClassInstrumenter(123, runtime, new ClassVisitor( - Opcodes.ASM4) { + JaCoCo.ASM_API_VERSION) { @Override public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { diff --git a/org.jacoco.core.test/src/org/jacoco/core/internal/instr/FrameTrackerTest.java b/org.jacoco.core.test/src/org/jacoco/core/internal/instr/FrameTrackerTest.java index 879e94a3..c3a89cd6 100644 --- a/org.jacoco.core.test/src/org/jacoco/core/internal/instr/FrameTrackerTest.java +++ b/org.jacoco.core.test/src/org/jacoco/core/internal/instr/FrameTrackerTest.java @@ -14,6 +14,7 @@ package org.jacoco.core.internal.instr; import static org.junit.Assert.assertEquals; import static org.objectweb.asm.Opcodes.*; +import org.jacoco.core.JaCoCo; import org.jacoco.core.instr.MethodRecorder; import org.junit.After; import org.junit.Before; @@ -68,7 +69,7 @@ public class FrameTrackerTest { @After public void verify() { MethodRecorder actual = new MethodRecorder(); - MethodVisitor noLabels = new MethodVisitor(Opcodes.ASM4, + MethodVisitor noLabels = new MethodVisitor(JaCoCo.ASM_API_VERSION, actual.getVisitor()) { @Override public void visitLabel(Label label) { diff --git a/org.jacoco.core.test/src/org/jacoco/core/runtime/RuntimeTestBase.java b/org.jacoco.core.test/src/org/jacoco/core/runtime/RuntimeTestBase.java index 05f80432..ed07fe46 100644 --- a/org.jacoco.core.test/src/org/jacoco/core/runtime/RuntimeTestBase.java +++ b/org.jacoco.core.test/src/org/jacoco/core/runtime/RuntimeTestBase.java @@ -16,6 +16,7 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; +import org.jacoco.core.JaCoCo; import org.jacoco.core.internal.instr.InstrSupport; import org.jacoco.core.test.TargetLoader; import org.junit.After; @@ -66,7 +67,7 @@ public abstract class RuntimeTestBase { public void testNoLocalVariablesInDataAccessor() throws InstantiationException, IllegalAccessException { runtime.generateDataAccessor(1001, "Target", 5, new MethodVisitor( - Opcodes.ASM4) { + JaCoCo.ASM_API_VERSION) { @Override public void visitVarInsn(int opcode, int var) { fail("No usage of local variables allowed."); diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/ClassFileVersionsTest.java b/org.jacoco.core.test/src/org/jacoco/core/test/validation/ClassFileVersionsTest.java index 6b5d2bfc..eec18b47 100644 --- a/org.jacoco.core.test/src/org/jacoco/core/test/validation/ClassFileVersionsTest.java +++ b/org.jacoco.core.test/src/org/jacoco/core/test/validation/ClassFileVersionsTest.java @@ -27,6 +27,7 @@ import static org.objectweb.asm.Opcodes.V1_7; import java.io.IOException; +import org.jacoco.core.JaCoCo; import org.jacoco.core.instr.Instrumenter; import org.jacoco.core.runtime.IRuntime; import org.jacoco.core.runtime.SystemPropertiesRuntime; @@ -35,7 +36,6 @@ import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.ClassWriter; import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; /** * Test class inserted stackmap frames for different class file versions. @@ -89,23 +89,24 @@ public class ClassFileVersionsTest { private void assertFrames(byte[] source, boolean expected) { final boolean[] hasFrames = new boolean[] { false }; - new ClassReader(source).accept(new ClassVisitor(Opcodes.ASM4) { - - @Override - public MethodVisitor visitMethod(int access, String name, - String desc, String signature, String[] exceptions) { - return new MethodVisitor(Opcodes.ASM4) { + new ClassReader(source).accept( + new ClassVisitor(JaCoCo.ASM_API_VERSION) { @Override - public void visitFrame(int type, int nLocal, - Object[] local, int nStack, Object[] stack) { - hasFrames[0] = true; - } + public MethodVisitor visitMethod(int access, String name, + String desc, String signature, String[] exceptions) { + return new MethodVisitor(JaCoCo.ASM_API_VERSION) { - }; - } + @Override + public void visitFrame(int type, int nLocal, + Object[] local, int nStack, Object[] stack) { + hasFrames[0] = true; + } + + }; + } - }, 0); + }, 0); assertEquals(Boolean.valueOf(expected), Boolean.valueOf(hasFrames[0])); } diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/FramesTest.java b/org.jacoco.core.test/src/org/jacoco/core/test/validation/FramesTest.java index f5ac4f5e..c2ef33c9 100644 --- a/org.jacoco.core.test/src/org/jacoco/core/test/validation/FramesTest.java +++ b/org.jacoco.core.test/src/org/jacoco/core/test/validation/FramesTest.java @@ -17,6 +17,7 @@ import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; +import org.jacoco.core.JaCoCo; import org.jacoco.core.instr.Instrumenter; import org.jacoco.core.runtime.IRuntime; import org.jacoco.core.runtime.SystemPropertiesRuntime; @@ -51,7 +52,7 @@ public class FramesTest { */ private static class MaxStackEliminator extends ClassVisitor { public MaxStackEliminator(ClassVisitor cv) { - super(Opcodes.ASM4, cv); + super(JaCoCo.ASM_API_VERSION, cv); } @Override @@ -59,7 +60,7 @@ public class FramesTest { String signature, String[] exceptions) { final MethodVisitor mv = super.visitMethod(access, name, desc, signature, exceptions); - return new MethodVisitor(Opcodes.ASM4, mv) { + return new MethodVisitor(JaCoCo.ASM_API_VERSION, mv) { @Override public void visitMaxs(int maxStack, int maxLocals) { super.visitMaxs(-1, maxLocals); @@ -87,7 +88,7 @@ public class FramesTest { ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES); // Adjust Version to 1.6 to enable frames: - rc.accept(new ClassVisitor(Opcodes.ASM4, cw) { + rc.accept(new ClassVisitor(JaCoCo.ASM_API_VERSION, cw) { @Override public void visit(int version, int access, String name, diff --git a/org.jacoco.core/src/org/jacoco/core/JaCoCo.java b/org.jacoco.core/src/org/jacoco/core/JaCoCo.java index b51937be..d2f262ba 100644 --- a/org.jacoco.core/src/org/jacoco/core/JaCoCo.java +++ b/org.jacoco.core/src/org/jacoco/core/JaCoCo.java @@ -13,6 +13,8 @@ package org.jacoco.core; import java.util.ResourceBundle; +import org.objectweb.asm.Opcodes; + /** * Static Meta information about JaCoCo. */ @@ -27,6 +29,9 @@ public final class JaCoCo { /** Name of the runtime package of this build */ public static final String RUNTIMEPACKAGE; + /** ASM API version */ + public static final int ASM_API_VERSION = Opcodes.ASM4; + static { final ResourceBundle bundle = ResourceBundle .getBundle("org.jacoco.core.jacoco"); diff --git a/org.jacoco.core/src/org/jacoco/core/internal/flow/ClassProbesAdapter.java b/org.jacoco.core/src/org/jacoco/core/internal/flow/ClassProbesAdapter.java index 937328aa..2fe3e3d7 100644 --- a/org.jacoco.core/src/org/jacoco/core/internal/flow/ClassProbesAdapter.java +++ b/org.jacoco.core/src/org/jacoco/core/internal/flow/ClassProbesAdapter.java @@ -11,6 +11,7 @@ *******************************************************************************/ package org.jacoco.core.internal.flow; +import org.jacoco.core.JaCoCo; import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.Label; import org.objectweb.asm.MethodVisitor; @@ -80,7 +81,7 @@ public class ClassProbesAdapter extends ClassVisitor implements * instance to delegate to */ public ClassProbesAdapter(final ClassProbesVisitor cv) { - super(Opcodes.ASM4, cv); + super(JaCoCo.ASM_API_VERSION, cv); this.cv = cv; } diff --git a/org.jacoco.core/src/org/jacoco/core/internal/flow/ClassProbesVisitor.java b/org.jacoco.core/src/org/jacoco/core/internal/flow/ClassProbesVisitor.java index ff796edb..49a78242 100644 --- a/org.jacoco.core/src/org/jacoco/core/internal/flow/ClassProbesVisitor.java +++ b/org.jacoco.core/src/org/jacoco/core/internal/flow/ClassProbesVisitor.java @@ -11,8 +11,8 @@ *******************************************************************************/ package org.jacoco.core.internal.flow; +import org.jacoco.core.JaCoCo; import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.Opcodes; /** * A {@link ClassVisitor} with additional methods to get probe insertion @@ -34,7 +34,7 @@ public abstract class ClassProbesVisitor extends ClassVisitor { * optional next visitor in chain */ public ClassProbesVisitor(final ClassVisitor cv) { - super(Opcodes.ASM4, cv); + super(JaCoCo.ASM_API_VERSION, cv); } /** diff --git a/org.jacoco.core/src/org/jacoco/core/internal/flow/LabelFlowAnalyzer.java b/org.jacoco.core/src/org/jacoco/core/internal/flow/LabelFlowAnalyzer.java index b325e8a3..7007c94c 100644 --- a/org.jacoco.core/src/org/jacoco/core/internal/flow/LabelFlowAnalyzer.java +++ b/org.jacoco.core/src/org/jacoco/core/internal/flow/LabelFlowAnalyzer.java @@ -11,6 +11,7 @@ *******************************************************************************/ package org.jacoco.core.internal.flow; +import org.jacoco.core.JaCoCo; import org.objectweb.asm.Handle; import org.objectweb.asm.Label; import org.objectweb.asm.MethodVisitor; @@ -59,7 +60,7 @@ public final class LabelFlowAnalyzer extends MethodVisitor { * Create new instance. */ public LabelFlowAnalyzer() { - super(Opcodes.ASM4); + super(JaCoCo.ASM_API_VERSION); } @Override diff --git a/org.jacoco.core/src/org/jacoco/core/internal/flow/MethodProbesAdapter.java b/org.jacoco.core/src/org/jacoco/core/internal/flow/MethodProbesAdapter.java index 60b64b66..5d681445 100644 --- a/org.jacoco.core/src/org/jacoco/core/internal/flow/MethodProbesAdapter.java +++ b/org.jacoco.core/src/org/jacoco/core/internal/flow/MethodProbesAdapter.java @@ -11,6 +11,7 @@ *******************************************************************************/ package org.jacoco.core.internal.flow; +import org.jacoco.core.JaCoCo; import org.objectweb.asm.Label; import org.objectweb.asm.MethodVisitor; import org.objectweb.asm.Opcodes; @@ -35,7 +36,7 @@ public final class MethodProbesAdapter extends MethodVisitor { */ public MethodProbesAdapter(final MethodProbesVisitor probesVisitor, final IProbeIdGenerator idGenerator) { - super(Opcodes.ASM4, probesVisitor); + super(JaCoCo.ASM_API_VERSION, probesVisitor); this.probesVisitor = probesVisitor; this.idGenerator = idGenerator; } diff --git a/org.jacoco.core/src/org/jacoco/core/internal/flow/MethodProbesVisitor.java b/org.jacoco.core/src/org/jacoco/core/internal/flow/MethodProbesVisitor.java index fba48122..fd4b281a 100644 --- a/org.jacoco.core/src/org/jacoco/core/internal/flow/MethodProbesVisitor.java +++ b/org.jacoco.core/src/org/jacoco/core/internal/flow/MethodProbesVisitor.java @@ -11,9 +11,9 @@ *******************************************************************************/ package org.jacoco.core.internal.flow; +import org.jacoco.core.JaCoCo; import org.objectweb.asm.Label; import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; /** * A {@link MethodVisitor} with additional methods to get probe insertion @@ -35,7 +35,7 @@ public abstract class MethodProbesVisitor extends MethodVisitor { * optional next visitor in chain */ public MethodProbesVisitor(final MethodVisitor mv) { - super(Opcodes.ASM4, mv); + super(JaCoCo.ASM_API_VERSION, mv); } /** diff --git a/org.jacoco.core/src/org/jacoco/core/internal/instr/DuplicateFrameEliminator.java b/org.jacoco.core/src/org/jacoco/core/internal/instr/DuplicateFrameEliminator.java index 81384e55..8c3f46b0 100644 --- a/org.jacoco.core/src/org/jacoco/core/internal/instr/DuplicateFrameEliminator.java +++ b/org.jacoco.core/src/org/jacoco/core/internal/instr/DuplicateFrameEliminator.java @@ -11,10 +11,10 @@ *******************************************************************************/ package org.jacoco.core.internal.instr; +import org.jacoco.core.JaCoCo; import org.objectweb.asm.Handle; import org.objectweb.asm.Label; import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; /** * Eliminates consecutive stackmap frame definitions which causes ASM to create @@ -27,7 +27,7 @@ class DuplicateFrameEliminator extends MethodVisitor { private boolean instruction; public DuplicateFrameEliminator(final MethodVisitor mv) { - super(Opcodes.ASM4, mv); + super(JaCoCo.ASM_API_VERSION, mv); instruction = true; } diff --git a/org.jacoco.core/src/org/jacoco/core/internal/instr/FrameTracker.java b/org.jacoco.core/src/org/jacoco/core/internal/instr/FrameTracker.java index 1ff58b5c..ced09d26 100644 --- a/org.jacoco.core/src/org/jacoco/core/internal/instr/FrameTracker.java +++ b/org.jacoco.core/src/org/jacoco/core/internal/instr/FrameTracker.java @@ -11,6 +11,7 @@ *******************************************************************************/ package org.jacoco.core.internal.instr; +import org.jacoco.core.JaCoCo; import org.objectweb.asm.Handle; import org.objectweb.asm.Label; import org.objectweb.asm.MethodVisitor; @@ -33,7 +34,7 @@ class FrameTracker extends MethodVisitor implements IFrameInserter { public FrameTracker(final String owner, final int access, final String name, final String desc, final MethodVisitor mv) { - super(Opcodes.ASM4, mv); + super(JaCoCo.ASM_API_VERSION, mv); this.owner = owner; local = new Object[8]; localSize = 0; diff --git a/org.jacoco.core/src/org/jacoco/core/internal/instr/ProbeInserter.java b/org.jacoco.core/src/org/jacoco/core/internal/instr/ProbeInserter.java index 2db2d39f..95d56c7d 100644 --- a/org.jacoco.core/src/org/jacoco/core/internal/instr/ProbeInserter.java +++ b/org.jacoco.core/src/org/jacoco/core/internal/instr/ProbeInserter.java @@ -11,6 +11,7 @@ *******************************************************************************/ package org.jacoco.core.internal.instr; +import org.jacoco.core.JaCoCo; import org.objectweb.asm.Label; import org.objectweb.asm.MethodVisitor; import org.objectweb.asm.Opcodes; @@ -47,7 +48,7 @@ class ProbeInserter extends MethodVisitor implements IProbeInserter { */ ProbeInserter(final int access, final String desc, final MethodVisitor mv, final IProbeArrayStrategy arrayStrategy) { - super(Opcodes.ASM4, mv); + super(JaCoCo.ASM_API_VERSION, mv); this.arrayStrategy = arrayStrategy; int pos = (Opcodes.ACC_STATIC & access) == 0 ? 1 : 0; for (final Type t : Type.getArgumentTypes(desc)) { diff --git a/org.jacoco.core/src/org/jacoco/core/runtime/ModifiedSystemClassRuntime.java b/org.jacoco.core/src/org/jacoco/core/runtime/ModifiedSystemClassRuntime.java index a5eb37b7..d8416ec1 100644 --- a/org.jacoco.core/src/org/jacoco/core/runtime/ModifiedSystemClassRuntime.java +++ b/org.jacoco.core/src/org/jacoco/core/runtime/ModifiedSystemClassRuntime.java @@ -19,6 +19,7 @@ import java.lang.instrument.Instrumentation; import java.lang.reflect.Field; import java.security.ProtectionDomain; +import org.jacoco.core.JaCoCo; import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.ClassWriter; @@ -155,7 +156,7 @@ public class ModifiedSystemClassRuntime extends AbstractRuntime { final String accessFieldName) { final ClassReader reader = new ClassReader(source); final ClassWriter writer = new ClassWriter(reader, 0); - reader.accept(new ClassVisitor(Opcodes.ASM4, writer) { + reader.accept(new ClassVisitor(JaCoCo.ASM_API_VERSION, writer) { @Override public void visitEnd() { -- cgit v1.2.3 From b07971755f996fe0f0109887f469de3f4ae00853 Mon Sep 17 00:00:00 2001 From: "Marc R. Hoffmann" Date: Thu, 19 Dec 2013 18:56:34 +0100 Subject: Backport useful frames test from experimental Java8 branch. --- .../test/validation/ExplicitInitialFrameTest.java | 40 ++++++++++++++++++++++ .../jacoco/core/test/validation/FramesTest.java | 12 +++++++ .../core/test/validation/targets/Target11.java | 33 ++++++++++++++++++ 3 files changed, 85 insertions(+) create mode 100644 org.jacoco.core.test/src/org/jacoco/core/test/validation/ExplicitInitialFrameTest.java create mode 100644 org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target11.java diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/ExplicitInitialFrameTest.java b/org.jacoco.core.test/src/org/jacoco/core/test/validation/ExplicitInitialFrameTest.java new file mode 100644 index 00000000..301c8cbb --- /dev/null +++ b/org.jacoco.core.test/src/org/jacoco/core/test/validation/ExplicitInitialFrameTest.java @@ -0,0 +1,40 @@ +/******************************************************************************* + * Copyright (c) 2009, 2013 Mountainminds GmbH & Co. KG and Contributors + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Marc R. Hoffmann - initial API and implementation + * + *******************************************************************************/ +package org.jacoco.core.test.validation; + +import org.jacoco.core.analysis.ICounter; +import org.jacoco.core.test.validation.targets.Target11; +import org.junit.Test; + +/** + * Test for a methods having a explicit initial frame. + */ +public class ExplicitInitialFrameTest extends ValidationTestBase { + + public ExplicitInitialFrameTest() { + super(Target11.class); + } + + @Override + protected void run(final Class targetClass) throws Exception { + final Object instance = targetClass.newInstance(); + ((Runnable) instance).run(); + } + + @Test + public void testCoverageResult() { + + assertLine("dowhilebody", ICounter.FULLY_COVERED); + + } + +} diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/FramesTest.java b/org.jacoco.core.test/src/org/jacoco/core/test/validation/FramesTest.java index c2ef33c9..eca8d284 100644 --- a/org.jacoco.core.test/src/org/jacoco/core/test/validation/FramesTest.java +++ b/org.jacoco.core.test/src/org/jacoco/core/test/validation/FramesTest.java @@ -30,7 +30,9 @@ import org.jacoco.core.test.validation.targets.Target05; import org.jacoco.core.test.validation.targets.Target06; import org.jacoco.core.test.validation.targets.Target07; import org.jacoco.core.test.validation.targets.Target08; +import org.jacoco.core.test.validation.targets.Target09; import org.jacoco.core.test.validation.targets.Target10; +import org.jacoco.core.test.validation.targets.Target11; import org.junit.Test; import org.objectweb.asm.ClassReader; import org.objectweb.asm.ClassVisitor; @@ -148,9 +150,19 @@ public class FramesTest { testFrames(Target08.class); } + @Test + public void testTarget09() throws IOException { + testFrames(Target09.class); + } + @Test public void testTarget10() throws IOException { testFrames(Target10.class); } + @Test + public void testTarget11() throws IOException { + testFrames(Target11.class); + } + } diff --git a/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target11.java b/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target11.java new file mode 100644 index 00000000..8fe7fdf2 --- /dev/null +++ b/org.jacoco.core.test/src/org/jacoco/core/test/validation/targets/Target11.java @@ -0,0 +1,33 @@ +/******************************************************************************* + * Copyright (c) 2009, 2013 Mountainminds GmbH & Co. KG and Contributors + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Marc R. Hoffmann - initial API and implementation + * + *******************************************************************************/ +package org.jacoco.core.test.validation.targets; + +import static org.jacoco.core.test.validation.targets.Stubs.f; +import static org.jacoco.core.test.validation.targets.Stubs.nop; + +/** + * This test target needs an explicit initial frame as the first instruction + * already is a jump target. + */ +public class Target11 implements Runnable { + + public void run() { + do { + nop(); // $line-dowhilebody$ + } while (f()); + } + + public static void main(String[] args) { + new Target11().run(); + } + +} -- cgit v1.2.3 From b925e8f1232c9813cc27e3eb4da91cc54dbb0042 Mon Sep 17 00:00:00 2001 From: Mirko Friedenhagen Date: Fri, 20 Dec 2013 22:49:53 +0100 Subject: As stated in #175, there is no need to have protecte methods as inheritance is only used in the same package. --- .../src/org/jacoco/maven/AbstractAgentMojo.java | 40 ++++---- .../src/org/jacoco/maven/AbstractReportMojo.java | 111 +++++++++++---------- .../src/org/jacoco/maven/AgentITMojo.java | 2 +- .../src/org/jacoco/maven/AgentMojo.java | 2 +- .../src/org/jacoco/maven/ReportITMojo.java | 4 +- .../src/org/jacoco/maven/ReportMojo.java | 4 +- 6 files changed, 86 insertions(+), 77 deletions(-) diff --git a/jacoco-maven-plugin/src/org/jacoco/maven/AbstractAgentMojo.java b/jacoco-maven-plugin/src/org/jacoco/maven/AbstractAgentMojo.java index b572a668..bd0c949a 100644 --- a/jacoco-maven-plugin/src/org/jacoco/maven/AbstractAgentMojo.java +++ b/jacoco-maven-plugin/src/org/jacoco/maven/AbstractAgentMojo.java @@ -28,15 +28,15 @@ public abstract class AbstractAgentMojo extends AbstractJacocoMojo { /** * Name of the JaCoCo Agent artifact. */ - protected static final String AGENT_ARTIFACT_NAME = "org.jacoco:org.jacoco.agent"; + static final String AGENT_ARTIFACT_NAME = "org.jacoco:org.jacoco.agent"; /** * Name of the property used in maven-osgi-test-plugin. */ - protected static final String TYCHO_ARG_LINE = "tycho.testArgLine"; + static final String TYCHO_ARG_LINE = "tycho.testArgLine"; /** * Name of the property used in maven-surefire-plugin. */ - protected static final String SUREFIRE_ARG_LINE = "argLine"; + static final String SUREFIRE_ARG_LINE = "argLine"; /** * Map of plugin artifacts. * @@ -44,7 +44,7 @@ public abstract class AbstractAgentMojo extends AbstractJacocoMojo { * @required * @readonly */ - protected Map pluginArtifactMap; + Map pluginArtifactMap; /** * Allows to specify property which will contains settings for JaCoCo Agent. * If not specified, then "argLine" would be used for "jar" packaging and @@ -52,7 +52,7 @@ public abstract class AbstractAgentMojo extends AbstractJacocoMojo { * * @parameter expression="${jacoco.propertyName}" */ - protected String propertyName; + String propertyName; /** * If set to true and the execution data file already exists, coverage data * is appended to the existing file. If set to false, an existing execution @@ -60,7 +60,7 @@ public abstract class AbstractAgentMojo extends AbstractJacocoMojo { * * @parameter expression="${jacoco.append}" */ - protected Boolean append; + Boolean append; /** * A list of class loader names, that should be excluded from execution * analysis. The list entries are separated by a colon (:) and may use @@ -71,20 +71,20 @@ public abstract class AbstractAgentMojo extends AbstractJacocoMojo { * * @parameter expression="${jacoco.exclClassLoaders}" */ - protected String exclClassLoaders; + String exclClassLoaders; /** * A session identifier that is written with the execution data. Without * this parameter a random identifier is created by the agent. * * @parameter expression="${jacoco.sessionId}" */ - protected String sessionId; + String sessionId; /** * If set to true coverage data will be written on VM shutdown. * * @parameter expression="${jacoco.dumpOnExit}" */ - protected Boolean dumpOnExit; + Boolean dumpOnExit; /** * Output method to use for writing coverage data. Valid options are: *
    @@ -100,7 +100,7 @@ public abstract class AbstractAgentMojo extends AbstractJacocoMojo { * * @parameter expression="${jacoco.output}" */ - protected String output; + String output; /** * IP address or hostname to bind to when the output method is tcpserver or * connect to when the output method is tcpclient. In tcpserver mode the @@ -108,7 +108,7 @@ public abstract class AbstractAgentMojo extends AbstractJacocoMojo { * * @parameter expression="${jacoco.address}" */ - protected String address; + String address; /** * Port to bind to when the output method is tcpserver or connect to when * the output method is tcpclient. In tcpserver mode the port must be @@ -117,7 +117,7 @@ public abstract class AbstractAgentMojo extends AbstractJacocoMojo { * * @parameter expression="${jacoco.port}" */ - protected Integer port; + Integer port; /** * If a directory is specified for this parameter the JaCoCo agent dumps all * class files it processes to the given location. This can be useful for @@ -126,13 +126,13 @@ public abstract class AbstractAgentMojo extends AbstractJacocoMojo { * * @parameter expression="${jacoco.classDumpDir}" */ - protected File classDumpDir; + File classDumpDir; /** * If set to true the agent exposes functionality via JMX. * * @parameter expression="${jacoco.jmx}" */ - protected Boolean jmx; + Boolean jmx; @Override public void executeMojo() { @@ -145,13 +145,13 @@ public abstract class AbstractAgentMojo extends AbstractJacocoMojo { projectProperties.setProperty(name, newValue); } - protected File getAgentJarFile() { + File getAgentJarFile() { final Artifact jacocoAgentArtifact = pluginArtifactMap .get(AGENT_ARTIFACT_NAME); return jacocoAgentArtifact.getFile(); } - protected AgentOptions createAgentOptions() { + AgentOptions createAgentOptions() { final AgentOptions agentOptions = new AgentOptions(); agentOptions.setDestfile(getDestFile().getAbsolutePath()); if (append != null) { @@ -194,7 +194,7 @@ public abstract class AbstractAgentMojo extends AbstractJacocoMojo { return agentOptions; } - protected String getEffectivePropertyName() { + String getEffectivePropertyName() { if (isPropertyNameSpecified()) { return propertyName; } @@ -204,17 +204,17 @@ public abstract class AbstractAgentMojo extends AbstractJacocoMojo { return SUREFIRE_ARG_LINE; } - protected boolean isPropertyNameSpecified() { + boolean isPropertyNameSpecified() { return propertyName != null && !"".equals(propertyName); } - protected boolean isEclipseTestPluginPackaging() { + boolean isEclipseTestPluginPackaging() { return "eclipse-test-plugin".equals(getProject().getPackaging()); } /** * @return the destFile */ - protected abstract File getDestFile(); + abstract File getDestFile(); } diff --git a/jacoco-maven-plugin/src/org/jacoco/maven/AbstractReportMojo.java b/jacoco-maven-plugin/src/org/jacoco/maven/AbstractReportMojo.java index 3713cd9c..58552c54 100644 --- a/jacoco-maven-plugin/src/org/jacoco/maven/AbstractReportMojo.java +++ b/jacoco-maven-plugin/src/org/jacoco/maven/AbstractReportMojo.java @@ -20,6 +20,7 @@ import java.io.Reader; import java.util.ArrayList; import java.util.List; import java.util.Locale; + import org.apache.maven.doxia.siterenderer.Renderer; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.project.MavenProject; @@ -27,9 +28,9 @@ import org.apache.maven.reporting.AbstractMavenReport; import org.apache.maven.reporting.MavenReportException; import org.jacoco.core.analysis.IBundleCoverage; import org.jacoco.core.analysis.ICoverageNode; -import org.jacoco.core.tools.ExecFileLoader; import org.jacoco.core.data.ExecutionDataStore; import org.jacoco.core.data.SessionInfoStore; +import org.jacoco.core.tools.ExecFileLoader; import org.jacoco.report.FileMultiReportOutput; import org.jacoco.report.IReportGroupVisitor; import org.jacoco.report.IReportVisitor; @@ -40,60 +41,60 @@ import org.jacoco.report.html.HTMLFormatter; import org.jacoco.report.xml.XMLFormatter; /** - * + * * @author Mirko Friedenhagen */ public abstract class AbstractReportMojo extends AbstractMavenReport { /** * Encoding of the generated reports. - * + * * @parameter expression="${project.reporting.outputEncoding}" - * default-value="UTF-8" + * default-value="UTF-8" */ - protected String outputEncoding; + String outputEncoding; /** * Encoding of the source files. - * + * * @parameter expression="${project.build.sourceEncoding}" - * default-value="UTF-8" + * default-value="UTF-8" */ - protected String sourceEncoding; + String sourceEncoding; /** * A list of class files to include in the report. May use wildcard * characters (* and ?). When not specified everything will be included. - * + * * @parameter */ - protected List includes; + List includes; /** * A list of class files to exclude from the report. May use wildcard * characters (* and ?). When not specified nothing will be excluded. - * + * * @parameter */ - protected List excludes; + List excludes; /** * Flag used to suppress execution. - * + * * @parameter expression="${jacoco.skip}" default-value="false" */ - protected boolean skip; + boolean skip; /** * Maven project. - * + * * @parameter expression="${project}" * @readonly */ - protected MavenProject project; + MavenProject project; /** * Doxia Site Renderer. - * + * * @component */ - protected Renderer siteRenderer; - protected SessionInfoStore sessionInfoStore; - protected ExecutionDataStore executionDataStore; + Renderer siteRenderer; + SessionInfoStore sessionInfoStore; + ExecutionDataStore executionDataStore; public abstract String getOutputName(); @@ -123,29 +124,31 @@ public abstract class AbstractReportMojo extends AbstractMavenReport { /** * Returns the list of class files to include in the report. - * + * * @return class files to include, may contain wildcard characters */ - protected List getIncludes() { + List getIncludes() { return includes; } /** * Returns the list of class files to exclude from the report. - * + * * @return class files to exclude, may contain wildcard characters */ - protected List getExcludes() { + List getExcludes() { return excludes; } @Override - public abstract void setReportOutputDirectory(final File reportOutputDirectory); + public abstract void setReportOutputDirectory( + final File reportOutputDirectory); @Override public boolean canGenerateReport() { if ("pom".equals(project.getPackaging())) { - getLog().info("Skipping JaCoCo for project with packaging type 'pom'"); + getLog().info( + "Skipping JaCoCo for project with packaging type 'pom'"); return false; } if (skip) { @@ -153,12 +156,15 @@ public abstract class AbstractReportMojo extends AbstractMavenReport { return false; } if (!getDataFile().exists()) { - getLog().info("Skipping JaCoCo execution due to missing execution data file"); + getLog().info( + "Skipping JaCoCo execution due to missing execution data file"); return false; } - final File classesDirectory = new File(getProject().getBuild().getOutputDirectory()); + final File classesDirectory = new File(getProject().getBuild() + .getOutputDirectory()); if (!classesDirectory.exists()) { - getLog().info("Skipping JaCoCo execution due to missing classes directory."); + getLog().info( + "Skipping JaCoCo execution due to missing classes directory."); return false; } return true; @@ -176,13 +182,14 @@ public abstract class AbstractReportMojo extends AbstractMavenReport { try { executeReport(Locale.getDefault()); } catch (final MavenReportException e) { - throw new MojoExecutionException("An error has occurred in " + - getName(Locale.ENGLISH) + " report generation.", e); + throw new MojoExecutionException("An error has occurred in " + + getName(Locale.ENGLISH) + " report generation.", e); } } @Override - protected void executeReport(final Locale locale) throws MavenReportException { + protected void executeReport(final Locale locale) + throws MavenReportException { loadExecutionData(); try { final IReportVisitor visitor = createVisitor(locale); @@ -191,24 +198,25 @@ public abstract class AbstractReportMojo extends AbstractMavenReport { createReport(visitor); visitor.visitEnd(); } catch (final IOException e) { - throw new MavenReportException("Error while creating report: " + - e.getMessage(), e); + throw new MavenReportException("Error while creating report: " + + e.getMessage(), e); } } - protected void loadExecutionData() throws MavenReportException { + void loadExecutionData() throws MavenReportException { final ExecFileLoader loader = new ExecFileLoader(); try { loader.load(getDataFile()); } catch (final IOException e) { - throw new MavenReportException("Unable to read execution data file " + - getDataFile() + ": " + e.getMessage(), e); + throw new MavenReportException( + "Unable to read execution data file " + getDataFile() + + ": " + e.getMessage(), e); } sessionInfoStore = loader.getSessionInfoStore(); executionDataStore = loader.getExecutionDataStore(); } - protected void createReport(final IReportGroupVisitor visitor) throws IOException { + void createReport(final IReportGroupVisitor visitor) throws IOException { final FileFilter fileFilter = new FileFilter(this.getIncludes(), this.getExcludes()); final BundleCreator creator = new BundleCreator(this.getProject(), @@ -220,33 +228,34 @@ public abstract class AbstractReportMojo extends AbstractMavenReport { visitor.visitBundle(bundle, locator); } - protected void checkForMissingDebugInformation(final ICoverageNode node) { + void checkForMissingDebugInformation(final ICoverageNode node) { if (node.getClassCounter().getTotalCount() > 0 && node.getLineCounter().getTotalCount() == 0) { - getLog().warn("To enable source code annotation class files have to be compiled with debug information."); + getLog().warn( + "To enable source code annotation class files have to be compiled with debug information."); } } - protected IReportVisitor createVisitor(final Locale locale) throws IOException { + IReportVisitor createVisitor(final Locale locale) throws IOException { final List visitors = new ArrayList(); getOutputDirectoryFile().mkdirs(); final XMLFormatter xmlFormatter = new XMLFormatter(); xmlFormatter.setOutputEncoding(outputEncoding); - visitors.add(xmlFormatter.createVisitor(new FileOutputStream( - new File(getOutputDirectoryFile(), "jacoco.xml")))); + visitors.add(xmlFormatter.createVisitor(new FileOutputStream(new File( + getOutputDirectoryFile(), "jacoco.xml")))); final CSVFormatter csvFormatter = new CSVFormatter(); csvFormatter.setOutputEncoding(outputEncoding); - visitors.add(csvFormatter.createVisitor(new FileOutputStream( - new File(getOutputDirectoryFile(), "jacoco.csv")))); + visitors.add(csvFormatter.createVisitor(new FileOutputStream(new File( + getOutputDirectoryFile(), "jacoco.csv")))); final HTMLFormatter htmlFormatter = new HTMLFormatter(); htmlFormatter.setOutputEncoding(outputEncoding); htmlFormatter.setLocale(locale); - visitors.add(htmlFormatter.createVisitor( - new FileMultiReportOutput(getOutputDirectoryFile()))); + visitors.add(htmlFormatter.createVisitor(new FileMultiReportOutput( + getOutputDirectoryFile()))); return new MultiReportVisitor(visitors); } - protected File resolvePath(final String path) { + File resolvePath(final String path) { File file = new File(path); if (!file.isAbsolute()) { file = new File(getProject().getBasedir(), path); @@ -254,7 +263,7 @@ public abstract class AbstractReportMojo extends AbstractMavenReport { return file; } - protected List getCompileSourceRoots() { + List getCompileSourceRoots() { final List result = new ArrayList(); for (final Object path : getProject().getCompileSourceRoots()) { result.add(resolvePath((String) path)); @@ -296,8 +305,8 @@ public abstract class AbstractReportMojo extends AbstractMavenReport { } } - abstract protected File getDataFile(); + abstract File getDataFile(); - abstract protected File getOutputDirectoryFile(); + abstract File getOutputDirectoryFile(); } diff --git a/jacoco-maven-plugin/src/org/jacoco/maven/AgentITMojo.java b/jacoco-maven-plugin/src/org/jacoco/maven/AgentITMojo.java index 5742578f..84133000 100644 --- a/jacoco-maven-plugin/src/org/jacoco/maven/AgentITMojo.java +++ b/jacoco-maven-plugin/src/org/jacoco/maven/AgentITMojo.java @@ -47,7 +47,7 @@ public class AgentITMojo extends AbstractAgentMojo { * @return the destFile */ @Override - protected File getDestFile() { + File getDestFile() { return destFile; } diff --git a/jacoco-maven-plugin/src/org/jacoco/maven/AgentMojo.java b/jacoco-maven-plugin/src/org/jacoco/maven/AgentMojo.java index cfdd97a6..659ee9e4 100644 --- a/jacoco-maven-plugin/src/org/jacoco/maven/AgentMojo.java +++ b/jacoco-maven-plugin/src/org/jacoco/maven/AgentMojo.java @@ -61,7 +61,7 @@ public class AgentMojo extends AbstractAgentMojo { * @return the destFile */ @Override - protected File getDestFile() { + File getDestFile() { return destFile; } diff --git a/jacoco-maven-plugin/src/org/jacoco/maven/ReportITMojo.java b/jacoco-maven-plugin/src/org/jacoco/maven/ReportITMojo.java index 1096caa9..c5ecdc3d 100644 --- a/jacoco-maven-plugin/src/org/jacoco/maven/ReportITMojo.java +++ b/jacoco-maven-plugin/src/org/jacoco/maven/ReportITMojo.java @@ -62,12 +62,12 @@ public class ReportITMojo extends AbstractReportMojo { } @Override - protected File getDataFile() { + File getDataFile() { return dataFile; } @Override - protected File getOutputDirectoryFile() { + File getOutputDirectoryFile() { return outputDirectory; } diff --git a/jacoco-maven-plugin/src/org/jacoco/maven/ReportMojo.java b/jacoco-maven-plugin/src/org/jacoco/maven/ReportMojo.java index 3e1037a4..f63ce583 100644 --- a/jacoco-maven-plugin/src/org/jacoco/maven/ReportMojo.java +++ b/jacoco-maven-plugin/src/org/jacoco/maven/ReportMojo.java @@ -60,12 +60,12 @@ public class ReportMojo extends AbstractReportMojo { } @Override - protected File getDataFile() { + File getDataFile() { return dataFile; } @Override - protected File getOutputDirectoryFile() { + File getOutputDirectoryFile() { return outputDirectory; } -- cgit v1.2.3 From fad31312768e08e6c3a74e8c2f12f9c58871050b Mon Sep 17 00:00:00 2001 From: Mirko Friedenhagen Date: Fri, 20 Dec 2013 22:56:57 +0100 Subject: No need to specify the abstract declaration of an abstract method from the parent class. --- jacoco-maven-plugin/src/org/jacoco/maven/AbstractReportMojo.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/jacoco-maven-plugin/src/org/jacoco/maven/AbstractReportMojo.java b/jacoco-maven-plugin/src/org/jacoco/maven/AbstractReportMojo.java index 58552c54..f474de4c 100644 --- a/jacoco-maven-plugin/src/org/jacoco/maven/AbstractReportMojo.java +++ b/jacoco-maven-plugin/src/org/jacoco/maven/AbstractReportMojo.java @@ -109,9 +109,6 @@ public abstract class AbstractReportMojo extends AbstractMavenReport { return true; } - @Override - protected abstract String getOutputDirectory(); - @Override protected MavenProject getProject() { return project; -- cgit v1.2.3 From aa8d766b7a92c390d6b708bf5100d3f7a9f4a9f3 Mon Sep 17 00:00:00 2001 From: "Marc R. Hoffmann" Date: Sat, 21 Dec 2013 12:15:46 +0100 Subject: Avoid compiler warnings in Eclipse. --- .../src/org/jacoco/core/internal/flow/MethodProbesAdapterTest.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/org.jacoco.core.test/src/org/jacoco/core/internal/flow/MethodProbesAdapterTest.java b/org.jacoco.core.test/src/org/jacoco/core/internal/flow/MethodProbesAdapterTest.java index 0e7bfe46..acd6485c 100644 --- a/org.jacoco.core.test/src/org/jacoco/core/internal/flow/MethodProbesAdapterTest.java +++ b/org.jacoco.core.test/src/org/jacoco/core/internal/flow/MethodProbesAdapterTest.java @@ -14,6 +14,7 @@ package org.jacoco.core.internal.flow; import static org.junit.Assert.assertEquals; import java.util.Arrays; +import java.util.List; import org.jacoco.core.instr.MethodRecorder; import org.junit.After; @@ -79,7 +80,9 @@ public class MethodProbesAdapterTest implements IProbeIdGenerator { } private void rec(String name, Object... args) { - printer.text.add(name + Arrays.asList(args)); + @SuppressWarnings("unchecked") + final List text = printer.text; + text.add(name + Arrays.asList(args)); } } -- cgit v1.2.3 From 284fce9caddfe18260a211ba0ddfffa946b673c4 Mon Sep 17 00:00:00 2001 From: Mirko Friedenhagen Date: Sat, 21 Dec 2013 21:35:01 +0100 Subject: Update changes to include #175. --- org.jacoco.doc/docroot/doc/changes.html | 1 + 1 file changed, 1 insertion(+) diff --git a/org.jacoco.doc/docroot/doc/changes.html b/org.jacoco.doc/docroot/doc/changes.html index ed6db2f8..296c916b 100644 --- a/org.jacoco.doc/docroot/doc/changes.html +++ b/org.jacoco.doc/docroot/doc/changes.html @@ -23,6 +23,7 @@

    Fixed Bugs

    • Skip jacoco instrumentation for mvn modules with package type ear (GitHub #169).
    • +
    • Restrict visibility of methods in abstract classes of jacoco-maven-plugin (GitHub #175).

    Release 0.6.4 (2013/12/10)

    -- cgit v1.2.3 From 8426630ead77abfa3c110581dea4d43dda331430 Mon Sep 17 00:00:00 2001 From: Mirko Friedenhagen Date: Sat, 21 Dec 2013 21:35:57 +0100 Subject: Remove @author tag in class documentation and add documentation. --- jacoco-maven-plugin/src/org/jacoco/maven/AbstractAgentMojo.java | 4 ++-- jacoco-maven-plugin/src/org/jacoco/maven/AbstractReportMojo.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/jacoco-maven-plugin/src/org/jacoco/maven/AbstractAgentMojo.java b/jacoco-maven-plugin/src/org/jacoco/maven/AbstractAgentMojo.java index bd0c949a..3c539f36 100644 --- a/jacoco-maven-plugin/src/org/jacoco/maven/AbstractAgentMojo.java +++ b/jacoco-maven-plugin/src/org/jacoco/maven/AbstractAgentMojo.java @@ -20,8 +20,8 @@ import org.codehaus.plexus.util.StringUtils; import org.jacoco.core.runtime.AgentOptions; /** - * - * @author Mirko Friedenhagen + * Base class for preparing a property pointing to the JaCoCo runtime agent that + * can be passed as a VM argument to the application under test. */ public abstract class AbstractAgentMojo extends AbstractJacocoMojo { diff --git a/jacoco-maven-plugin/src/org/jacoco/maven/AbstractReportMojo.java b/jacoco-maven-plugin/src/org/jacoco/maven/AbstractReportMojo.java index f474de4c..acbed957 100644 --- a/jacoco-maven-plugin/src/org/jacoco/maven/AbstractReportMojo.java +++ b/jacoco-maven-plugin/src/org/jacoco/maven/AbstractReportMojo.java @@ -41,8 +41,8 @@ import org.jacoco.report.html.HTMLFormatter; import org.jacoco.report.xml.XMLFormatter; /** - * - * @author Mirko Friedenhagen + * Base class for creating a code coverage report for tests of a single project + * in multiple formats (HTML, XML, and CSV). */ public abstract class AbstractReportMojo extends AbstractMavenReport { -- cgit v1.2.3