You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by lg...@apache.org on 2017/05/17 17:33:28 UTC

mina-sshd git commit: [SSHD-748] Activate Maven PMD plugin in the project

Repository: mina-sshd
Updated Branches:
  refs/heads/master 6256245da -> b85bcd524


[SSHD-748] Activate Maven PMD plugin in the project


Project: http://git-wip-us.apache.org/repos/asf/mina-sshd/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina-sshd/commit/b85bcd52
Tree: http://git-wip-us.apache.org/repos/asf/mina-sshd/tree/b85bcd52
Diff: http://git-wip-us.apache.org/repos/asf/mina-sshd/diff/b85bcd52

Branch: refs/heads/master
Commit: b85bcd524ebcc77eeb7af309d353225ebeb3a830
Parents: 6256245
Author: Lyor Goldstein <ly...@gmail.com>
Authored: Wed May 17 20:00:42 2017 +0300
Committer: Lyor Goldstein <ly...@gmail.com>
Committed: Wed May 17 20:33:34 2017 +0300

----------------------------------------------------------------------
 .gitignore                                      |  1 +
 pom.xml                                         | 59 ++++++++++++++++++++
 .../java/org/apache/sshd/client/SshClient.java  |  2 +-
 .../client/config/hosts/HostPatternsHolder.java |  4 +-
 .../apache/sshd/common/util/SelectorUtils.java  |  4 +-
 .../java/org/apache/sshd/client/ClientTest.java |  3 -
 .../common/forward/PortForwardingLoadTest.java  |  2 +-
 .../java/org/apache/sshd/server/ServerTest.java |  4 +-
 .../sshd/util/test/CommandExecutionHelper.java  |  6 +-
 .../JUnit4ClassRunnerWithParametersFactory.java |  4 +-
 .../apache/sshd/git/pack/GitPackCommand.java    | 16 ++++--
 .../org/apache/sshd/git/pgm/GitPgmCommand.java  |  6 +-
 .../sshd/server/auth/BaseAuthenticatorTest.java |  1 -
 sshd-pmd-ruleset.xml                            | 23 ++++++++
 14 files changed, 113 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/b85bcd52/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index aec7cda..52da317 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,6 +7,7 @@ RemoteSystemsTempFiles/
 .classpath
 .project
 .checkstyle
+.eclipse-pmd
 *.iml
 *.ipr
 *.iws

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/b85bcd52/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index ab6d31c..f5e9a29 100644
--- a/pom.xml
+++ b/pom.xml
@@ -114,6 +114,8 @@
         <jgit.version>4.6.0.201612231935-r</jgit.version>
         <junit.version>4.12</junit.version>
         <surefire.plugin.version>2.19.1</surefire.plugin.version>
+        <!-- See https://pmd.github.io/ for available latest version -->
+        <pmd.version>5.6.1</pmd.version>
         <httpcomps.version>4.4.1</httpcomps.version>
     </properties>
 
@@ -482,6 +484,7 @@
                         <excludes>
                             <exclude>**/*.iml</exclude>
                             <exclude>README.md</exclude>
+                            <exclude>*pmd*</exclude>
                             <exclude>src/docs/**</exclude>
                             <exclude>src/test/resources/**</exclude>
                             <exclude>**/stty-output-*.txt</exclude>
@@ -666,6 +669,31 @@
                         </dependency>
                     </dependencies>                    
                 </plugin>
+                <plugin> 
+                   <groupId>org.apache.maven.plugins</groupId> 
+                   <artifactId>maven-pmd-plugin</artifactId> 
+                   <version>3.8</version> 
+                   <configuration> 
+                       <targetJdk>${javac.target}</targetJdk> 
+                       <printFailingErrors>true</printFailingErrors> 
+                       <skipPmdError>false</skipPmdError> 
+                       <excludeRoots> 
+                           <excludeRoot>target/generated-sources/java</excludeRoot> 
+                       </excludeRoots> 
+                   </configuration> 
+                   <dependencies> 
+                       <dependency> 
+                          <groupId>net.sourceforge.pmd</groupId> 
+                          <artifactId>pmd-core</artifactId> 
+                          <version>${pmd.version}</version> 
+                       </dependency> 
+                       <dependency> 
+                          <groupId>net.sourceforge.pmd</groupId> 
+                          <artifactId>pmd-java</artifactId> 
+                          <version>${pmd.version}</version> 
+                       </dependency> 
+                   </dependencies> 
+               </plugin>
             </plugins>
         </pluginManagement>
 
@@ -723,6 +751,27 @@
                     </execution>
                 </executions>
             </plugin>
+            <plugin> 
+               <!-- to disable - mvn [commands...] -Dpmd.skip --> 
+               <groupId>org.apache.maven.plugins</groupId> 
+               <artifactId>maven-pmd-plugin</artifactId> 
+               <configuration> 
+                   <rulesets> 
+                       <ruleset>${workspace.root.dir}${file.separator}sshd-pmd-ruleset.xml</ruleset>
+                   </rulesets> 
+                   <includeTests>true</includeTests>
+               </configuration> 
+               <executions> 
+                   <execution> 
+                       <id>pmd-checker</id> 
+                       <!-- Note: phase must be AFTER detection of workspace root dir --> 
+                       <phase>verify</phase> 
+                       <goals> 
+                           <goal>check</goal> 
+                       </goals> 
+                   </execution> 
+               </executions> 
+           </plugin>
             <plugin>
                 <groupId>org.codehaus.mojo</groupId>
                 <artifactId>animal-sniffer-maven-plugin</artifactId>
@@ -936,6 +985,16 @@
         </repository>
     </distributionManagement>
 
+    <reporting> 
+       <plugins> 
+           <plugin>    <!-- used by PMD to create a source XREF --> 
+               <groupId>org.apache.maven.plugins</groupId> 
+               <artifactId>maven-jxr-plugin</artifactId> 
+               <version>2.5</version> 
+           </plugin> 
+       </plugins> 
+    </reporting>
+
     <modules>
         <module>sshd-core</module>
         <module>sshd-ldap</module>

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/b85bcd52/sshd-core/src/main/java/org/apache/sshd/client/SshClient.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/SshClient.java b/sshd-core/src/main/java/org/apache/sshd/client/SshClient.java
index c2a8025..c8cc1db 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/SshClient.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/SshClient.java
@@ -1290,7 +1290,7 @@ public class SshClient extends AbstractFactoryManager implements ClientFactoryMa
                     StringWriter sw = new StringWriter();
                     try (PrintWriter pw = new PrintWriter(sw)) {
                         pw.println();
-                        t.printStackTrace(pw);
+                        t.printStackTrace(pw);  // NOPMD
                     }
                     throwable = sw.toString();
                 }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/b85bcd52/sshd-core/src/main/java/org/apache/sshd/client/config/hosts/HostPatternsHolder.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/client/config/hosts/HostPatternsHolder.java b/sshd-core/src/main/java/org/apache/sshd/client/config/hosts/HostPatternsHolder.java
index eff34d9..fdef86e 100644
--- a/sshd-core/src/main/java/org/apache/sshd/client/config/hosts/HostPatternsHolder.java
+++ b/sshd-core/src/main/java/org/apache/sshd/client/config/hosts/HostPatternsHolder.java
@@ -120,7 +120,7 @@ public abstract class HostPatternsHolder {
      * @param host The host name / address - ignored if {@code null}/empty
      * @param entries The {@link HostConfigEntry}-ies to scan - ignored if {@code null}/empty
      * @return A {@link List} of all the matching entries
-     * @see #isHostMatch(String)
+     * @see #isHostMatch(String, int)
      */
     public static List<HostConfigEntry> findMatchingEntries(String host, HostConfigEntry... entries) {
         // TODO in Java-8 use Stream(s) + predicate
@@ -137,7 +137,7 @@ public abstract class HostPatternsHolder {
      * @param host The host name / address - ignored if {@code null}/empty
      * @param entries The {@link HostConfigEntry}-ies to scan - ignored if {@code null}/empty
      * @return A {@link List} of all the matching entries
-     * @see #isHostMatch(String)
+     * @see #isHostMatch(String, int)
      */
     public static List<HostConfigEntry> findMatchingEntries(String host, Collection<? extends HostConfigEntry> entries) {
         // TODO in Java-8 use Stream(s) + predicate

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/b85bcd52/sshd-core/src/main/java/org/apache/sshd/common/util/SelectorUtils.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/main/java/org/apache/sshd/common/util/SelectorUtils.java b/sshd-core/src/main/java/org/apache/sshd/common/util/SelectorUtils.java
index 8ea1a76..839eb7e 100644
--- a/sshd-core/src/main/java/org/apache/sshd/common/util/SelectorUtils.java
+++ b/sshd-core/src/main/java/org/apache/sshd/common/util/SelectorUtils.java
@@ -149,7 +149,9 @@ public final class SelectorUtils {
         if (strIdxStart > strIdxEnd) {
             // String is exhausted
             return true;
-        } else return patIdxStart <= patIdxEnd;
+        } else {
+            return patIdxStart <= patIdxEnd;
+        }
         // CHECKSTYLE:ON
     }
 

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/b85bcd52/sshd-core/src/test/java/org/apache/sshd/client/ClientTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/client/ClientTest.java b/sshd-core/src/test/java/org/apache/sshd/client/ClientTest.java
index a8e5aa7..7b30c7f 100644
--- a/sshd-core/src/test/java/org/apache/sshd/client/ClientTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/client/ClientTest.java
@@ -524,7 +524,6 @@ public class ClientTest extends BaseTestSupport {
                             }
                         } catch (IOException e) {
                             if (!channel.isClosing()) {
-                                e.printStackTrace();
                                 channel.close(true);
                             }
                         }
@@ -543,7 +542,6 @@ public class ClientTest extends BaseTestSupport {
                             channel.getAsyncOut().read(buffer).addListener(this);
                         } catch (IOException e) {
                             if (!channel.isClosing()) {
-                                e.printStackTrace();
                                 channel.close(true);
                             }
                         }
@@ -562,7 +560,6 @@ public class ClientTest extends BaseTestSupport {
                             channel.getAsyncErr().read(buffer).addListener(this);
                         } catch (IOException e) {
                             if (!channel.isClosing()) {
-                                e.printStackTrace();
                                 channel.close(true);
                             }
                         }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/b85bcd52/sshd-core/src/test/java/org/apache/sshd/common/forward/PortForwardingLoadTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/common/forward/PortForwardingLoadTest.java b/sshd-core/src/test/java/org/apache/sshd/common/forward/PortForwardingLoadTest.java
index 0287f75..0184422 100644
--- a/sshd-core/src/test/java/org/apache/sshd/common/forward/PortForwardingLoadTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/common/forward/PortForwardingLoadTest.java
@@ -469,7 +469,7 @@ public class PortForwardingLoadTest extends BaseTestSupport {
             }
             latch.await();
             for (Throwable t : errors) {
-                t.printStackTrace();
+                log.warn("{}: {}", t.getClass().getSimpleName(), t.getMessage());
             }
             assertEquals(0, errors.size());
         } finally {

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/b85bcd52/sshd-core/src/test/java/org/apache/sshd/server/ServerTest.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/server/ServerTest.java b/sshd-core/src/test/java/org/apache/sshd/server/ServerTest.java
index 04d36e5..84aee1f 100644
--- a/sshd-core/src/test/java/org/apache/sshd/server/ServerTest.java
+++ b/sshd-core/src/test/java/org/apache/sshd/server/ServerTest.java
@@ -967,7 +967,7 @@ public class ServerTest extends BaseTestSupport {
                     try {
                         name.wait();
                     } catch (InterruptedException e) {
-                        e.printStackTrace();
+                        e.printStackTrace();    // NOPMD
                     }
                 }
             }
@@ -987,7 +987,7 @@ public class ServerTest extends BaseTestSupport {
             } catch (WindowClosedException e) {
                 // ok, do nothing
             } catch (Throwable e) {
-                e.printStackTrace();
+                e.printStackTrace();    // NOPMD
             } finally {
                 if (latch != null) {
                     latch.countDown();

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/b85bcd52/sshd-core/src/test/java/org/apache/sshd/util/test/CommandExecutionHelper.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/util/test/CommandExecutionHelper.java b/sshd-core/src/test/java/org/apache/sshd/util/test/CommandExecutionHelper.java
index f036288..ce47a65 100644
--- a/sshd-core/src/test/java/org/apache/sshd/util/test/CommandExecutionHelper.java
+++ b/sshd-core/src/test/java/org/apache/sshd/util/test/CommandExecutionHelper.java
@@ -27,6 +27,7 @@ import java.io.InterruptedIOException;
 import java.io.OutputStream;
 import java.nio.charset.StandardCharsets;
 
+import org.apache.sshd.common.util.logging.AbstractLoggingBean;
 import org.apache.sshd.server.Command;
 import org.apache.sshd.server.Environment;
 import org.apache.sshd.server.ExitCallback;
@@ -34,7 +35,7 @@ import org.apache.sshd.server.ExitCallback;
 /**
  * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
  */
-public abstract class CommandExecutionHelper implements Command, Runnable, ExitCallback {
+public abstract class CommandExecutionHelper extends AbstractLoggingBean implements Command, Runnable, ExitCallback {
     private InputStream in;
     private OutputStream out;
     private OutputStream err;
@@ -133,7 +134,8 @@ public abstract class CommandExecutionHelper implements Command, Runnable, ExitC
                 OutputStream stderr = getErr();
                 stderr.write(message.getBytes(StandardCharsets.US_ASCII));
             } catch (IOException ioe) {
-                ioe.printStackTrace();
+                log.warn("Failed ({}) to write error message={}: {}",
+                         e.getClass().getSimpleName(), message, ioe.getMessage());
             } finally {
                 onExit(-1, message);
             }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/b85bcd52/sshd-core/src/test/java/org/apache/sshd/util/test/JUnit4ClassRunnerWithParametersFactory.java
----------------------------------------------------------------------
diff --git a/sshd-core/src/test/java/org/apache/sshd/util/test/JUnit4ClassRunnerWithParametersFactory.java b/sshd-core/src/test/java/org/apache/sshd/util/test/JUnit4ClassRunnerWithParametersFactory.java
index 9dc2308..12ab252 100644
--- a/sshd-core/src/test/java/org/apache/sshd/util/test/JUnit4ClassRunnerWithParametersFactory.java
+++ b/sshd-core/src/test/java/org/apache/sshd/util/test/JUnit4ClassRunnerWithParametersFactory.java
@@ -27,7 +27,7 @@ import org.junit.runners.parameterized.TestWithParameters;
 /**
  * Avoids re-creating a test class instance for each parameterized test method. Usage:
  *
- * <PRE>{@code
+ * <PRE><code>
  * @FixMethodOrder(MethodSorters.NAME_ASCENDING)
  * @RunWith(Parameterized.class)
  * @UseParametersRunnerFactory(JUnit4ClassRunnerWithParametersFactory.class)
@@ -41,7 +41,7 @@ import org.junit.runners.parameterized.TestWithParameters;
  *          ...
  *      }
  * }
- * }</PRE>
+ * </code></PRE>
  *
  * @see JUnit4ClassRunnerWithParameters
  * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/b85bcd52/sshd-git/src/main/java/org/apache/sshd/git/pack/GitPackCommand.java
----------------------------------------------------------------------
diff --git a/sshd-git/src/main/java/org/apache/sshd/git/pack/GitPackCommand.java b/sshd-git/src/main/java/org/apache/sshd/git/pack/GitPackCommand.java
index 3bd202b..500e020 100644
--- a/sshd-git/src/main/java/org/apache/sshd/git/pack/GitPackCommand.java
+++ b/sshd-git/src/main/java/org/apache/sshd/git/pack/GitPackCommand.java
@@ -26,6 +26,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.sshd.common.channel.ChannelOutputStream;
+import org.apache.sshd.common.util.logging.AbstractLoggingBean;
 import org.apache.sshd.server.Command;
 import org.apache.sshd.server.Environment;
 import org.apache.sshd.server.ExitCallback;
@@ -40,7 +41,7 @@ import org.eclipse.jgit.util.FS;
  *
  * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
  */
-public class GitPackCommand implements Command, Runnable {
+public class GitPackCommand extends AbstractLoggingBean implements Command, Runnable {
 
     private static final int CHAR = 1;
     private static final int DELIMITER = 2;
@@ -119,11 +120,16 @@ public class GitPackCommand implements Command, Runnable {
             } else {
                 throw new IllegalArgumentException("Unknown git command: " + command);
             }
+
+            if (callback != null) {
+                callback.onExit(0);
+            }
         } catch (Throwable t) {
-            t.printStackTrace();
-        }
-        if (callback != null) {
-            callback.onExit(0);
+            log.warn("Failed {} to execute command={}: {}",
+                     t.getClass().getSimpleName(), command, t.getMessage());
+            if (callback != null) {
+                callback.onExit(-1, t.getClass().getSimpleName());
+            }
         }
     }
 

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/b85bcd52/sshd-git/src/main/java/org/apache/sshd/git/pgm/GitPgmCommand.java
----------------------------------------------------------------------
diff --git a/sshd-git/src/main/java/org/apache/sshd/git/pgm/GitPgmCommand.java b/sshd-git/src/main/java/org/apache/sshd/git/pgm/GitPgmCommand.java
index ae6ff7c..2e6434f 100644
--- a/sshd-git/src/main/java/org/apache/sshd/git/pgm/GitPgmCommand.java
+++ b/sshd-git/src/main/java/org/apache/sshd/git/pgm/GitPgmCommand.java
@@ -26,6 +26,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.sshd.common.channel.ChannelOutputStream;
+import org.apache.sshd.common.util.logging.AbstractLoggingBean;
 import org.apache.sshd.server.Command;
 import org.apache.sshd.server.Environment;
 import org.apache.sshd.server.ExitCallback;
@@ -35,7 +36,7 @@ import org.apache.sshd.server.ExitCallback;
  *
  * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
  */
-public class GitPgmCommand implements Command, Runnable {
+public class GitPgmCommand extends AbstractLoggingBean implements Command, Runnable {
 
     private static final int CHAR = 1;
     private static final int DELIMITER = 2;
@@ -110,7 +111,8 @@ public class GitPgmCommand implements Command, Runnable {
                 err.write((t.getMessage() + "\n").getBytes(StandardCharsets.UTF_8));
                 err.flush();
             } catch (IOException e) {
-                e.printStackTrace();
+                log.warn("Failed {} to flush command={} failure: {}",
+                        e.getClass().getSimpleName(), command, e.getMessage());
             }
             if (callback != null) {
                 callback.onExit(-1);

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/b85bcd52/sshd-ldap/src/test/java/org/apache/sshd/server/auth/BaseAuthenticatorTest.java
----------------------------------------------------------------------
diff --git a/sshd-ldap/src/test/java/org/apache/sshd/server/auth/BaseAuthenticatorTest.java b/sshd-ldap/src/test/java/org/apache/sshd/server/auth/BaseAuthenticatorTest.java
index d7ed83c..8244ffe 100644
--- a/sshd-ldap/src/test/java/org/apache/sshd/server/auth/BaseAuthenticatorTest.java
+++ b/sshd-ldap/src/test/java/org/apache/sshd/server/auth/BaseAuthenticatorTest.java
@@ -167,7 +167,6 @@ public abstract class BaseAuthenticatorTest extends BaseTestSupport {
             log.info("LDAP server started");
         } catch (Exception e) {
             log.error("Failed (" + e.getClass().getSimpleName() + ") to start LDAP server: " + e.getMessage(), e);
-            e.printStackTrace(System.err);
             stopApacheDs(directoryService);
             throw e;
         }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/b85bcd52/sshd-pmd-ruleset.xml
----------------------------------------------------------------------
diff --git a/sshd-pmd-ruleset.xml b/sshd-pmd-ruleset.xml
new file mode 100644
index 0000000..39f6bfd
--- /dev/null
+++ b/sshd-pmd-ruleset.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?> 
+<ruleset name="MINA SSHD PMD ruleset" 
+   xmlns="http://pmd.sourceforge.net/ruleset/2.0.0" 
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+   xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd"> 
+
+   <description> 
+       This ruleset defines the PMD rules for MINA SSHD project 
+   </description> 
+
+       <!-- See https://pmd.github.io/pmd-5.6.1/pmd-java/rules/index.html --> 
+   <rule ref="rulesets/java/basic.xml/BooleanInstantiation" /> 
+   <rule ref="rulesets/java/basic.xml/ExtendsObject" /> 
+
+   <rule ref="rulesets/java/braces.xml" /> 
+
+   <rule ref="rulesets/java/clone.xml/ProperCloneImplementation" /> 
+   <rule ref="rulesets/java/clone.xml/CloneMethodMustImplementCloneable" /> 
+
+   <rule ref="rulesets/java/javabeans.xml/MissingSerialVersionUID" /> 
+
+   <rule ref="rulesets/java/logging-java.xml/AvoidPrintStackTrace" /> 
+</ruleset>
\ No newline at end of file