| /******************************************************************************* |
| * Copyright (c) 2009, 2018 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.report.csv; |
| |
| import java.io.IOException; |
| |
| import org.jacoco.core.analysis.IClassCoverage; |
| import org.jacoco.core.analysis.ICounter; |
| import org.jacoco.core.analysis.ICoverageNode.CounterEntity; |
| import org.jacoco.report.ILanguageNames; |
| |
| /** |
| * Writer for rows in the CVS report representing the summary data of a single |
| * class. |
| */ |
| class ClassRowWriter { |
| |
| private static final CounterEntity[] COUNTERS = { CounterEntity.INSTRUCTION, |
| CounterEntity.BRANCH, CounterEntity.LINE, |
| CounterEntity.COMPLEXITY, CounterEntity.METHOD }; |
| |
| private final DelimitedWriter writer; |
| |
| private final ILanguageNames languageNames; |
| |
| /** |
| * Creates a new row writer that writes class information to the given CSV |
| * writer. |
| * |
| * @param writer |
| * writer for csv output |
| * @param languageNames |
| * converter for Java identifiers |
| * @throws IOException |
| * in case of problems with the writer |
| */ |
| public ClassRowWriter(final DelimitedWriter writer, |
| final ILanguageNames languageNames) throws IOException { |
| this.writer = writer; |
| this.languageNames = languageNames; |
| writeHeader(); |
| } |
| |
| private void writeHeader() throws IOException { |
| writer.write("GROUP", "PACKAGE", "CLASS"); |
| for (final CounterEntity entity : COUNTERS) { |
| writer.write(entity.name() + "_MISSED"); |
| writer.write(entity.name() + "_COVERED"); |
| } |
| writer.nextLine(); |
| } |
| |
| /** |
| * Writes the class summary information as a row. |
| * |
| * @param groupName |
| * name of the group |
| * @param packageName |
| * vm name of the package |
| * @param node |
| * class coverage data |
| * @throws IOException |
| * in case of problems with the writer |
| */ |
| public void writeRow(final String groupName, final String packageName, |
| final IClassCoverage node) throws IOException { |
| writer.write(groupName); |
| writer.write(languageNames.getPackageName(packageName)); |
| final String className = languageNames.getClassName(node.getName(), |
| node.getSignature(), node.getSuperName(), |
| node.getInterfaceNames()); |
| writer.write(className); |
| |
| for (final CounterEntity entity : COUNTERS) { |
| final ICounter counter = node.getCounter(entity); |
| writer.write(counter.getMissedCount()); |
| writer.write(counter.getCoveredCount()); |
| } |
| |
| writer.nextLine(); |
| } |
| |
| } |