You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by ki...@apache.org on 2021/01/25 05:48:40 UTC

[incubator-dolphinscheduler] branch dev updated: [Improvement][alert-plugin] Refactor alert-plugin module to fix code smell (#4548)

This is an automated email from the ASF dual-hosted git repository.

kirs pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-dolphinscheduler.git


The following commit(s) were added to refs/heads/dev by this push:
     new 90626d4  [Improvement][alert-plugin] Refactor alert-plugin module to fix code smell (#4548)
90626d4 is described below

commit 90626d4118ca7f93007a7a6d3a64e80ca5ef0bed
Author: Segun Ogundipe <da...@gmail.com>
AuthorDate: Mon Jan 25 06:48:35 2021 +0100

    [Improvement][alert-plugin] Refactor alert-plugin module to fix code smell (#4548)
    
    * chore: Refactor code to fix code smell in alert-plugin module
    
    * chore: Fix compile error
    
    * chore: Fix static smell
---
 .../alert/dingtalk/DingTalkParamsConstants.java    |  2 +-
 .../plugin/alert/dingtalk/DingTalkSender.java      |  2 +-
 .../plugin/alert/email/EmailConstants.java         |  4 ++
 .../plugin/alert/email/ExcelUtils.java             | 15 ++---
 .../plugin/alert/email/MailParamsConstants.java    |  2 +-
 .../plugin/alert/email/MailSender.java             | 74 +++++++---------------
 .../email/exception/AlertEmailException.java}      | 26 +++++---
 .../alert/email/template/DefaultHTMLTemplate.java  | 11 ++--
 .../plugin/alert/script/OSUtils.java               |  2 +-
 .../plugin/alert/script/ScriptParamsConstants.java |  2 +-
 .../plugin/alert/script/StreamGobbler.java         |  4 +-
 .../plugin/alert/wechat/WeChatAlertConstants.java  |  4 ++
 .../alert/wechat/WeChatAlertParamsConstants.java   |  3 +
 .../plugin/alert/wechat/WeChatSender.java          | 47 +++++++-------
 .../wechat/exception/WeChatAlertException.java}    | 20 +++---
 .../dolphinscheduler/spi/utils/JSONUtils.java      | 12 ++--
 16 files changed, 107 insertions(+), 123 deletions(-)

diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkParamsConstants.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkParamsConstants.java
index fb9f5f9..c00d130 100644
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkParamsConstants.java
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkParamsConstants.java
@@ -22,7 +22,7 @@ package org.apache.dolphinscheduler.plugin.alert.dingtalk;
  */
 public class DingTalkParamsConstants {
 
-    public DingTalkParamsConstants() {
+    private DingTalkParamsConstants() {
         throw new IllegalStateException("Utility class");
     }
 
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkSender.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkSender.java
index 4500f3e..d152bc8 100644
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkSender.java
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-dingtalk/src/main/java/org/apache/dolphinscheduler/plugin/alert/dingtalk/DingTalkSender.java
@@ -113,7 +113,7 @@ public class DingTalkSender {
             } finally {
                 response.close();
             }
-            logger.info("Ding Talk send [ %s ], resp:{%s}", msg, resp);
+            logger.info("Ding Talk send {}, resp: {}", msg, resp);
             return resp;
         } finally {
             httpClient.close();
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/EmailConstants.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/EmailConstants.java
index d0e85ff..091bf28 100644
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/EmailConstants.java
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/EmailConstants.java
@@ -19,6 +19,10 @@ package org.apache.dolphinscheduler.plugin.alert.email;
 
 public class EmailConstants {
 
+    private EmailConstants() {
+        throw new IllegalStateException(EmailConstants.class.getName());
+    }
+
 
     public static final String XLS_FILE_PATH = "xls.file.path";
 
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/ExcelUtils.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/ExcelUtils.java
index 1579f95..5802394 100644
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/ExcelUtils.java
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/ExcelUtils.java
@@ -17,6 +17,7 @@
 
 package org.apache.dolphinscheduler.plugin.alert.email;
 
+import org.apache.dolphinscheduler.plugin.alert.email.exception.AlertEmailException;
 import org.apache.dolphinscheduler.spi.utils.JSONUtils;
 
 import org.apache.commons.collections4.CollectionUtils;
@@ -31,7 +32,6 @@ import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
@@ -44,7 +44,7 @@ import org.slf4j.LoggerFactory;
  */
 public class ExcelUtils {
 
-    public ExcelUtils() {
+    private ExcelUtils() {
         throw new IllegalStateException("Utility class");
     }
 
@@ -65,16 +65,14 @@ public class ExcelUtils {
 
         if (CollectionUtils.isEmpty(itemsList)) {
             logger.error("itemsList is null");
-            throw new RuntimeException("itemsList is null");
+            throw new AlertEmailException("itemsList is null");
         }
 
         LinkedHashMap<String, Object> headerMap = itemsList.get(0);
 
         List<String> headerList = new ArrayList<>();
 
-        Iterator<Map.Entry<String, Object>> iter = headerMap.entrySet().iterator();
-        while (iter.hasNext()) {
-            Map.Entry<String, Object> en = iter.next();
+        for (Map.Entry<String, Object> en : headerMap.entrySet()) {
             headerList.add(en.getKey());
         }
 
@@ -130,8 +128,7 @@ public class ExcelUtils {
             wb.write(fos);
 
         } catch (Exception e) {
-            logger.error("generate excel error", e);
-            throw new RuntimeException("generate excel error", e);
+            throw new AlertEmailException("generate excel error", e);
         } finally {
             if (wb != null) {
                 try {
@@ -150,4 +147,4 @@ public class ExcelUtils {
         }
     }
 
-}
\ No newline at end of file
+}
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/MailParamsConstants.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/MailParamsConstants.java
index 3eaa420..0bbbe10 100644
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/MailParamsConstants.java
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/MailParamsConstants.java
@@ -22,7 +22,7 @@ package org.apache.dolphinscheduler.plugin.alert.email;
  */
 public class MailParamsConstants {
 
-    public MailParamsConstants() {
+    private MailParamsConstants() {
         throw new IllegalStateException("Utility class");
     }
 
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/MailSender.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/MailSender.java
index 03765b2..192578f 100644
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/MailSender.java
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/MailSender.java
@@ -19,6 +19,7 @@ package org.apache.dolphinscheduler.plugin.alert.email;
 
 import static java.util.Objects.requireNonNull;
 
+import org.apache.dolphinscheduler.plugin.alert.email.exception.AlertEmailException;
 import org.apache.dolphinscheduler.plugin.alert.email.template.AlertTemplate;
 import org.apache.dolphinscheduler.plugin.alert.email.template.DefaultHTMLTemplate;
 import org.apache.dolphinscheduler.spi.alert.AlertConstants;
@@ -67,7 +68,7 @@ public class MailSender {
     private String mailProtocol = "SMTP";
     private String mailSmtpHost;
     private String mailSmtpPort;
-    private String mailSender;
+    private String mailSenderEmail;
     private String enableSmtpAuth;
     private String mailUser;
     private String mailPasswd;
@@ -77,12 +78,13 @@ public class MailSender {
     private String sslTrust;
     private String showType;
     private AlertTemplate alertTemplate;
+    private String mustNotNull = "must not be null";
 
     public MailSender(Map<String, String> config) {
 
         String receiversConfig = config.get(MailParamsConstants.NAME_PLUGIN_DEFAULT_EMAIL_RECEIVERS);
         if (receiversConfig == null || "".equals(receiversConfig)) {
-            throw new RuntimeException(MailParamsConstants.PLUGIN_DEFAULT_EMAIL_RECEIVERS + "must not be null");
+            throw new AlertEmailException(MailParamsConstants.PLUGIN_DEFAULT_EMAIL_RECEIVERS + mustNotNull);
         }
 
         receivers = Arrays.asList(receiversConfig.split(","));
@@ -95,33 +97,33 @@ public class MailSender {
         }
 
         mailSmtpHost = config.get(MailParamsConstants.NAME_MAIL_SMTP_HOST);
-        requireNonNull(mailSmtpHost, MailParamsConstants.MAIL_SMTP_HOST + " must not null");
+        requireNonNull(mailSmtpHost, MailParamsConstants.MAIL_SMTP_HOST + mustNotNull);
 
         mailSmtpPort = config.get(MailParamsConstants.NAME_MAIL_SMTP_PORT);
-        requireNonNull(mailSmtpPort, MailParamsConstants.MAIL_SMTP_PORT + " must not null");
+        requireNonNull(mailSmtpPort, MailParamsConstants.MAIL_SMTP_PORT + mustNotNull);
 
-        mailSender = config.get(MailParamsConstants.NAME_MAIL_SENDER);
-        requireNonNull(mailSender, MailParamsConstants.MAIL_SENDER + " must not null");
+        mailSenderEmail = config.get(MailParamsConstants.NAME_MAIL_SENDER);
+        requireNonNull(mailSenderEmail, MailParamsConstants.MAIL_SENDER + mustNotNull);
 
         enableSmtpAuth = config.get(MailParamsConstants.NAME_MAIL_SMTP_AUTH);
 
         mailUser = config.get(MailParamsConstants.NAME_MAIL_USER);
-        requireNonNull(mailUser, MailParamsConstants.MAIL_USER + " must not null");
+        requireNonNull(mailUser, MailParamsConstants.MAIL_USER + mustNotNull);
 
         mailPasswd = config.get(MailParamsConstants.NAME_MAIL_PASSWD);
-        requireNonNull(mailPasswd, MailParamsConstants.MAIL_PASSWD + " must not null");
+        requireNonNull(mailPasswd, MailParamsConstants.MAIL_PASSWD + mustNotNull);
 
         mailUseStartTLS = config.get(MailParamsConstants.NAME_MAIL_SMTP_STARTTLS_ENABLE);
-        requireNonNull(mailUseStartTLS, MailParamsConstants.MAIL_SMTP_STARTTLS_ENABLE + " must not null");
+        requireNonNull(mailUseStartTLS, MailParamsConstants.MAIL_SMTP_STARTTLS_ENABLE + mustNotNull);
 
         mailUseSSL = config.get(MailParamsConstants.NAME_MAIL_SMTP_SSL_ENABLE);
-        requireNonNull(mailUseSSL, MailParamsConstants.MAIL_SMTP_SSL_ENABLE + " must not null");
+        requireNonNull(mailUseSSL, MailParamsConstants.MAIL_SMTP_SSL_ENABLE + mustNotNull);
 
         sslTrust = config.get(MailParamsConstants.NAME_MAIL_SMTP_SSL_TRUST);
-        requireNonNull(sslTrust, MailParamsConstants.MAIL_SMTP_SSL_TRUST + " must not null");
+        requireNonNull(sslTrust, MailParamsConstants.MAIL_SMTP_SSL_TRUST + mustNotNull);
 
         showType = config.get(AlertConstants.SHOW_TYPE);
-        requireNonNull(showType, AlertConstants.SHOW_TYPE + " must not null");
+        requireNonNull(showType, AlertConstants.SHOW_TYPE + mustNotNull);
 
         xlsFilePath = config.get(EmailConstants.XLS_FILE_PATH);
         if (StringUtils.isBlank(xlsFilePath)) {
@@ -134,9 +136,8 @@ public class MailSender {
     /**
      * send mail to receivers
      *
-     * @param title   title
+     * @param title title
      * @param content content
-     * @return
      */
     public AlertResult sendMails(String title, String content) {
         return sendMails(this.receivers, this.receiverCcs, title, content);
@@ -145,9 +146,8 @@ public class MailSender {
     /**
      * send mail to receivers
      *
-     * @param title   email title
+     * @param title email title
      * @param content email content
-     * @return
      */
     public AlertResult sendMailsToReceiverOnly(String title, String content) {
         return sendMails(this.receivers, null, title, content);
@@ -156,11 +156,10 @@ public class MailSender {
     /**
      * send mail
      *
-     * @param receivers   receivers
+     * @param receivers receivers
      * @param receiverCcs receiverCcs
-     * @param title       title
-     * @param content     content
-     * @return
+     * @param title title
+     * @param content content
      */
     public AlertResult sendMails(List<String> receivers, List<String> receiverCcs, String title, String content) {
         AlertResult alertResult = new AlertResult();
@@ -180,7 +179,7 @@ public class MailSender {
             try {
                 Session session = getSession();
                 email.setMailSession(session);
-                email.setFrom(mailSender);
+                email.setFrom(mailSenderEmail);
                 email.setCharset(EmailConstants.UTF_8);
                 if (CollectionUtils.isNotEmpty(receivers)) {
                     // receivers mail
@@ -251,11 +250,6 @@ public class MailSender {
 
     /**
      * send mail as Excel attachment
-     *
-     * @param title
-     * @param content
-     * @param partContent
-     * @throws Exception
      */
     private void attachment(String title, String content, String partContent) throws Exception {
         MimeMessage msg = getMimeMessage();
@@ -265,9 +259,6 @@ public class MailSender {
 
     /**
      * get MimeMessage
-     *
-     * @return
-     * @throws MessagingException
      */
     private MimeMessage getMimeMessage() throws MessagingException {
 
@@ -279,7 +270,7 @@ public class MailSender {
         // 2. creating mail: Creating a MimeMessage
         MimeMessage msg = new MimeMessage(session);
         // 3. set sender
-        msg.setFrom(new InternetAddress(mailSender));
+        msg.setFrom(new InternetAddress(mailSenderEmail));
         // 4. set receivers
         for (String receiver : receivers) {
             msg.addRecipients(Message.RecipientType.TO, InternetAddress.parse(receiver));
@@ -317,16 +308,9 @@ public class MailSender {
 
     /**
      * attach content
-     *
-     * @param title
-     * @param content
-     * @param partContent
-     * @param msg
-     * @throws MessagingException
-     * @throws IOException
      */
     private void attachContent(String title, String content, String partContent, MimeMessage msg) throws MessagingException, IOException {
-        /**
+        /*
          * set receiverCc
          */
         if (CollectionUtils.isNotEmpty(receiverCcs)) {
@@ -365,21 +349,14 @@ public class MailSender {
 
     /**
      * the string object map
-     *
-     * @param title
-     * @param content
-     * @param alertResult
-     * @param email
-     * @return
-     * @throws EmailException
      */
     private AlertResult getStringObjectMap(String title, String content, AlertResult alertResult, HtmlEmail email) throws EmailException {
 
-        /**
+        /*
          * the subject of the message to be sent
          */
         email.setSubject(title);
-        /**
+        /*
          * to send information, you can use HTML tags in mail content because of the use of HtmlEmail
          */
         if (showType.equals(ShowType.TABLE.getDescp())) {
@@ -417,9 +394,6 @@ public class MailSender {
 
     /**
      * handle exception
-     *
-     * @param alertResult
-     * @param e
      */
     private void handleException(AlertResult alertResult, Exception e) {
         logger.error("Send email to {} failed", receivers, e);
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/OSUtils.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/exception/AlertEmailException.java
similarity index 61%
copy from dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/OSUtils.java
copy to dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/exception/AlertEmailException.java
index acf3e31..466ccc0 100644
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/OSUtils.java
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/exception/AlertEmailException.java
@@ -15,18 +15,26 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.plugin.alert.script;
+package org.apache.dolphinscheduler.plugin.alert.email.exception;
 
-/**
- * OSUtils
- */
-public class OSUtils {
+public class AlertEmailException extends RuntimeException {
 
-    public OSUtils() {
-        throw new UnsupportedOperationException("Construct OSUtils");
+    /**
+     * Create Runtime exception
+     *
+     * @param errMsg - Error message
+     */
+    public AlertEmailException(String errMsg) {
+        super(errMsg);
     }
 
-    static Boolean isWindows() {
-        return System.getProperty("os.name").startsWith("Windows");
+    /**
+     * Create Runtime exception
+     *
+     * @param errMsg - Error message
+     * @param cause - cause
+     */
+    public AlertEmailException(String errMsg, Throwable cause) {
+        super(errMsg, cause);
     }
 }
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/template/DefaultHTMLTemplate.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/template/DefaultHTMLTemplate.java
index 06decd6..57187aa 100644
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/template/DefaultHTMLTemplate.java
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-email/src/main/java/org/apache/dolphinscheduler/plugin/alert/email/template/DefaultHTMLTemplate.java
@@ -50,7 +50,7 @@ public class DefaultHTMLTemplate implements AlertTemplate {
             case TABLE:
                 return getTableTypeMessage(content, showAll);
             case TEXT:
-                return getTextTypeMessage(content, showAll);
+                return getTextTypeMessage(content);
             default:
                 throw new IllegalArgumentException(String.format("not support showType: %s in DefaultHTMLTemplate", showType));
         }
@@ -77,7 +77,7 @@ public class DefaultHTMLTemplate implements AlertTemplate {
             boolean flag = true;
 
             String title = "";
-            for (LinkedHashMap mapItems : mapItemsList) {
+            for (LinkedHashMap<String, Object> mapItems : mapItemsList) {
 
                 Set<Map.Entry<String, Object>> entries = mapItems.entrySet();
 
@@ -111,10 +111,9 @@ public class DefaultHTMLTemplate implements AlertTemplate {
      * get alert message which type is TEXT
      *
      * @param content message content
-     * @param showAll weather to show all
      * @return alert message
      */
-    private String getTextTypeMessage(String content, boolean showAll) {
+    private String getTextTypeMessage(String content) {
 
         if (StringUtils.isNotEmpty(content)) {
             ArrayNode list = JSONUtils.parseArray(content);
@@ -135,14 +134,14 @@ public class DefaultHTMLTemplate implements AlertTemplate {
     /**
      * get alert message from a html template
      *
-     * @param title   message title
+     * @param title message title
      * @param content message content
      * @return alert message which use html template
      */
     private String getMessageFromHtmlTemplate(String title, String content) {
 
         requireNonNull(content, "content must not null");
-        String htmlTableThead = StringUtils.isEmpty(title) ? "" : String.format("<thead>%s</thead>\n", title);
+        String htmlTableThead = StringUtils.isEmpty(title) ? "" : String.format("<thead>%s</thead>%n", title);
 
         return EmailConstants.HTML_HEADER_PREFIX + htmlTableThead + content + EmailConstants.TABLE_BODY_HTML_TAIL;
     }
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/OSUtils.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/OSUtils.java
index acf3e31..b881672 100644
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/OSUtils.java
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/OSUtils.java
@@ -22,7 +22,7 @@ package org.apache.dolphinscheduler.plugin.alert.script;
  */
 public class OSUtils {
 
-    public OSUtils() {
+    private OSUtils() {
         throw new UnsupportedOperationException("Construct OSUtils");
     }
 
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptParamsConstants.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptParamsConstants.java
index 98e4eee..5b096d5 100644
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptParamsConstants.java
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/ScriptParamsConstants.java
@@ -22,7 +22,7 @@ package org.apache.dolphinscheduler.plugin.alert.script;
  */
 public class ScriptParamsConstants {
 
-    public ScriptParamsConstants() {
+    private ScriptParamsConstants() {
         throw new IllegalStateException("Utility class");
     }
 
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/StreamGobbler.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/StreamGobbler.java
index 2ec2528..813e91a 100644
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/StreamGobbler.java
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/StreamGobbler.java
@@ -51,11 +51,11 @@ public class StreamGobbler extends Thread {
                 output.append(System.getProperty("line.separator"));
             }
             if (output.length() > 0) {
-                logger.info("out put msg is{}",output.toString());
+                logger.info("out put msg is{}", output);
             }
         } catch (IOException e) {
             logger.error("I/O error occurs {}", e.getMessage());
         }
     }
 
-}  
\ No newline at end of file
+}
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertConstants.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertConstants.java
index 904060c..9aec21b 100644
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertConstants.java
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertConstants.java
@@ -22,6 +22,10 @@ package org.apache.dolphinscheduler.plugin.alert.wechat;
  */
 public class WeChatAlertConstants {
 
+    private WeChatAlertConstants() {
+        throw new IllegalStateException(WeChatAlertConstants.class.getName());
+    }
+
     static final String MARKDOWN_QUOTE = ">";
 
     static final String MARKDOWN_ENTER = "\n";
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertParamsConstants.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertParamsConstants.java
index 138bd83..c254b27 100644
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertParamsConstants.java
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatAlertParamsConstants.java
@@ -22,6 +22,9 @@ package org.apache.dolphinscheduler.plugin.alert.wechat;
  */
 public class WeChatAlertParamsConstants {
 
+    private WeChatAlertParamsConstants() {
+        throw new IllegalStateException(WeChatAlertParamsConstants.class.getName());
+    }
 
     static final String ENTERPRISE_WE_CHAT_CORP_ID = "corp.id";
 
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatSender.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatSender.java
index f4fd090..6944da6 100644
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatSender.java
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/WeChatSender.java
@@ -19,6 +19,7 @@ package org.apache.dolphinscheduler.plugin.alert.wechat;
 
 import static java.util.Objects.requireNonNull;
 
+import org.apache.dolphinscheduler.plugin.alert.wechat.exception.WeChatAlertException;
 import org.apache.dolphinscheduler.spi.alert.AlertConstants;
 import org.apache.dolphinscheduler.spi.alert.AlertResult;
 import org.apache.dolphinscheduler.spi.alert.ShowType;
@@ -59,8 +60,6 @@ public class WeChatSender {
 
     private String weChatUsers;
 
-    private String weChatTeamSendMsg;
-
     private String weChatUserSendMsg;
 
     private String weChatTokenUrlReplace;
@@ -70,14 +69,14 @@ public class WeChatSender {
     private String showType;
 
 
-    private static final String agentIdRegExp = "{agentId}";
-    private static final String msgRegExp = "{msg}";
-    private static final String userRegExp = "{toUser}";
-    private static final String corpIdRegex = "{corpId}";
-    private static final String secretRegex = "{secret}";
-    private static final String toPartyRegex = "{toParty}";
-    private static final String toUserRegex = "{toUser}";
-    private static final String tokenRegex = "{token}";
+    private static final String MUST_NOT_NULL = " must not null";
+    private static final String ALERT_STATUS = "false";
+    private static final String AGENT_ID_REG_EXP = "{agentId}";
+    private static final String MSG_REG_EXP = "{msg}";
+    private static final String USER_REG_EXP = "{toUser}";
+    private static final String CORP_ID_REGEX = "{corpId}";
+    private static final String SECRET_REGEX = "{secret}";
+    private static final String TOKEN_REGEX = "{token}";
 
     WeChatSender(Map<String, String> config) {
         weChatAgentId = config.get(WeChatAlertParamsConstants.NAME_ENTERPRISE_WE_CHAT_AGENT_ID);
@@ -85,13 +84,12 @@ public class WeChatSender {
         String weChatCorpId = config.get(WeChatAlertParamsConstants.NAME_ENTERPRISE_WE_CHAT_CORP_ID);
         String weChatSecret = config.get(WeChatAlertParamsConstants.NAME_ENTERPRISE_WE_CHAT_SECRET);
         String weChatTokenUrl = WeChatAlertConstants.WE_CHAT_TOKEN_URL;
-        weChatTeamSendMsg = config.get(WeChatAlertParamsConstants.NAME_ENTERPRISE_WE_CHAT_TEAM_SEND_MSG);
         weChatUserSendMsg = config.get(WeChatAlertParamsConstants.NAME_ENTERPRISE_WE_CHAT_USER_SEND_MSG);
         showType = config.get(AlertConstants.SHOW_TYPE);
-        requireNonNull(showType, AlertConstants.SHOW_TYPE + " must not null");
+        requireNonNull(showType, AlertConstants.SHOW_TYPE + MUST_NOT_NULL);
         weChatTokenUrlReplace = weChatTokenUrl
-            .replace(corpIdRegex, weChatCorpId)
-            .replace(secretRegex, weChatSecret);
+            .replace(CORP_ID_REGEX, weChatCorpId)
+            .replace(SECRET_REGEX, weChatSecret);
         weChatToken = getToken();
     }
 
@@ -105,16 +103,15 @@ public class WeChatSender {
      */
     private String makeUserSendMsg(Collection<String> toUser, String agentId, String msg) {
         String listUser = mkString(toUser);
-        return weChatUserSendMsg.replace(userRegExp, listUser)
-            .replace(agentIdRegExp, agentId)
-            .replace(msgRegExp, msg);
+        return weChatUserSendMsg.replace(USER_REG_EXP, listUser)
+            .replace(AGENT_ID_REG_EXP, agentId)
+            .replace(MSG_REG_EXP, msg);
     }
 
     /**
      * send Enterprise WeChat
      *
      * @return Enterprise WeChat resp, demo: {"errcode":0,"errmsg":"ok","invaliduser":""}
-     * @throws Exception the Exception
      */
     public AlertResult sendEnterpriseWeChat(String title, String content) {
         AlertResult alertResult;
@@ -124,10 +121,10 @@ public class WeChatSender {
         if (null == weChatToken) {
             alertResult = new AlertResult();
             alertResult.setMessage("send we chat alert fail,get weChat token error");
-            alertResult.setStatus("false");
+            alertResult.setStatus(ALERT_STATUS);
             return alertResult;
         }
-        String enterpriseWeChatPushUrlReplace = WeChatAlertConstants.WE_CHAT_PUSH_URL.replace(tokenRegex, weChatToken);
+        String enterpriseWeChatPushUrlReplace = WeChatAlertConstants.WE_CHAT_PUSH_URL.replace(TOKEN_REGEX, weChatToken);
 
         try {
             return checkWeChatSendMsgResult(post(enterpriseWeChatPushUrlReplace, msg));
@@ -135,7 +132,7 @@ public class WeChatSender {
             logger.info("send we chat alert msg  exception : {}", e.getMessage());
             alertResult = new AlertResult();
             alertResult.setMessage("send we chat alert fail");
-            alertResult.setStatus("false");
+            alertResult.setStatus(ALERT_STATUS);
         }
         return alertResult;
     }
@@ -170,7 +167,7 @@ public class WeChatSender {
         List<LinkedHashMap> mapItemsList = JSONUtils.toList(content, LinkedHashMap.class);
         if (null == mapItemsList || mapItemsList.isEmpty()) {
             logger.error("itemsList is null");
-            throw new RuntimeException("itemsList is null");
+            throw new WeChatAlertException("itemsList is null");
         }
         StringBuilder contents = new StringBuilder(200);
         for (LinkedHashMap mapItems : mapItemsList) {
@@ -259,7 +256,7 @@ public class WeChatSender {
                 EntityUtils.consume(entity);
             }
 
-            HashMap map = JSONUtils.parseObject(resp, HashMap.class);
+            HashMap<String, Object> map = JSONUtils.parseObject(resp, HashMap.class);
             if (map != null && null != map.get("access_token")) {
                 return map.get("access_token").toString();
             } else {
@@ -310,7 +307,7 @@ public class WeChatSender {
 
     private static AlertResult checkWeChatSendMsgResult(String result) {
         AlertResult alertResult = new AlertResult();
-        alertResult.setStatus("false");
+        alertResult.setStatus(ALERT_STATUS);
 
         if (null == result) {
             alertResult.setMessage("we chat send fail");
@@ -328,7 +325,7 @@ public class WeChatSender {
             alertResult.setMessage("we chat alert send success");
             return alertResult;
         }
-        alertResult.setStatus("false");
+        alertResult.setStatus(ALERT_STATUS);
         alertResult.setMessage(sendMsgResponse.getErrmsg());
         return alertResult;
     }
diff --git a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/OSUtils.java b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/exception/WeChatAlertException.java
similarity index 73%
copy from dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/OSUtils.java
copy to dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/exception/WeChatAlertException.java
index acf3e31..f36bc2f 100644
--- a/dolphinscheduler-alert-plugin/dolphinscheduler-alert-script/src/main/java/org/apache/dolphinscheduler/plugin/alert/script/OSUtils.java
+++ b/dolphinscheduler-alert-plugin/dolphinscheduler-alert-wechat/src/main/java/org/apache/dolphinscheduler/plugin/alert/wechat/exception/WeChatAlertException.java
@@ -15,18 +15,16 @@
  * limitations under the License.
  */
 
-package org.apache.dolphinscheduler.plugin.alert.script;
+package org.apache.dolphinscheduler.plugin.alert.wechat.exception;
 
-/**
- * OSUtils
- */
-public class OSUtils {
-
-    public OSUtils() {
-        throw new UnsupportedOperationException("Construct OSUtils");
-    }
+public class WeChatAlertException extends RuntimeException {
 
-    static Boolean isWindows() {
-        return System.getProperty("os.name").startsWith("Windows");
+    /**
+     * Create Runtime Exception
+     *
+     * @param errMsg - Error message
+     */
+    public WeChatAlertException(String errMsg) {
+        super(errMsg);
     }
 }
diff --git a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/utils/JSONUtils.java b/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/utils/JSONUtils.java
index 6542ef8..89d6e50 100644
--- a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/utils/JSONUtils.java
+++ b/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/utils/JSONUtils.java
@@ -58,7 +58,7 @@ public class JSONUtils {
     /**
      * json representation of object
      *
-     * @param object  object
+     * @param object object
      * @param feature feature
      * @return object to json string
      */
@@ -81,9 +81,9 @@ public class JSONUtils {
      * the fields of the specified object are generics, just the object itself should not be a
      * generic type.
      *
-     * @param json  the string from which the object is to be deserialized
+     * @param json the string from which the object is to be deserialized
      * @param clazz the class of T
-     * @param <T>   T
+     * @param <T> T
      * @return an object of type T from the string
      * classOfT
      */
@@ -103,9 +103,9 @@ public class JSONUtils {
     /**
      * json to list
      *
-     * @param json  json string
+     * @param json json string
      * @param clazz class
-     * @param <T>   T
+     * @param <T> T
      * @return list
      */
     public static <T> List<T> toList(String json, Class<T> clazz) {
@@ -153,4 +153,4 @@ public class JSONUtils {
             throw new RuntimeException("Json deserialization exception.", e);
         }
     }
-}
\ No newline at end of file
+}