diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileFilterSelector.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileFilterSelector.java
index 44f6958..b5db30a 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileFilterSelector.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileFilterSelector.java
@@ -48,7 +48,7 @@
      */
     @Override
     public boolean includeFile(final FileSelectInfo fileInfo) throws Exception {
-        return super.includeFile(fileInfo) ? accept(fileInfo) : false;
+        return super.includeFile(fileInfo) && accept(fileInfo);
     }
 
     /**
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/auth/StaticUserAuthenticator.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/auth/StaticUserAuthenticator.java
index 8d48cac..beb5acb 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/auth/StaticUserAuthenticator.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/auth/StaticUserAuthenticator.java
@@ -125,8 +125,7 @@
                 return 1;
             }
 
-            final int result = thisString.compareTo(otherString);
-            return result;
+            return thisString.compareTo(otherString);
         }
         if (otherString != null) {
             return -1;
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/ftp/FtpFileObject.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/ftp/FtpFileObject.java
index 01facb5..8826860 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/ftp/FtpFileObject.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/ftp/FtpFileObject.java
@@ -436,9 +436,8 @@
             final boolean ok;
             final FtpClient ftpClient = getAbstractFileSystem().getClient();
             try {
-                final String oldName = relPath;
                 final String newName = ((FtpFileObject) FileObjectUtils.getAbstractFileObject(newFile)).getRelPath();
-                ok = ftpClient.rename(oldName, newName);
+                ok = ftpClient.rename(relPath, newName);
             } finally {
                 getAbstractFileSystem().putClient(ftpClient);
             }
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/jar/JarFileSystem.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/jar/JarFileSystem.java
index b11af1f..f2cb974 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/jar/JarFileSystem.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/jar/JarFileSystem.java
@@ -94,8 +94,7 @@
     Object getAttribute(final Name attrName) throws FileSystemException {
         try {
             final Attributes attr = getAttributes();
-            final String value = attr.getValue(attrName);
-            return value;
+            return attr.getValue(attrName);
         } catch (final IOException ioe) {
             throw new FileSystemException(attrName.toString(), ioe);
         }
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/tar/TarFileSystem.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/tar/TarFileSystem.java
index 00dbd54..5421ef3 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/tar/TarFileSystem.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/tar/TarFileSystem.java
@@ -220,8 +220,7 @@
             }
             tarFile = null;
         }
-        final TarArchiveInputStream tarFile = createTarFile(this.file);
-        this.tarFile = tarFile;
+        this.tarFile = createTarFile(this.file);
     }
 
     /**
