package org.sonar.runner;
+import org.sonar.runner.bootstrapper.utils.PrivateIOUtils;
+
import org.sonar.runner.bootstrapper.BootstrapException;
-import org.sonar.runner.internal.PrivateIOUtils;
import org.sonar.runner.utils.SonarRunnerVersion;
import java.io.File;
private static boolean debugMode = false;
+ /**
+ * Entry point of the program.
+ */
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
try {
public final class Runner {
/**
+ * Old property used to activate debug level for logging.
+ *
* @deprecated Replaced by sonar.verbose since 1.2
*/
@Deprecated
public static final String PROPERTY_OLD_DEBUG_MODE = "runner.debug";
/**
+ * Property used to increase logging information.
+ *
* @since 1.2
*/
public static final String PROPERTY_VERBOSE = "sonar.verbose";
/**
+ * Property used to specify the working directory for the runner. May be a relative or absolute path.
+ *
* @since 1.4
*/
public static final String PROPERTY_WORK_DIRECTORY = "sonar.working.directory";
+
+ /**
+ * Default value of the working directory.
+ */
public static final String DEF_VALUE_WORK_DIRECTORY = ".sonar";
/**
+ * Property used to specify the base directory of the project to analyse.
+ *
* @since 1.5
*/
public static final String PROPERTY_PROJECT_DIR = "sonar.projectDir";
/**
+ * Property used to specify the name of the tool that will run a Sonar analysis.
+ *
* @since 1.5
*/
public static final String PROPERTY_ENVIRONMENT_INFORMATION_KEY = "sonar.environment.information.key";
/**
+ * Property used to specify the version of the tool that will run a Sonar analysis.
+ *
* @since 1.5
*/
public static final String PROPERTY_ENVIRONMENT_INFORMATION_VERSION = "sonar.environment.information.version";
package org.sonar.runner;
/**
+ * Exception thrown by the Sonar Runner when something bad happens.
+ *
* @since 1.2
*/
public class RunnerException extends RuntimeException {
private static final long serialVersionUID = 4810407777585753030L;
+ /**
+ * See {@link RuntimeException}
+ */
public RunnerException(String message) {
super(message);
}
+ /**
+ * See {@link RuntimeException}
+ */
public RunnerException(Throwable cause) {
super(cause);
}
+ /**
+ * See {@link RuntimeException}
+ */
public RunnerException(String message, Throwable cause) {
super(message, cause);
}
*/
package org.sonar.runner.bootstrapper;
+/**
+ * Exception thrown by the bootstrapper when something bad happens.
+ */
public class BootstrapException extends RuntimeException {
+ private static final long serialVersionUID = -4974995497654796971L;
+
+ /**
+ * See {@link RuntimeException}
+ */
public BootstrapException(String message) {
super(message);
}
+ /**
+ * See {@link RuntimeException}
+ */
public BootstrapException(Throwable cause) {
super(cause);
}
+ /**
+ * See {@link RuntimeException}
+ */
public BootstrapException(String message, Throwable cause) {
super(message, cause);
}
*/
package org.sonar.runner.bootstrapper;
-import org.sonar.runner.internal.PrivateIOUtils;
+import org.sonar.runner.bootstrapper.utils.PrivateIOUtils;
+
import org.sonar.runner.utils.SonarRunnerVersion;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
+/**
+ * Bootstrapper used to download everything from the server and create the correct classloader required to execute a Sonar analysis in isolation.
+ */
public class Bootstrapper {
private static final String VERSION_PATH = "/api/server/version";
--- /dev/null
+/*
+ * Sonar Standalone Runner
+ * Copyright (C) 2011 SonarSource
+ * dev@sonar.codehaus.org
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
+ */
+package org.sonar.runner.bootstrapper.utils;
+
+import java.io.Closeable;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.io.StringWriter;
+import java.io.Writer;
+
+/**
+ * Internal class used only by the Runner as we don't want it to depend on third-party libs.
+ * This class should not be used by Sonar Runner consumers.
+ */
+public final class PrivateIOUtils {
+
+ private PrivateIOUtils() {
+ // only static methods
+ }
+
+ /**
+ * The default buffer size to use.
+ */
+ private static final int DEFAULT_BUFFER_SIZE = 1024 * 4;
+
+ /**
+ * Unconditionally close a <code>Closeable</code>.
+ */
+ public static void closeQuietly(Closeable closeable) {
+ try {
+ if (closeable != null) {
+ closeable.close();
+ }
+ } catch (IOException ioe) {
+ }
+ }
+
+ /**
+ * Get the contents of a <code>Reader</code> as a String.
+ */
+ public static String toString(Reader input) throws IOException {
+ StringWriter sw = new StringWriter();
+ copyLarge(input, sw);
+ return sw.toString();
+ }
+
+ /**
+ * Copy bytes from an <code>InputStream</code> to an <code>OutputStream</code>.
+ */
+ public static long copyLarge(InputStream input, OutputStream output) throws IOException {
+ byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
+ long count = 0;
+ int n = 0;
+ while (-1 != (n = input.read(buffer))) {
+ output.write(buffer, 0, n);
+ count += n;
+ }
+ return count;
+ }
+
+ /**
+ * Copy chars from a <code>Reader</code> to a <code>Writer</code>.
+ */
+ public static long copyLarge(Reader input, Writer output) throws IOException {
+ char[] buffer = new char[DEFAULT_BUFFER_SIZE];
+ long count = 0;
+ int n = 0;
+ while (-1 != (n = input.read(buffer))) {
+ output.write(buffer, 0, n);
+ count += n;
+ }
+ return count;
+ }
+
+ /**
+ * Deletes a file (not a directory).
+ */
+ public static boolean deleteFileQuietly(File file) {
+ if (file == null) {
+ return false;
+ }
+ try {
+ return file.delete();
+ } catch (Exception e) {
+ return false;
+ }
+ }
+
+}
--- /dev/null
+/*
+ * Sonar Standalone Runner
+ * Copyright (C) 2011 SonarSource
+ * dev@sonar.codehaus.org
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
+ */
+/**
+ * Internal package that provides utils for internal purposes.
+ * Should not be used by consumers.
+ */
+package org.sonar.runner.bootstrapper.utils;
\ No newline at end of file
+++ /dev/null
-/*
- * Sonar Standalone Runner
- * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
- */
-package org.sonar.runner.internal;
-
-import java.io.Closeable;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.Reader;
-import java.io.StringWriter;
-import java.io.Writer;
-
-/**
- * Internal class used only by the Runner as we don't want it to depend on third-party libs.
- * This class should not be used by Sonar Runner consumers.
- */
-public final class PrivateIOUtils {
-
- private PrivateIOUtils() {
- // only static methods
- }
-
- /**
- * The default buffer size to use.
- */
- private static final int DEFAULT_BUFFER_SIZE = 1024 * 4;
-
- /**
- * Unconditionally close a <code>Closeable</code>.
- */
- public static void closeQuietly(Closeable closeable) {
- try {
- if (closeable != null) {
- closeable.close();
- }
- } catch (IOException ioe) {
- }
- }
-
- /**
- * Get the contents of a <code>Reader</code> as a String.
- */
- public static String toString(Reader input) throws IOException {
- StringWriter sw = new StringWriter();
- copyLarge(input, sw);
- return sw.toString();
- }
-
- /**
- * Copy bytes from an <code>InputStream</code> to an <code>OutputStream</code>.
- */
- public static long copyLarge(InputStream input, OutputStream output) throws IOException {
- byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
- long count = 0;
- int n = 0;
- while (-1 != (n = input.read(buffer))) {
- output.write(buffer, 0, n);
- count += n;
- }
- return count;
- }
-
- /**
- * Copy chars from a <code>Reader</code> to a <code>Writer</code>.
- */
- public static long copyLarge(Reader input, Writer output) throws IOException {
- char[] buffer = new char[DEFAULT_BUFFER_SIZE];
- long count = 0;
- int n = 0;
- while (-1 != (n = input.read(buffer))) {
- output.write(buffer, 0, n);
- count += n;
- }
- return count;
- }
-
- /**
- * Deletes a file (not a directory).
- */
- public static boolean deleteFileQuietly(File file) {
- if (file == null) {
- return false;
- }
- try {
- return file.delete();
- } catch (Exception e) {
- return false;
- }
- }
-
-}
+++ /dev/null
-/*
- * Sonar Standalone Runner
- * Copyright (C) 2011 SonarSource
- * dev@sonar.codehaus.org
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
- */
-/**
- * Internal package that provides utils for internal purposes.
- * Should not be used by consumers.
- */
-package org.sonar.runner.internal;
\ No newline at end of file
import org.sonar.api.utils.SonarException;
import org.sonar.batch.Batch;
import org.sonar.batch.bootstrapper.EnvironmentInformation;
-import org.sonar.runner.Main;
import org.sonar.runner.Runner;
import java.io.File;
}
/**
- * This method invoked from {@link Main}. Do not rename it.
+ * Main entry point.
*/
public void execute() {
File baseDir = new File(propertiesFromRunner.getProperty(Runner.PROPERTY_PROJECT_DIR));
*/
package org.sonar.runner.utils;
-import org.sonar.runner.internal.PrivateIOUtils;
+import org.sonar.runner.bootstrapper.utils.PrivateIOUtils;
import java.io.IOException;
import java.io.InputStream;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
-import org.sonar.runner.bootstrapper.BootstrapClassLoader;
import static org.fest.assertions.Assertions.assertThat;
package org.sonar.runner.bootstrapper;
import org.junit.Test;
-import org.sonar.runner.bootstrapper.Bootstrapper;
import java.io.File;
import java.io.IOException;
*/
package org.sonar.runner.model;
-import org.sonar.runner.Runner;
-
-import org.sonar.runner.model.Launcher;
-
import org.apache.commons.configuration.BaseConfiguration;
import org.apache.commons.configuration.Configuration;
import org.junit.Test;
+import org.sonar.runner.Runner;
import java.util.Properties;
*/
package org.sonar.runner.utils;
-import org.sonar.runner.utils.SonarRunnerVersion;
-
import org.junit.Test;
import static org.fest.assertions.Assertions.assertThat;