diff --git a/org.eclipse.egerrit.core.tests/src/org/eclipse/egerrit/core/tests/GerritFactoryTest.java b/org.eclipse.egerrit.core.tests/src/org/eclipse/egerrit/core/tests/GerritFactoryTest.java
index 6d9065f..a143823 100644
--- a/org.eclipse.egerrit.core.tests/src/org/eclipse/egerrit/core/tests/GerritFactoryTest.java
+++ b/org.eclipse.egerrit.core.tests/src/org/eclipse/egerrit/core/tests/GerritFactoryTest.java
@@ -90,7 +90,7 @@
 		// Run test
 		GerritClient gerrit = null;
 		try {
-			gerrit = GerritFactory.create(repo);
+			GerritFactory.create(repo);
 			fail("Exception should have been thrown");
 		} catch (EGerritException e) {
 		}
@@ -113,7 +113,7 @@
 		// Run test
 		GerritClient gerrit = null;
 		try {
-			gerrit = GerritFactory.create(repo);
+			GerritFactory.create(repo);
 			fail("Exception should have been thrown");
 		} catch (EGerritException e) {
 		}
diff --git a/org.eclipse.egerrit.core.tests/src/org/eclipse/egerrit/core/tests/GerritTest.java b/org.eclipse.egerrit.core.tests/src/org/eclipse/egerrit/core/tests/GerritTest.java
index c569dca..942c4fd 100644
--- a/org.eclipse.egerrit.core.tests/src/org/eclipse/egerrit/core/tests/GerritTest.java
+++ b/org.eclipse.egerrit.core.tests/src/org/eclipse/egerrit/core/tests/GerritTest.java
@@ -91,7 +91,7 @@
 		// Run test
 		GerritClient gerrit = null;
 		try {
-			gerrit = new MyGerrit(null);
+			new MyGerrit(null);
 			fail("Exception was not thrown");
 		} catch (EGerritException e) {
 		}
diff --git a/org.eclipse.egerrit.core.tests/src/org/eclipse/egerrit/core/tests/support/GitAccess.java b/org.eclipse.egerrit.core.tests/src/org/eclipse/egerrit/core/tests/support/GitAccess.java
index ea243ea..ff7b93b 100644
--- a/org.eclipse.egerrit.core.tests/src/org/eclipse/egerrit/core/tests/support/GitAccess.java
+++ b/org.eclipse.egerrit.core.tests/src/org/eclipse/egerrit/core/tests/support/GitAccess.java
@@ -105,7 +105,6 @@
 			fGit = Git.open(repo);
 			checkoutFolder = repo;
 		} catch (IOException e) {
-			// TODO Auto-generated catch block
 			e.printStackTrace();
 		}
 	}
@@ -134,7 +133,7 @@
 			fileToAdd.delete();
 		}
 		try (Writer writer = new FileWriter(fileToAdd)) {
-			writer.write(content.toString());
+			writer.write(content);
 		}
 		fGit.add().addFilepattern(fileName).call();
 	}
@@ -301,8 +300,8 @@
 		if (description != null) {
 			String projectName = description.getName();
 			IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
-			if (project.exists() == true) {
-				if (project.isOpen() == false) {
+			if (project.exists()) {
+				if (!project.isOpen()) {
 					project.open(IResource.BACKGROUND_REFRESH, new NullProgressMonitor());
 				}
 			} else {
@@ -380,7 +379,6 @@
 		try {
 			branch = repoUtil.getShortBranch(fGit.getRepository());
 		} catch (IOException e) {
-			// TODO Auto-generated catch block
 			e.printStackTrace();
 		}
 		return branch;
@@ -402,7 +400,10 @@
 			command.setForce(false);
 			command.call();
 		} catch (Throwable t) {
-			CheckoutResult result = command.getResult();
+			if (command != null) {
+				CheckoutResult result = command.getResult();
+				fail(result.getStatus().toString());
+			}
 			fail(t.getMessage());
 		}
 		System.out.println("Branch c/o: " + branchName);
diff --git a/org.eclipse.egerrit.core/src/org/eclipse/egerrit/internal/core/GerritFactory.java b/org.eclipse.egerrit.core/src/org/eclipse/egerrit/internal/core/GerritFactory.java
index ac82a31..8fac25e 100644
--- a/org.eclipse.egerrit.core/src/org/eclipse/egerrit/internal/core/GerritFactory.java
+++ b/org.eclipse.egerrit.core/src/org/eclipse/egerrit/internal/core/GerritFactory.java
@@ -64,9 +64,8 @@
 			throw new EGerritException("Unsupported gerrit version (< " + MINIMAL_VERSION.toString() + ")"); //$NON-NLS-1$ //$NON-NLS-2$
 		}
 
-		GerritClient gerrit = instantiateGerritClient(gerritRepository, version);
+		return instantiateGerritClient(gerritRepository, version);
 
-		return gerrit;
 	}
 
 	/**
