aboutsummaryrefslogtreecommitdiffstats
path: root/org.jacoco.examples/src/org/jacoco/examples/ReportGenerator.java
diff options
context:
space:
mode:
Diffstat (limited to 'org.jacoco.examples/src/org/jacoco/examples/ReportGenerator.java')
-rw-r--r--org.jacoco.examples/src/org/jacoco/examples/ReportGenerator.java306
1 files changed, 153 insertions, 153 deletions
diff --git a/org.jacoco.examples/src/org/jacoco/examples/ReportGenerator.java b/org.jacoco.examples/src/org/jacoco/examples/ReportGenerator.java
index ccd6ccef..dc10780c 100644
--- a/org.jacoco.examples/src/org/jacoco/examples/ReportGenerator.java
+++ b/org.jacoco.examples/src/org/jacoco/examples/ReportGenerator.java
@@ -1,153 +1,153 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2012 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:
- * Brock Janiczak - initial API and implementation
- *
- *******************************************************************************/
-package org.jacoco.examples;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-
-import org.jacoco.core.analysis.Analyzer;
-import org.jacoco.core.analysis.CoverageBuilder;
-import org.jacoco.core.analysis.IBundleCoverage;
-import org.jacoco.core.data.ExecutionDataReader;
-import org.jacoco.core.data.ExecutionDataStore;
-import org.jacoco.core.data.SessionInfoStore;
-import org.jacoco.report.DirectorySourceFileLocator;
-import org.jacoco.report.FileMultiReportOutput;
-import org.jacoco.report.IReportVisitor;
-import org.jacoco.report.html.HTMLFormatter;
-
-/**
- * This example creates a HTML report for eclipse like projects based on a
- * single execution data store called jacoco.exec. The report contains no
- * grouping information.
- *
- * The class files under test must be compiled with debug information, otherwise
- * source highlighting will not work.
- */
-public class ReportGenerator {
-
- private final String title;
-
- private final File executionDataFile;
- private final File classesDirectory;
- private final File sourceDirectory;
- private final File reportDirectory;
-
- private ExecutionDataStore executionDataStore;
- private SessionInfoStore sessionInfoStore;
-
- /**
- * Create a new generator based for the given project.
- *
- * @param projectDirectory
- */
- public ReportGenerator(final File projectDirectory) {
- this.title = projectDirectory.getName();
- this.executionDataFile = new File(projectDirectory, "jacoco.exec");
- this.classesDirectory = new File(projectDirectory, "bin");
- this.sourceDirectory = new File(projectDirectory, "src");
- this.reportDirectory = new File(projectDirectory, "coveragereport");
- }
-
- /**
- * Create the report.
- *
- * @throws IOException
- */
- public void create() throws IOException {
-
- // Read the jacoco.exec file. Multiple data stores could be merged
- // at this point
- loadExecutionData();
-
- // Run the structure analyzer on a single class folder to build up
- // the coverage model. The process would be similar if your classes
- // were in a jar file. Typically you would create a bundle for each
- // class folder and each jar you want in your report. If you have
- // more than one bundle you will need to add a grouping node to your
- // report
- final IBundleCoverage bundleCoverage = analyzeStructure();
-
- createReport(bundleCoverage);
-
- }
-
- private void createReport(final IBundleCoverage bundleCoverage)
- throws IOException {
-
- // Create a concrete report visitor based on some supplied
- // configuration. In this case we use the defaults
- final HTMLFormatter htmlFormatter = new HTMLFormatter();
- final IReportVisitor visitor = htmlFormatter
- .createVisitor(new FileMultiReportOutput(reportDirectory));
-
- // Initialize the report with all of the execution and session
- // information. At this point the report doesn't know about the
- // structure of the report being created
- visitor.visitInfo(sessionInfoStore.getInfos(),
- executionDataStore.getContents());
-
- // Populate the report structure with the bundle coverage information.
- // Call visitGroup if you need groups in your report.
- visitor.visitBundle(bundleCoverage, new DirectorySourceFileLocator(
- sourceDirectory, "utf-8", 4));
-
- // Signal end of structure information to allow report to write all
- // information out
- visitor.visitEnd();
-
- }
-
- private void loadExecutionData() throws IOException {
- final FileInputStream fis = new FileInputStream(executionDataFile);
- final ExecutionDataReader executionDataReader = new ExecutionDataReader(
- fis);
- executionDataStore = new ExecutionDataStore();
- sessionInfoStore = new SessionInfoStore();
-
- executionDataReader.setExecutionDataVisitor(executionDataStore);
- executionDataReader.setSessionInfoVisitor(sessionInfoStore);
-
- while (executionDataReader.read()) {
- }
-
- fis.close();
- }
-
- private IBundleCoverage analyzeStructure() throws IOException {
- final CoverageBuilder coverageBuilder = new CoverageBuilder();
- final Analyzer analyzer = new Analyzer(executionDataStore,
- coverageBuilder);
-
- analyzer.analyzeAll(classesDirectory);
-
- return coverageBuilder.getBundle(title);
- }
-
- /**
- * Starts the report generation process
- *
- * @param args
- * Arguments to the application. This will be the location of the
- * eclipse projects that will be used to generate reports for
- * @throws IOException
- */
- public static void main(final String[] args) throws IOException {
- for (int i = 0; i < args.length; i++) {
- final ReportGenerator generator = new ReportGenerator(new File(
- args[i]));
- generator.create();
- }
- }
-
-}
+/*******************************************************************************
+ * Copyright (c) 2009, 2012 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:
+ * Brock Janiczak - initial API and implementation
+ *
+ *******************************************************************************/
+package org.jacoco.examples;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+import org.jacoco.core.analysis.Analyzer;
+import org.jacoco.core.analysis.CoverageBuilder;
+import org.jacoco.core.analysis.IBundleCoverage;
+import org.jacoco.core.data.ExecutionDataReader;
+import org.jacoco.core.data.ExecutionDataStore;
+import org.jacoco.core.data.SessionInfoStore;
+import org.jacoco.report.DirectorySourceFileLocator;
+import org.jacoco.report.FileMultiReportOutput;
+import org.jacoco.report.IReportVisitor;
+import org.jacoco.report.html.HTMLFormatter;
+
+/**
+ * This example creates a HTML report for eclipse like projects based on a
+ * single execution data store called jacoco.exec. The report contains no
+ * grouping information.
+ *
+ * The class files under test must be compiled with debug information, otherwise
+ * source highlighting will not work.
+ */
+public class ReportGenerator {
+
+ private final String title;
+
+ private final File executionDataFile;
+ private final File classesDirectory;
+ private final File sourceDirectory;
+ private final File reportDirectory;
+
+ private ExecutionDataStore executionDataStore;
+ private SessionInfoStore sessionInfoStore;
+
+ /**
+ * Create a new generator based for the given project.
+ *
+ * @param projectDirectory
+ */
+ public ReportGenerator(final File projectDirectory) {
+ this.title = projectDirectory.getName();
+ this.executionDataFile = new File(projectDirectory, "jacoco.exec");
+ this.classesDirectory = new File(projectDirectory, "bin");
+ this.sourceDirectory = new File(projectDirectory, "src");
+ this.reportDirectory = new File(projectDirectory, "coveragereport");
+ }
+
+ /**
+ * Create the report.
+ *
+ * @throws IOException
+ */
+ public void create() throws IOException {
+
+ // Read the jacoco.exec file. Multiple data stores could be merged
+ // at this point
+ loadExecutionData();
+
+ // Run the structure analyzer on a single class folder to build up
+ // the coverage model. The process would be similar if your classes
+ // were in a jar file. Typically you would create a bundle for each
+ // class folder and each jar you want in your report. If you have
+ // more than one bundle you will need to add a grouping node to your
+ // report
+ final IBundleCoverage bundleCoverage = analyzeStructure();
+
+ createReport(bundleCoverage);
+
+ }
+
+ private void createReport(final IBundleCoverage bundleCoverage)
+ throws IOException {
+
+ // Create a concrete report visitor based on some supplied
+ // configuration. In this case we use the defaults
+ final HTMLFormatter htmlFormatter = new HTMLFormatter();
+ final IReportVisitor visitor = htmlFormatter
+ .createVisitor(new FileMultiReportOutput(reportDirectory));
+
+ // Initialize the report with all of the execution and session
+ // information. At this point the report doesn't know about the
+ // structure of the report being created
+ visitor.visitInfo(sessionInfoStore.getInfos(),
+ executionDataStore.getContents());
+
+ // Populate the report structure with the bundle coverage information.
+ // Call visitGroup if you need groups in your report.
+ visitor.visitBundle(bundleCoverage, new DirectorySourceFileLocator(
+ sourceDirectory, "utf-8", 4));
+
+ // Signal end of structure information to allow report to write all
+ // information out
+ visitor.visitEnd();
+
+ }
+
+ private void loadExecutionData() throws IOException {
+ final FileInputStream fis = new FileInputStream(executionDataFile);
+ final ExecutionDataReader executionDataReader = new ExecutionDataReader(
+ fis);
+ executionDataStore = new ExecutionDataStore();
+ sessionInfoStore = new SessionInfoStore();
+
+ executionDataReader.setExecutionDataVisitor(executionDataStore);
+ executionDataReader.setSessionInfoVisitor(sessionInfoStore);
+
+ while (executionDataReader.read()) {
+ }
+
+ fis.close();
+ }
+
+ private IBundleCoverage analyzeStructure() throws IOException {
+ final CoverageBuilder coverageBuilder = new CoverageBuilder();
+ final Analyzer analyzer = new Analyzer(executionDataStore,
+ coverageBuilder);
+
+ analyzer.analyzeAll(classesDirectory);
+
+ return coverageBuilder.getBundle(title);
+ }
+
+ /**
+ * Starts the report generation process
+ *
+ * @param args
+ * Arguments to the application. This will be the location of the
+ * eclipse projects that will be used to generate reports for
+ * @throws IOException
+ */
+ public static void main(final String[] args) throws IOException {
+ for (int i = 0; i < args.length; i++) {
+ final ReportGenerator generator = new ReportGenerator(new File(
+ args[i]));
+ generator.create();
+ }
+ }
+
+}