
net.sourceforge.cobertura.reporting.Main Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of cobertura Show documentation
Show all versions of cobertura Show documentation
Cobertura is a free Java tool that calculates the percentage of
code accessed by tests. It can be used to identify which parts of
your Java program are lacking test coverage. It is based on jcoverage.
/*
* Cobertura - http://cobertura.sourceforge.net/
*
* Copyright (C) 2003 jcoverage ltd.
* Copyright (C) 2005 Mark Doliner
* Copyright (C) 2005 Jeremy Thomerson
* Copyright (C) 2005 Grzegorz Lukasik
* Copyright (C) 2006 Dan Godfrey
*
* Cobertura is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published
* by the Free Software Foundation; either version 2 of the License,
* or (at your option) any later version.
*
* Cobertura is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Cobertura; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*/
package net.sourceforge.cobertura.reporting;
import net.sourceforge.cobertura.coveragedata.CoverageDataFileHandler;
import net.sourceforge.cobertura.coveragedata.ProjectData;
import net.sourceforge.cobertura.reporting.html.HTMLReport;
import net.sourceforge.cobertura.reporting.xml.SummaryXMLReport;
import net.sourceforge.cobertura.reporting.xml.XMLReport;
import net.sourceforge.cobertura.util.CommandLineBuilder;
import net.sourceforge.cobertura.util.FileFinder;
import net.sourceforge.cobertura.util.Header;
import org.apache.log4j.Logger;
import java.io.File;
public class Main {
private static final Logger LOGGER = Logger.getLogger(Main.class);
private String format = "html";
private File dataFile = null;
private File destinationDir = null;
private String encoding = "UTF-8";
private void parseArguments(String[] args) throws Exception {
FileFinder finder = new FileFinder();
String baseDir = null;
for (int i = 0; i < args.length; i++) {
if (args[i].equals("--basedir")) {
baseDir = args[++i];
} else if (args[i].equals("--datafile")) {
setDataFile(args[++i]);
} else if (args[i].equals("--destination")) {
setDestination(args[++i]);
} else if (args[i].equals("--format")) {
setFormat(args[++i]);
} else if (args[i].equals("--encoding")) {
setEncoding(args[++i]);
} else {
if (baseDir == null) {
finder.addSourceDirectory(args[i]);
} else {
finder.addSourceFile(baseDir, args[i]);
}
}
}
if (dataFile == null)
dataFile = CoverageDataFileHandler.getDefaultDataFile();
if (destinationDir == null) {
System.err.println("Error: destination directory must be set");
System.exit(1);
}
if (format == null) {
System.err.println("Error: format must be set");
System.exit(1);
}
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("format is " + format + " encoding is " + encoding);
LOGGER.debug("dataFile is " + dataFile.getAbsolutePath());
LOGGER.debug("destinationDir is "
+ destinationDir.getAbsolutePath());
}
ProjectData projectData = CoverageDataFileHandler
.loadCoverageData(dataFile);
if (projectData == null) {
System.err.println("Error: Unable to read from data file "
+ dataFile.getAbsolutePath());
System.exit(1);
}
ComplexityCalculator complexity = new ComplexityCalculator(finder);
if (format.equalsIgnoreCase("html")) {
new HTMLReport(projectData, destinationDir, finder, complexity,
encoding);
} else if (format.equalsIgnoreCase("xml")) {
new XMLReport(projectData, destinationDir, finder, complexity);
} else if (format.equalsIgnoreCase("summaryXml")) {
new SummaryXMLReport(projectData, destinationDir, finder,
complexity);
}
}
private void setFormat(String value) {
format = value;
if (!format.equalsIgnoreCase("html") && !format.equalsIgnoreCase("xml")
&& !format.equalsIgnoreCase("summaryXml")) {
System.err
.println(""
+ "Error: format \""
+ format
+ "\" is invalid. Must be either html or xml or summaryXml");
System.exit(1);
}
}
private void setDataFile(String value) {
dataFile = new File(value);
if (!dataFile.exists()) {
System.err.println("Error: data file " + dataFile.getAbsolutePath()
+ " does not exist");
System.exit(1);
}
if (!dataFile.isFile()) {
System.err.println("Error: data file " + dataFile.getAbsolutePath()
+ " must be a regular file");
System.exit(1);
}
}
private void setDestination(String value) {
destinationDir = new File(value);
if (destinationDir.exists() && !destinationDir.isDirectory()) {
System.err.println("Error: destination directory " + destinationDir
+ " already exists but is not a directory");
System.exit(1);
}
destinationDir.mkdirs();
}
private void setEncoding(String encoding) {
this.encoding = encoding;
}
public static void main(String[] args) throws Exception {
Header.print(System.out);
long startTime = System.currentTimeMillis();
Main main = new Main();
try {
args = CommandLineBuilder.preprocessCommandLineArguments(args);
} catch (Exception ex) {
System.err.println("Error: Cannot process arguments: "
+ ex.getMessage());
System.exit(1);
}
main.parseArguments(args);
long stopTime = System.currentTimeMillis();
System.out.println("Report time: " + (stopTime - startTime) + "ms");
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy