You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by sh...@apache.org on 2022/06/30 11:42:55 UTC

[servicecomb-java-chassis] branch master updated: [SCB-2626] make spotbugs check integrations (#3163)

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

shoothzj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git


The following commit(s) were added to refs/heads/master by this push:
     new 42d3dfe30 [SCB-2626] make spotbugs check integrations (#3163)
42d3dfe30 is described below

commit 42d3dfe301e3d4903b670484129ffbff6b000f2e
Author: TingTing Wang <19...@qq.com>
AuthorDate: Thu Jun 30 19:42:50 2022 +0800

    [SCB-2626] make spotbugs check integrations (#3163)
---
 .github/workflows/spotbugs.yml                     |  2 +-
 ci/spotbugs/exclude.xml                            | 79 ++++++++++++++++++++--
 .../demo/filter/retry/TestRetrySchema.java         |  6 +-
 .../client/beanParam/BeanParamPojoClient.java      |  7 +-
 .../beanParam/BeanParamRestTemplateClient.java     |  7 +-
 .../demo/jaxrs/server/CodeFirstJaxrs.java          | 10 +--
 .../servicecomb/demo/jaxrs/server/ComputeImpl.java |  9 +--
 .../LocalRegistryServerTest.java                   |  2 -
 .../pojo/client/TestNotRecommendedService.java     |  3 +-
 .../demo/pojo/server/CodeFirstPojo.java            |  6 +-
 .../demo/springmvc/client/TestRetrySchema.java     |  6 +-
 .../demo/springmvc/server/CodeFirstSpringmvc.java  | 10 +--
 .../org/apache/servicecomb/it/CommandReceiver.java |  3 +-
 .../apache/servicecomb/it/deploy/NormalDeploy.java |  3 +-
 .../servicecomb/it/deploy/SubProcessLogger.java    |  3 +-
 .../servicecomb/it/testcase/TestDownload.java      | 30 ++++----
 .../servicecomb/it/schema/DownloadSchema.java      |  4 +-
 17 files changed, 130 insertions(+), 60 deletions(-)

diff --git a/.github/workflows/spotbugs.yml b/.github/workflows/spotbugs.yml
index a2bc42286..94874222f 100644
--- a/.github/workflows/spotbugs.yml
+++ b/.github/workflows/spotbugs.yml
@@ -35,4 +35,4 @@ jobs:
           java-version: '8'
           distribution: 'temurin'
       - name: spotbugs
-        run: mvn -B -DskipTests clean verify spotbugs:spotbugs
+        run: mvn -B -Pit -DskipTests clean verify spotbugs:spotbugs
diff --git a/ci/spotbugs/exclude.xml b/ci/spotbugs/exclude.xml
index 1b33321b7..0bd133211 100644
--- a/ci/spotbugs/exclude.xml
+++ b/ci/spotbugs/exclude.xml
@@ -43,6 +43,30 @@
         <Bug pattern="DC_PARTIALLY_CONSTRUCTED"/>
     </Match>
 
+    <Match>
+        <Bug pattern="DM_DEFAULT_ENCODING"/>
+        <Class name="org.apache.servicecomb.demo.jaxrs.server.beanParam.BeanParamTestService"/>
+    </Match>
+
+    <Match>
+        <Bug pattern="DM_DEFAULT_ENCODING"/>
+        <Class name="org.apache.servicecomb.it.deploy.Deploys"/>
+    </Match>
+
+    <Match>
+        <Bug pattern="DM_DEFAULT_ENCODING"/>
+        <Class name="org.apache.servicecomb.it.testcase.TestParamCodecEdge"/>
+    </Match>
+
+    <Match>
+        <Bug pattern="DM_DEFAULT_ENCODING"/>
+        <Class name="org.apache.servicecomb.it.testcase.TestRestServerConfigEdge"/>
+    </Match>
+
+    <Match>
+        <Bug pattern="DM_EXIT"/>
+    </Match>
+
     <Match>
         <Bug pattern="EC_UNRELATED_TYPES"/>
     </Match>
@@ -115,14 +139,41 @@
         <Bug pattern="MS_PKGPROTECT"/>
     </Match>
 
+    <Match>
+        <Bug pattern="NM_CLASS_NOT_EXCEPTION"/>
+    </Match>
+
+    <Match>
+        <Bug pattern="NM_METHOD_NAMING_CONVENTION"/>
+    </Match>
+
     <Match>
         <Bug pattern="NM_SAME_SIMPLE_NAME_AS_SUPERCLASS"/>
     </Match>
 
+    <Match>
+        <Bug pattern="NP_NONNULL_PARAM_VIOLATION"/>
+        <Class name="org.apache.servicecomb.it.testcase.objectparams.TestJAXRSObjectParamType"/>
+    </Match>
+
+    <Match>
+        <Bug pattern="NP_NONNULL_PARAM_VIOLATION"/>
+        <Class name="org.apache.servicecomb.it.testcase.objectparams.TestRPCObjectParamType"/>
+    </Match>
+
+    <Match>
+        <Bug pattern="NP_NONNULL_PARAM_VIOLATION"/>
+        <Class name="org.apache.servicecomb.it.testcase.objectparams.TestSpringMVCObjectParamType"/>
+    </Match>
+
     <Match>
         <Bug pattern="NP_NONNULL_RETURN_VIOLATION"/>
     </Match>
 
+    <Match>
+        <Bug pattern="NP_NULL_ON_SOME_PATH"/>
+    </Match>
+
     <Match>
         <Bug pattern="NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE"/>
     </Match>
@@ -143,6 +194,11 @@
         <Bug pattern="RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE"/>
     </Match>
 
+    <Match>
+        <Bug pattern="REC_CATCH_EXCEPTION"/>
+        <Class name="org.apache.servicecomb.demo.springmvc.SpringmvcClient"/>
+    </Match>
+
     <Match>
         <Bug pattern="REFLC_REFLECTION_MAY_INCREASE_ACCESSIBILITY_OF_CLASS"/>
     </Match>
@@ -151,10 +207,19 @@
         <Bug pattern="RV_NEGATING_RESULT_OF_COMPARETO"/>
     </Match>
 
+    <Match>
+        <Bug pattern="RV_RETURN_VALUE_IGNORED"/>
+    </Match>
+
     <Match>
         <Bug pattern="SE_BAD_FIELD"/>
     </Match>
 
+    <Match>
+        <Bug pattern="SR_NOT_CHECKED"/>
+        <Class name="org.apache.servicecomb.demo.springmvc.client.ConsumerTestsAfterBootup"/>
+    </Match>
+
     <Match>
         <Bug pattern="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD"/>
     </Match>
@@ -168,31 +233,31 @@
     </Match>
 
     <Match>
-        <Bug pattern="URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"/>
+        <Bug pattern="THROWS_METHOD_THROWS_CLAUSE_BASIC_EXCEPTION"/>
     </Match>
 
     <Match>
-        <Bug pattern="UUF_UNUSED_PUBLIC_OR_PROTECTED_FIELD"/>
+        <Bug pattern="THROWS_METHOD_THROWS_CLAUSE_THROWABLE"/>
     </Match>
 
     <Match>
-        <Bug pattern="UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD"/>
+        <Bug pattern="THROWS_METHOD_THROWS_RUNTIMEEXCEPTION"/>
     </Match>
 
     <Match>
-        <Bug pattern="VA_FORMAT_STRING_USES_NEWLINE"/>
+        <Bug pattern="URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"/>
     </Match>
 
     <Match>
-        <Bug pattern="THROWS_METHOD_THROWS_CLAUSE_BASIC_EXCEPTION"/>
+        <Bug pattern="UUF_UNUSED_PUBLIC_OR_PROTECTED_FIELD"/>
     </Match>
 
     <Match>
-        <Bug pattern="THROWS_METHOD_THROWS_CLAUSE_THROWABLE"/>
+        <Bug pattern="UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD"/>
     </Match>
 
     <Match>
-        <Bug pattern="THROWS_METHOD_THROWS_RUNTIMEEXCEPTION"/>
+        <Bug pattern="VA_FORMAT_STRING_USES_NEWLINE"/>
     </Match>
 
 </FindBugsFilter>
diff --git a/demo/demo-filter/filter-client/src/main/java/org/apache/servicecomb/demo/filter/retry/TestRetrySchema.java b/demo/demo-filter/filter-client/src/main/java/org/apache/servicecomb/demo/filter/retry/TestRetrySchema.java
index 108774a6e..0ee6a7fc3 100644
--- a/demo/demo-filter/filter-client/src/main/java/org/apache/servicecomb/demo/filter/retry/TestRetrySchema.java
+++ b/demo/demo-filter/filter-client/src/main/java/org/apache/servicecomb/demo/filter/retry/TestRetrySchema.java
@@ -38,7 +38,7 @@ public class TestRetrySchema implements CategorizedTestCase {
 
   RestTemplate restTemplate = RestTemplateBuilder.create();
 
-  final String server = "servicecomb://filterServer";
+  private static final String SERVER = "servicecomb://filterServer";
 
   @Override
   public void testAllTransport() throws Exception {
@@ -55,7 +55,7 @@ public class TestRetrySchema implements CategorizedTestCase {
   }
 
   private void testRetryGovernanceRestTemplate() {
-    TestMgr.check(restTemplate.getForObject(server + "/retry/governance/successWhenRetry", boolean.class), true);
-    TestMgr.check(restTemplate.getForObject(server + "/retry/governance/successWhenRetry", boolean.class), true);
+    TestMgr.check(restTemplate.getForObject(SERVER + "/retry/governance/successWhenRetry", boolean.class), true);
+    TestMgr.check(restTemplate.getForObject(SERVER + "/retry/governance/successWhenRetry", boolean.class), true);
   }
 }
diff --git a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/beanParam/BeanParamPojoClient.java b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/beanParam/BeanParamPojoClient.java
index 9e09bc14d..5f3448733 100644
--- a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/beanParam/BeanParamPojoClient.java
+++ b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/beanParam/BeanParamPojoClient.java
@@ -19,6 +19,7 @@ package org.apache.servicecomb.demo.jaxrs.client.beanParam;
 
 import java.io.BufferedInputStream;
 import java.io.ByteArrayInputStream;
+import java.nio.charset.StandardCharsets;
 
 import org.apache.servicecomb.demo.CategorizedTestCase;
 import org.apache.servicecomb.demo.TestMgr;
@@ -58,9 +59,9 @@ public class BeanParamPojoClient implements CategorizedTestCase {
   }
 
   private void testUpload() {
-    BufferedInputStream bufferedInputStream0 = new BufferedInputStream(new ByteArrayInputStream("up0".getBytes()));
-    BufferedInputStream bufferedInputStream1 = new BufferedInputStream(new ByteArrayInputStream("up1".getBytes()));
-    BufferedInputStream bufferedInputStream2 = new BufferedInputStream(new ByteArrayInputStream("up2".getBytes()));
+    BufferedInputStream bufferedInputStream0 = new BufferedInputStream(new ByteArrayInputStream("up0".getBytes(StandardCharsets.UTF_8)));
+    BufferedInputStream bufferedInputStream1 = new BufferedInputStream(new ByteArrayInputStream("up1".getBytes(StandardCharsets.UTF_8)));
+    BufferedInputStream bufferedInputStream2 = new BufferedInputStream(new ByteArrayInputStream("up2".getBytes(StandardCharsets.UTF_8)));
 
     String result = beanParamTestServiceIntf.beanParameterTestUpload(
         bufferedInputStream0, "queryTest", bufferedInputStream1, bufferedInputStream2, "ex");
diff --git a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/beanParam/BeanParamRestTemplateClient.java b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/beanParam/BeanParamRestTemplateClient.java
index 69c505764..33e8d9f5a 100644
--- a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/beanParam/BeanParamRestTemplateClient.java
+++ b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/beanParam/BeanParamRestTemplateClient.java
@@ -19,6 +19,7 @@ package org.apache.servicecomb.demo.jaxrs.client.beanParam;
 
 import java.io.BufferedInputStream;
 import java.io.ByteArrayInputStream;
+import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -76,9 +77,9 @@ public class BeanParamRestTemplateClient implements CategorizedTestCase {
   }
 
   private void testUpload() {
-    BufferedInputStream bufferedInputStream0 = new BufferedInputStream(new ByteArrayInputStream("up0".getBytes()));
-    BufferedInputStream bufferedInputStream1 = new BufferedInputStream(new ByteArrayInputStream("up1".getBytes()));
-    BufferedInputStream bufferedInputStream2 = new BufferedInputStream(new ByteArrayInputStream("up2".getBytes()));
+    BufferedInputStream bufferedInputStream0 = new BufferedInputStream(new ByteArrayInputStream("up0".getBytes(StandardCharsets.UTF_8)));
+    BufferedInputStream bufferedInputStream1 = new BufferedInputStream(new ByteArrayInputStream("up1".getBytes(StandardCharsets.UTF_8)));
+    BufferedInputStream bufferedInputStream2 = new BufferedInputStream(new ByteArrayInputStream("up2".getBytes(StandardCharsets.UTF_8)));
 
     HashMap<String, Object> formData = new HashMap<>();
     formData.put("up0", bufferedInputStream0);
diff --git a/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/CodeFirstJaxrs.java b/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/CodeFirstJaxrs.java
index 8db55857c..3fedafd9d 100644
--- a/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/CodeFirstJaxrs.java
+++ b/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/CodeFirstJaxrs.java
@@ -150,7 +150,7 @@ public class CodeFirstJaxrs {
   public String testRawJsonString(String jsonInput) {
     Map<String, String> person;
     try {
-      person = RestObjectMapperFactory.getRestObjectMapper().readValue(jsonInput.getBytes(), Map.class);
+      person = RestObjectMapperFactory.getRestObjectMapper().readValue(jsonInput.getBytes(StandardCharsets.UTF_8), Map.class);
     } catch (Exception e) {
       e.printStackTrace();
       return null;
@@ -187,11 +187,11 @@ public class CodeFirstJaxrs {
   @DELETE
   @Produces(MediaType.TEXT_PLAIN)
   public String addString(@QueryParam("s") List<String> s) {
-    String result = "";
+    StringBuilder result = new StringBuilder();
     for (String x : s) {
-      result += x;
+      result.append(x);
     }
-    return result;
+    return result.toString();
   }
 
   @Path("/ignore")
@@ -209,7 +209,7 @@ public class CodeFirstJaxrs {
   public String testRawJsonAnnotation(@RawJsonRequestBody String jsonInput) {
     Map<String, String> person;
     try {
-      person = RestObjectMapperFactory.getRestObjectMapper().readValue(jsonInput.getBytes(), Map.class);
+      person = RestObjectMapperFactory.getRestObjectMapper().readValue(jsonInput.getBytes(StandardCharsets.UTF_8), Map.class);
     } catch (Exception e) {
       e.printStackTrace();
       return null;
diff --git a/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/ComputeImpl.java b/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/ComputeImpl.java
index 9797901b0..af5a2774d 100644
--- a/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/ComputeImpl.java
+++ b/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/ComputeImpl.java
@@ -17,6 +17,7 @@
 
 package org.apache.servicecomb.demo.jaxrs.server;
 
+import java.nio.charset.StandardCharsets;
 import java.util.Map;
 
 import javax.servlet.http.HttpServletRequest;
@@ -73,7 +74,7 @@ public class ComputeImpl {
   public String testRawJsonString(String jsonInput) {
     Map<String, String> person;
     try {
-      person = RestObjectMapperFactory.getRestObjectMapper().readValue(jsonInput.getBytes(), Map.class);
+      person = RestObjectMapperFactory.getRestObjectMapper().readValue(jsonInput.getBytes(StandardCharsets.UTF_8), Map.class);
     } catch (Exception e) {
       e.printStackTrace();
       return null;
@@ -116,10 +117,10 @@ public class ComputeImpl {
   @DELETE
   @Produces(MediaType.TEXT_PLAIN)
   public String addString(@QueryParam("s") String[] s) {
-    String result = "";
+    StringBuilder result = new StringBuilder();
     for (String x : s) {
-      result += x;
+      result.append(x);
     }
-    return result;
+    return result.toString();
   }
 }
diff --git a/demo/demo-local-registry/demo-local-registry-client/src/main/java/org/apache/servicecomb/demo/localRegistryClient/LocalRegistryServerTest.java b/demo/demo-local-registry/demo-local-registry-client/src/main/java/org/apache/servicecomb/demo/localRegistryClient/LocalRegistryServerTest.java
index 71886be65..c50508cc0 100644
--- a/demo/demo-local-registry/demo-local-registry-client/src/main/java/org/apache/servicecomb/demo/localRegistryClient/LocalRegistryServerTest.java
+++ b/demo/demo-local-registry/demo-local-registry-client/src/main/java/org/apache/servicecomb/demo/localRegistryClient/LocalRegistryServerTest.java
@@ -39,8 +39,6 @@ public class LocalRegistryServerTest implements CategorizedTestCase {
   @RpcReference(microserviceName = "demo-local-registry-server-bean2", schemaId = "CodeFirstEndpoint2")
   private CodeFirstService codeFirstServiceBean2;
 
-  RestTemplate template = RestTemplateBuilder.create();
-
   @Override
   public void testRestTransport() throws Exception {
     testServerGetName();
diff --git a/demo/demo-pojo/pojo-client/src/main/java/org/apache/servicecomb/demo/pojo/client/TestNotRecommendedService.java b/demo/demo-pojo/pojo-client/src/main/java/org/apache/servicecomb/demo/pojo/client/TestNotRecommendedService.java
index b1771fac6..59d9a8f92 100644
--- a/demo/demo-pojo/pojo-client/src/main/java/org/apache/servicecomb/demo/pojo/client/TestNotRecommendedService.java
+++ b/demo/demo-pojo/pojo-client/src/main/java/org/apache/servicecomb/demo/pojo/client/TestNotRecommendedService.java
@@ -53,9 +53,10 @@ public class TestNotRecommendedService implements CategorizedTestCase {
     data.put(100L, model);
 
     List<AbstractModel> data2 = new ArrayList<>();
+
     AbstractModel model2 = new DefaultAbstractModel();
     model2.setName("hello");
-    data2.add(model);
+    data2.add(model2);
 
     WrappedAbstractModel input = new WrappedAbstractModel();
     input.setMapModel(data);
diff --git a/demo/demo-pojo/pojo-server/src/main/java/org/apache/servicecomb/demo/pojo/server/CodeFirstPojo.java b/demo/demo-pojo/pojo-server/src/main/java/org/apache/servicecomb/demo/pojo/server/CodeFirstPojo.java
index 0beb9e6b4..df1111f3c 100644
--- a/demo/demo-pojo/pojo-server/src/main/java/org/apache/servicecomb/demo/pojo/server/CodeFirstPojo.java
+++ b/demo/demo-pojo/pojo-server/src/main/java/org/apache/servicecomb/demo/pojo/server/CodeFirstPojo.java
@@ -140,10 +140,10 @@ public class CodeFirstPojo implements CodeFirstPojoIntf {
   }
 
   public String addString(List<String> s) {
-    String result = "";
+    StringBuilder result = new StringBuilder();
     for (String x : s) {
-      result += x;
+      result.append(x);
     }
-    return result;
+    return result.toString();
   }
 }
diff --git a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestRetrySchema.java b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestRetrySchema.java
index e103d7036..f6a597a85 100644
--- a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestRetrySchema.java
+++ b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestRetrySchema.java
@@ -38,7 +38,7 @@ public class TestRetrySchema implements CategorizedTestCase {
 
   RestTemplate restTemplate = RestTemplateBuilder.create();
 
-  final String server = "servicecomb://springmvc";
+  private static final String SERVER = "servicecomb://springmvc";
 
   @Override
   public void testAllTransport() throws Exception {
@@ -55,7 +55,7 @@ public class TestRetrySchema implements CategorizedTestCase {
   }
 
   private void testRetryGovernanceRestTemplate() {
-    TestMgr.check(restTemplate.getForObject(server + "/retry/governance/successWhenRetry", boolean.class), true);
-    TestMgr.check(restTemplate.getForObject(server + "/retry/governance/successWhenRetry", boolean.class), true);
+    TestMgr.check(restTemplate.getForObject(SERVER + "/retry/governance/successWhenRetry", boolean.class), true);
+    TestMgr.check(restTemplate.getForObject(SERVER + "/retry/governance/successWhenRetry", boolean.class), true);
   }
 }
diff --git a/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/CodeFirstSpringmvc.java b/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/CodeFirstSpringmvc.java
index 072ff0d0f..27b809187 100644
--- a/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/CodeFirstSpringmvc.java
+++ b/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/server/CodeFirstSpringmvc.java
@@ -240,7 +240,7 @@ public class CodeFirstSpringmvc {
   public String testRawJsonString(String jsonInput) {
     Map<String, String> person;
     try {
-      person = RestObjectMapperFactory.getRestObjectMapper().readValue(jsonInput.getBytes(), Map.class);
+      person = RestObjectMapperFactory.getRestObjectMapper().readValue(jsonInput.getBytes(StandardCharsets.UTF_8), Map.class);
     } catch (Exception e) {
       e.printStackTrace();
       return null;
@@ -283,11 +283,11 @@ public class CodeFirstSpringmvc {
 
   @DeleteMapping(path = "/addstring", produces = MediaType.TEXT_PLAIN_VALUE)
   public String addString(@RequestParam(name = "s") List<String> s) {
-    String result = "";
+    StringBuilder result = new StringBuilder();
     for (String x : s) {
-      result += x;
+      result.append(x);
     }
-    return result;
+    return result.toString();
   }
 
   // Using 490, 590 error code, the response type should be CommonExceptionData. Or we need
@@ -360,7 +360,7 @@ public class CodeFirstSpringmvc {
   public String testRawJsonAnnotation(@RawJsonRequestBody String jsonInput) {
     Map<String, String> person;
     try {
-      person = RestObjectMapperFactory.getRestObjectMapper().readValue(jsonInput.getBytes(), Map.class);
+      person = RestObjectMapperFactory.getRestObjectMapper().readValue(jsonInput.getBytes(StandardCharsets.UTF_8), Map.class);
     } catch (Exception e) {
       e.printStackTrace();
       return null;
diff --git a/integration-tests/it-common/src/main/java/org/apache/servicecomb/it/CommandReceiver.java b/integration-tests/it-common/src/main/java/org/apache/servicecomb/it/CommandReceiver.java
index b145ba6ce..ac6b98465 100644
--- a/integration-tests/it-common/src/main/java/org/apache/servicecomb/it/CommandReceiver.java
+++ b/integration-tests/it-common/src/main/java/org/apache/servicecomb/it/CommandReceiver.java
@@ -19,6 +19,7 @@ package org.apache.servicecomb.it;
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.servicecomb.core.SCBEngine;
@@ -49,7 +50,7 @@ public class CommandReceiver {
   }
 
   private void doRun() throws IOException {
-    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
+    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8));
     String line;
     while ((line = reader.readLine()) != null) {
       try {
diff --git a/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/deploy/NormalDeploy.java b/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/deploy/NormalDeploy.java
index ec2b4677b..9986a035e 100644
--- a/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/deploy/NormalDeploy.java
+++ b/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/deploy/NormalDeploy.java
@@ -21,6 +21,7 @@ import java.io.BufferedWriter;
 import java.io.File;
 import java.io.IOException;
 import java.io.OutputStreamWriter;
+import java.nio.charset.StandardCharsets;
 import java.util.Collections;
 import java.util.List;
 
@@ -55,7 +56,7 @@ public class NormalDeploy {
     this.prevFailCount = ITJUnitUtils.getFailures().size();
     LOGGER.info("createProcessBuilder: " + StringUtils.join(cmds, " ") + "\nWorkDir: " + deployDefinition.getWorkDir());
     subProcess = createProcessBuilder(cmds).start();
-    subProcessCommandWriter = new BufferedWriter(new OutputStreamWriter(subProcess.getOutputStream()));
+    subProcessCommandWriter = new BufferedWriter(new OutputStreamWriter(subProcess.getOutputStream(), StandardCharsets.UTF_8));
     subProcessLogger = new SubProcessLogger(deployDefinition.getDisplayName(), subProcess.getInputStream(),
         deployDefinition.getStartCompleteLog());
   }
diff --git a/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/deploy/SubProcessLogger.java b/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/deploy/SubProcessLogger.java
index 420a6ad7c..577fc3ce4 100644
--- a/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/deploy/SubProcessLogger.java
+++ b/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/deploy/SubProcessLogger.java
@@ -22,6 +22,7 @@ import java.io.Closeable;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
@@ -50,7 +51,7 @@ public class SubProcessLogger implements Closeable {
     this.startCompleteLog = startCompleteLog;
 
     BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
-    this.reader = new BufferedReader(new InputStreamReader(bufferedInputStream));
+    this.reader = new BufferedReader(new InputStreamReader(bufferedInputStream, StandardCharsets.UTF_8));
 
     thread = new Thread(this::run, "SubProcessLogger-" + displayName);
     thread.start();
diff --git a/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/testcase/TestDownload.java b/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/testcase/TestDownload.java
index 31136077b..166214961 100644
--- a/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/testcase/TestDownload.java
+++ b/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/testcase/TestDownload.java
@@ -42,12 +42,12 @@ import org.springframework.http.ResponseEntity;
 import com.google.common.collect.Iterables;
 
 public class TestDownload {
-  private File dir = new File("target/download");
+  private final File dir = new File("target/download");
 
-  private static Consumers<DownloadSchemaIntf> consumers = new Consumers<>("download",
+  private static final Consumers<DownloadSchemaIntf> CONSUMERS = new Consumers<>("download",
       DownloadSchemaIntf.class);
 
-  private List<CompletableFuture<?>> futures = new ArrayList<>();
+  private final List<CompletableFuture<?>> futures = new ArrayList<>();
 
   private final String content = "file content";
 
@@ -86,7 +86,7 @@ public class TestDownload {
         value = readFileToString(file);
         file.delete();
       } else if (byte[].class.isInstance(value)) {
-        value = new String((byte[]) value);
+        value = new String((byte[]) value, StandardCharsets.UTF_8);
       }
 
       Assertions.assertEquals(content, value, getStackTrace(error));
@@ -96,7 +96,7 @@ public class TestDownload {
   }
 
   private ReadStreamPart templateGet(String methodPath) {
-    return consumers.getSCBRestTemplate()
+    return CONSUMERS.getSCBRestTemplate()
         .getForObject("/" + methodPath + "?content={content}",
             ReadStreamPart.class,
             content);
@@ -106,7 +106,7 @@ public class TestDownload {
     HttpHeaders headers = new HttpHeaders();
     headers.add("accept", type);
     HttpEntity<?> entity = new HttpEntity<>(headers);
-    ResponseEntity<ReadStreamPart> response = consumers.getSCBRestTemplate()
+    ResponseEntity<ReadStreamPart> response = CONSUMERS.getSCBRestTemplate()
         .exchange("/" + methodPath + "?content={content}",
             HttpMethod.GET,
             entity,
@@ -117,23 +117,23 @@ public class TestDownload {
   @Test
   @SuppressWarnings("unchecked")
   public void runRest() {
-    futures.add(checkFile(consumers.getIntf().tempFileEntity(content)));
+    futures.add(checkFile(CONSUMERS.getIntf().tempFileEntity(content)));
     futures.add(checkFuture(templateGet("tempFileEntity").saveAsBytes()));
     futures.add(checkFuture(templateExchange("tempFileEntity", MediaType.TEXT_PLAIN_VALUE).saveAsBytes()));
     futures.add(checkFuture(templateExchange("tempFileEntity", MediaType.APPLICATION_JSON_VALUE).saveAsBytes()));
 
-    futures.add(checkFile(consumers.getIntf().tempFilePart(content)));
+    futures.add(checkFile(CONSUMERS.getIntf().tempFilePart(content)));
     futures.add(checkFuture(templateGet("tempFilePart").saveAsString()));
     futures.add(checkFuture(templateExchange("tempFilePart", MediaType.TEXT_PLAIN_VALUE).saveAsString()));
     futures.add(checkFuture(templateExchange("tempFilePart", MediaType.APPLICATION_JSON_VALUE).saveAsString()));
 
-    futures.add(checkFile(consumers.getIntf().file(content)));
+    futures.add(checkFile(CONSUMERS.getIntf().file(content)));
     futures.add(checkFuture(templateGet("file").saveAsString()));
     futures.add(checkFuture(templateExchange("file", MediaType.TEXT_PLAIN_VALUE).saveAsString()));
     futures.add(checkFuture(templateExchange("file", MediaType.APPLICATION_JSON_VALUE).saveAsString()));
 
     {
-      ReadStreamPart part = consumers.getIntf().chineseAndSpaceFile(content);
+      ReadStreamPart part = CONSUMERS.getIntf().chineseAndSpaceFile(content);
       Assertions.assertEquals("测 试.test.txt", part.getSubmittedFileName());
       futures.add(checkFile(part));
 
@@ -150,27 +150,27 @@ public class TestDownload {
       futures.add(checkFuture(part3.saveAsString()));
     }
 
-    futures.add(checkFile(consumers.getIntf().resource(content)));
+    futures.add(checkFile(CONSUMERS.getIntf().resource(content)));
     futures.add(checkFuture(templateGet("resource").saveAsString()));
     futures.add(checkFuture(templateExchange("resource", MediaType.TEXT_PLAIN_VALUE).saveAsString()));
     futures.add(checkFuture(templateExchange("resource", MediaType.APPLICATION_JSON_VALUE).saveAsString()));
 
-    futures.add(checkFile(consumers.getIntf().entityResource(content)));
+    futures.add(checkFile(CONSUMERS.getIntf().entityResource(content)));
     futures.add(checkFuture(templateGet("entityResource").saveAsString()));
     futures.add(checkFuture(templateExchange("entityResource", MediaType.TEXT_PLAIN_VALUE).saveAsString()));
     futures.add(checkFuture(templateExchange("entityResource", MediaType.APPLICATION_JSON_VALUE).saveAsString()));
 
-    futures.add(checkFile(consumers.getIntf().entityInputStream(content)));
+    futures.add(checkFile(CONSUMERS.getIntf().entityInputStream(content)));
     futures.add(checkFuture(templateGet("entityInputStream").saveAsString()));
     futures.add(checkFuture(templateExchange("entityInputStream", MediaType.TEXT_PLAIN_VALUE).saveAsString()));
     futures.add(checkFuture(templateExchange("entityInputStream", MediaType.APPLICATION_JSON_VALUE).saveAsString()));
 
-    futures.add(checkFile(consumers.getIntf().bytes(content)));
+    futures.add(checkFile(CONSUMERS.getIntf().bytes(content)));
     futures.add(checkFuture(templateGet("bytes").saveAsString()));
     futures.add(checkFuture(templateExchange("bytes", MediaType.TEXT_PLAIN_VALUE).saveAsString()));
     futures.add(checkFuture(templateExchange("bytes", MediaType.APPLICATION_JSON_VALUE).saveAsString()));
 
-    futures.add(checkFile(consumers.getIntf().netInputStream(content)));
+    futures.add(checkFile(CONSUMERS.getIntf().netInputStream(content)));
     futures.add(checkFuture(templateGet("netInputStream").saveAsString()));
     futures.add(checkFuture(templateExchange("netInputStream", MediaType.TEXT_PLAIN_VALUE).saveAsString()));
     futures.add(checkFuture(templateExchange("netInputStream", MediaType.APPLICATION_JSON_VALUE).saveAsString()));
diff --git a/integration-tests/it-producer/src/main/java/org/apache/servicecomb/it/schema/DownloadSchema.java b/integration-tests/it-producer/src/main/java/org/apache/servicecomb/it/schema/DownloadSchema.java
index ad274bbc8..dbbaa44bd 100644
--- a/integration-tests/it-producer/src/main/java/org/apache/servicecomb/it/schema/DownloadSchema.java
+++ b/integration-tests/it-producer/src/main/java/org/apache/servicecomb/it/schema/DownloadSchema.java
@@ -216,8 +216,8 @@ public class DownloadSchema implements BootListener {
 
     slowInputStreamThread = new Thread(() -> {
       Thread.currentThread().setName("download thread");
-      byte[] bytes = "1".getBytes();
-      for (; ; ) {
+      byte[] bytes = "1".getBytes(StandardCharsets.UTF_8);
+      while (true) {
         try {
           out.write(bytes);
           out.flush();