From ae67e7ed2cf0307b2b6e3d187a07f36e5228d1b8 Mon Sep 17 00:00:00 2001 From: Bo Zhang Date: Wed, 13 Mar 2019 19:17:18 +0800 Subject: [PATCH] Apply pmd plugin and fix/ignore broken styles This commit applies [p3c-pmd](https://github.com/alibaba/p3c) plugin/rules, and fixes/ignores all violations of piority 1 (mandatory). --- .travis.yml | 2 +- .../command/monitor200/DashboardCommand.java | 1 + .../monitor200/DashboardInterruptHandler.java | 1 + .../monitor200/MonitorAdviceListener.java | 1 + .../arthas/core/server/ArthasBootstrap.java | 1 + .../core/shell/impl/ShellServerImpl.java | 1 + .../system/impl/GlobalJobControllerImpl.java | 2 +- .../taobao/arthas/core/util/Decompiler.java | 24 ++++++++---- .../com/taobao/arthas/core/util/NetUtils.java | 3 +- .../taobao/arthas/core/util/StringUtils.java | 8 +++- .../taobao/arthas/core/util/UserStatUtil.java | 1 + .../com/taobao/arthas/core/view/Ansi.java | 7 +++- pom.xml | 37 +++++++++++++++++++ 13 files changed, 74 insertions(+), 15 deletions(-) diff --git a/.travis.yml b/.travis.yml index 5a540d697..15bf48f32 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,7 +18,7 @@ cache: - "$HOME/.m2/repository" - "$HOME/.m2/wrapper" script: - - ./mvnw clean cobertura:cobertura package -P full -Dsphinx.binUrl=https://github.com/hengyunabc/sphinx-binary/releases/download/v0.4.0.1/sphinx.linux-x86_64 + - ./mvnw clean cobertura:cobertura package -P full -Dsphinx.binUrl=https://github.com/hengyunabc/sphinx-binary/releases/download/v0.4.0.1/sphinx.linux-x86_64 -DminimumPriority=1 after_success: - bash <(curl -s https://codecov.io/bash) diff --git a/core/src/main/java/com/taobao/arthas/core/command/monitor200/DashboardCommand.java b/core/src/main/java/com/taobao/arthas/core/command/monitor200/DashboardCommand.java index d381422ac..760822d38 100644 --- a/core/src/main/java/com/taobao/arthas/core/command/monitor200/DashboardCommand.java +++ b/core/src/main/java/com/taobao/arthas/core/command/monitor200/DashboardCommand.java @@ -47,6 +47,7 @@ import java.util.TimerTask; " dashboard -n 10\n" + " dashboard -i 2000\n" + Constants.WIKI + Constants.WIKI_HOME + "dashboard") +@SuppressWarnings("PMD.AvoidUseTimerRule") public class DashboardCommand extends AnnotatedCommand { private static final Logger logger = LogUtil.getArthasLogger(); diff --git a/core/src/main/java/com/taobao/arthas/core/command/monitor200/DashboardInterruptHandler.java b/core/src/main/java/com/taobao/arthas/core/command/monitor200/DashboardInterruptHandler.java index 317b6ac78..075cd9c4f 100644 --- a/core/src/main/java/com/taobao/arthas/core/command/monitor200/DashboardInterruptHandler.java +++ b/core/src/main/java/com/taobao/arthas/core/command/monitor200/DashboardInterruptHandler.java @@ -8,6 +8,7 @@ import java.util.Timer; /** * @author ralf0131 2017-01-09 13:37. */ +@SuppressWarnings("PMD.AvoidUseTimerRule") public class DashboardInterruptHandler extends CommandInterruptHandler { private volatile Timer timer; diff --git a/core/src/main/java/com/taobao/arthas/core/command/monitor200/MonitorAdviceListener.java b/core/src/main/java/com/taobao/arthas/core/command/monitor200/MonitorAdviceListener.java index 5400d0cd0..5f2257e57 100644 --- a/core/src/main/java/com/taobao/arthas/core/command/monitor200/MonitorAdviceListener.java +++ b/core/src/main/java/com/taobao/arthas/core/command/monitor200/MonitorAdviceListener.java @@ -66,6 +66,7 @@ import static com.taobao.text.ui.Element.label; * * @author beiwei30 on 28/11/2016. */ +@SuppressWarnings("PMD.AvoidUseTimerRule") class MonitorAdviceListener extends ReflectAdviceListenerAdapter { // 输出定时任务 private Timer timer; diff --git a/core/src/main/java/com/taobao/arthas/core/server/ArthasBootstrap.java b/core/src/main/java/com/taobao/arthas/core/server/ArthasBootstrap.java index da122ca3b..bc4e75af7 100644 --- a/core/src/main/java/com/taobao/arthas/core/server/ArthasBootstrap.java +++ b/core/src/main/java/com/taobao/arthas/core/server/ArthasBootstrap.java @@ -40,6 +40,7 @@ public class ArthasBootstrap { private ShellServer shellServer; private ExecutorService executorService; + @SuppressWarnings("PMD.ThreadPoolCreationRule") private ArthasBootstrap(int pid, Instrumentation instrumentation) { this.pid = pid; this.instrumentation = instrumentation; diff --git a/core/src/main/java/com/taobao/arthas/core/shell/impl/ShellServerImpl.java b/core/src/main/java/com/taobao/arthas/core/shell/impl/ShellServerImpl.java index 840cc4ec8..059dcfdaf 100644 --- a/core/src/main/java/com/taobao/arthas/core/shell/impl/ShellServerImpl.java +++ b/core/src/main/java/com/taobao/arthas/core/shell/impl/ShellServerImpl.java @@ -146,6 +146,7 @@ public class ShellServerImpl extends ShellServer { } } + @SuppressWarnings("PMD.ThreadPoolCreationRule") public synchronized void setTimer() { if (!closed && reaperInterval > 0) { scheduledExecutorService = Executors.newSingleThreadScheduledExecutor(); diff --git a/core/src/main/java/com/taobao/arthas/core/shell/system/impl/GlobalJobControllerImpl.java b/core/src/main/java/com/taobao/arthas/core/shell/system/impl/GlobalJobControllerImpl.java index e67f84705..96e8e8225 100644 --- a/core/src/main/java/com/taobao/arthas/core/shell/system/impl/GlobalJobControllerImpl.java +++ b/core/src/main/java/com/taobao/arthas/core/shell/system/impl/GlobalJobControllerImpl.java @@ -22,7 +22,7 @@ import com.taobao.middleware.logger.Logger; * @author gehui 2017年7月31日 上午11:55:41 */ public class GlobalJobControllerImpl extends JobControllerImpl { - + @SuppressWarnings("PMD.AvoidUseTimerRule") private Timer timer = new Timer("job-timeout", true); private Map jobTimeoutTaskMap = new HashMap(); private static final Logger logger = LogUtil.getArthasLogger(); diff --git a/core/src/main/java/com/taobao/arthas/core/util/Decompiler.java b/core/src/main/java/com/taobao/arthas/core/util/Decompiler.java index e6837121f..993c2c339 100644 --- a/core/src/main/java/com/taobao/arthas/core/util/Decompiler.java +++ b/core/src/main/java/com/taobao/arthas/core/util/Decompiler.java @@ -85,14 +85,16 @@ public class Decompiler { path = classFileSource.adjustInputPath(path); AnalysisType type = (AnalysisType) options.getOption(OptionsImpl.ANALYSE_AS); - if (type == null) + if (type == null) { type = dcCommonState.detectClsJar(path); + } if (type == AnalysisType.JAR) { // doJar(dcCommonState, path, dumperFactory); } - if (type == AnalysisType.CLASS) + if (type == AnalysisType.CLASS) { result.append(doClass(dcCommonState, path, skipInnerClass, dumperFactory)); + } } return result.toString(); } @@ -105,8 +107,9 @@ public class Decompiler { Dumper d = new ToStringDumper(); try { ClassFile c = dcCommonState.getClassFileMaybePath(path); - if ((skipInnerClass) && (c.isInnerClass())) + if ((skipInnerClass) && (c.isInnerClass())) { return ""; + } dcCommonState.configureWith(c); dumperFactory.getProgressDumper().analysingType(c.getClassType()); try { @@ -132,12 +135,14 @@ public class Decompiler { // collectingDumper.getTypeUsageInformation(), illegalIdentifierDump); String methname = (String) options.getOption(OptionsImpl.METHODNAME); - if (methname == null) + if (methname == null) { c.dump(d); + } else { try { - for (Method method : c.getMethodByName(methname)) + for (Method method : c.getMethodByName(methname)) { method.dump(d, true); + } } catch (NoSuchMethodException e) { throw new IllegalArgumentException("No such method '" + methname + "'."); } @@ -146,18 +151,21 @@ public class Decompiler { result.append(d.toString()); } catch (ConfusedCFRException e) { result.append(e.toString()).append("\n"); - for (Object x : e.getStackTrace()) + for (Object x : e.getStackTrace()) { result.append(x).append("\n"); + } } catch (CannotLoadClassException e) { result.append("Can't load the class specified:").append("\n"); result.append(e.toString()).append("\n"); } catch (RuntimeException e) { result.append(e.toString()).append("\n"); - for (Object x : e.getStackTrace()) + for (Object x : e.getStackTrace()) { result.append(x).append("\n"); + } } finally { - if (d != null) + if (d != null) { d.close(); + } } return result.toString(); } diff --git a/core/src/main/java/com/taobao/arthas/core/util/NetUtils.java b/core/src/main/java/com/taobao/arthas/core/util/NetUtils.java index 535b63bb7..f01a6055f 100644 --- a/core/src/main/java/com/taobao/arthas/core/util/NetUtils.java +++ b/core/src/main/java/com/taobao/arthas/core/util/NetUtils.java @@ -191,12 +191,13 @@ public class NetUtils { } catch (Exception e) { return false; } finally { - if (s != null) + if (s != null) { try { s.close(); } catch (Exception e) { // ignore } + } } } diff --git a/core/src/main/java/com/taobao/arthas/core/util/StringUtils.java b/core/src/main/java/com/taobao/arthas/core/util/StringUtils.java index 9774e41f8..bb028fa11 100644 --- a/core/src/main/java/com/taobao/arthas/core/util/StringUtils.java +++ b/core/src/main/java/com/taobao/arthas/core/util/StringUtils.java @@ -871,7 +871,9 @@ public abstract class StringUtils { } public static String classLoaderHash(Class clazz) { - if (clazz == null || clazz.getClassLoader() == null) return "null"; + if (clazz == null || clazz.getClassLoader() == null) { + return "null"; + } return Integer.toHexString(clazz.getClassLoader().hashCode()); } @@ -881,7 +883,9 @@ public abstract class StringUtils { * @return human readable format */ public static String humanReadableByteCount(long bytes) { - if (bytes < UNIT) return bytes + " B"; + if (bytes < UNIT) { + return bytes + " B"; + } int exp = (int) (Math.log(bytes) / Math.log(UNIT)); String pre = STRING_UNITS.charAt(exp-1) + "i"; return String.format("%.2f %sB", bytes / Math.pow(UNIT, exp), pre); diff --git a/core/src/main/java/com/taobao/arthas/core/util/UserStatUtil.java b/core/src/main/java/com/taobao/arthas/core/util/UserStatUtil.java index e4e209088..f7dea36bb 100644 --- a/core/src/main/java/com/taobao/arthas/core/util/UserStatUtil.java +++ b/core/src/main/java/com/taobao/arthas/core/util/UserStatUtil.java @@ -15,6 +15,7 @@ import java.util.concurrent.Executors; * Created by zhuyong on 15/11/12. */ public class UserStatUtil { + @SuppressWarnings("PMD.ThreadPoolCreationRule") private static final ExecutorService executorService = Executors.newSingleThreadExecutor(); private static final String ip = IPUtils.getLocalIP(); diff --git a/core/src/main/java/com/taobao/arthas/core/view/Ansi.java b/core/src/main/java/com/taobao/arthas/core/view/Ansi.java index 91bc951d9..481b7d999 100644 --- a/core/src/main/java/com/taobao/arthas/core/view/Ansi.java +++ b/core/src/main/java/com/taobao/arthas/core/view/Ansi.java @@ -136,7 +136,9 @@ public class Ansi { }; public static void setDetector(final Callable detector) { - if (detector == null) throw new IllegalArgumentException(); + if (detector == null) { + throw new IllegalArgumentException(); + } Ansi.detector = detector; } @@ -698,8 +700,9 @@ public class Ansi { } private void flushAttributes() { - if (attributeOptions.isEmpty()) + if (attributeOptions.isEmpty()) { return; + } if (attributeOptions.size() == 1 && attributeOptions.get(0) == 0) { builder.append(FIRST_ESC_CHAR); builder.append(SECOND_ESC_CHAR); diff --git a/pom.xml b/pom.xml index dbdb7f2a3..fd56f3af6 100644 --- a/pom.xml +++ b/pom.xml @@ -195,6 +195,43 @@ + + org.apache.maven.plugins + maven-pmd-plugin + 3.8 + + ${project.build.sourceEncoding} + 1.8 + true + + rulesets/java/ali-comment.xml + rulesets/java/ali-concurrent.xml + rulesets/java/ali-constant.xml + rulesets/java/ali-exception.xml + rulesets/java/ali-flowcontrol.xml + rulesets/java/ali-naming.xml + rulesets/java/ali-oop.xml + rulesets/java/ali-orm.xml + rulesets/java/ali-other.xml + rulesets/java/ali-set.xml + + + + + verify + + check + + + + + + com.alibaba.p3c + p3c-pmd + 1.3.6 + + + org.apache.maven.plugins maven-jar-plugin