You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2023/04/25 09:36:52 UTC

[shardingsphere] branch master updated: Add more Performance rules for pmd (#25321)

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

panjuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new a3bd49327dc Add more Performance rules for pmd (#25321)
a3bd49327dc is described below

commit a3bd49327dc26c4a5d138f807eef19385823befc
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Tue Apr 25 17:36:44 2023 +0800

    Add more Performance rules for pmd (#25321)
---
 .../yaml/loader/YamlPluginConfigurationLoader.java |   6 +-
 .../generic/OpenGaussErrorResponsePacket.java      |   6 +-
 .../show/EncryptShowCreateTableMergedResult.java   |   6 +-
 .../EncryptPredicateFunctionRightValueToken.java   |   6 +-
 .../pojo/EncryptPredicateInRightValueToken.java    |   8 +-
 .../UnifiedCreditCodeRandomReplaceAlgorithm.java   |   6 +-
 .../rewrite/token/pojo/ConstraintToken.java        |   2 +-
 .../sharding/rewrite/token/pojo/OrderByToken.java  |   6 +-
 ...ngTableReferenceRuleConfigurationConverter.java |   4 +-
 .../keygen/CosIdSnowflakeKeyGenerateAlgorithm.java |   2 +-
 .../CosIdSnowflakeIntervalShardingAlgorithm.java   |   2 +-
 .../database/metadata/url/JdbcUrlAppender.java     |   4 +-
 .../infra/metadata/data/ShardingSphereRowData.java |   6 +-
 .../dialect/OracleSchemaMetaDataLoader.java        |   2 +-
 .../pojo/generic/SubstitutableColumnNameToken.java |   2 +-
 .../groovy/expr/HotspotInlineExpressionParser.java |   4 +-
 .../shardingsphere/infra/util/yaml/YamlEngine.java |   9 +-
 .../jdbc/core/connection/ConnectionManager.java    |   2 +-
 .../driver/spi/AbsolutePathDriverURLProvider.java  |   2 +-
 .../core/driver/spi/ApolloDriverURLProvider.java   |   2 +-
 .../driver/spi/ClasspathDriverURLProvider.java     |   2 +-
 .../database/builder/DatabasePrivilegeBuilder.java |   4 +-
 .../authority/yaml/swapper/YamlUserSwapper.java    |   4 +-
 .../pipeline/api/datanode/JobDataNodeEntry.java    |   3 +-
 ...DataMatchDataConsistencyCalculateAlgorithm.java |   2 +-
 .../metadata/generator/PipelineDDLGenerator.java   |   3 +-
 .../sqlbuilder/AbstractPipelineSQLBuilder.java     |   2 +-
 .../core/util/PipelineDistributedBarrier.java      |   2 +-
 .../ingest/wal/decode/MppdbDecodingPlugin.java     |   2 +-
 .../sqlbuilder/OpenGaussPipelineSQLBuilder.java    |   2 +-
 .../PostgreSQLColumnPropertiesAppender.java        |   4 +-
 .../sqlbuilder/PostgreSQLPipelineSQLBuilder.java   |   4 +-
 .../ConvertYamlConfigurationExecutor.java          | 152 +++++++++++----------
 .../proxy/backend/util/ExportUtils.java            |   8 +-
 .../ExportDatabaseConfigurationExecutorTest.java   |   3 +-
 .../mysql/visitor/format/MySQLFormatVisitor.java   |  56 ++++----
 src/resources/pmd.xml                              |  21 +++
 .../result/type/csv/CsvSQLParseResultReporter.java |   9 +-
 .../internal/asserts/SQLCaseAssertContext.java     |  14 +-
 .../loader/SQLParserTestCaseLoaderCallback.java    |   5 +-
 .../test/it/yaml/YamlRuleConfigurationIT.java      |  10 +-
 41 files changed, 211 insertions(+), 188 deletions(-)

diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/config/yaml/loader/YamlPluginConfigurationLoader.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/config/yaml/loader/YamlPluginConfigurationLoader.java
index 47c454d59b0..f547434299a 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/config/yaml/loader/YamlPluginConfigurationLoader.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/config/yaml/loader/YamlPluginConfigurationLoader.java
@@ -23,8 +23,10 @@ import org.apache.shardingsphere.agent.core.plugin.config.yaml.entity.YamlAgentC
 import org.apache.shardingsphere.agent.core.yaml.AgentYamlEngine;
 
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
+import java.io.InputStream;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.util.Optional;
 
 /**
@@ -41,7 +43,7 @@ public final class YamlPluginConfigurationLoader {
      * @throws IOException IO exception
      */
     public static Optional<YamlAgentConfiguration> load(final File yamlFile) throws IOException {
-        try (FileInputStream fileInputStream = new FileInputStream(yamlFile)) {
+        try (InputStream fileInputStream = Files.newInputStream(Paths.get(yamlFile.toURI()))) {
             YamlAgentConfiguration result = AgentYamlEngine.unmarshalYamlAgentConfiguration(fileInputStream);
             return null == result ? Optional.empty() : Optional.of(result);
         }
diff --git a/db-protocol/opengauss/src/main/java/org/apache/shardingsphere/db/protocol/opengauss/packet/command/generic/OpenGaussErrorResponsePacket.java b/db-protocol/opengauss/src/main/java/org/apache/shardingsphere/db/protocol/opengauss/packet/command/generic/OpenGaussErrorResponsePacket.java
index b4eb2ff73d6..5a893d00fef 100644
--- a/db-protocol/opengauss/src/main/java/org/apache/shardingsphere/db/protocol/opengauss/packet/command/generic/OpenGaussErrorResponsePacket.java
+++ b/db-protocol/opengauss/src/main/java/org/apache/shardingsphere/db/protocol/opengauss/packet/command/generic/OpenGaussErrorResponsePacket.java
@@ -94,10 +94,10 @@ public final class OpenGaussErrorResponsePacket implements PostgreSQLIdentifierP
             fields.put(FIELD_TYPE_HINT, serverErrorMessage.getHint());
         }
         if (serverErrorMessage.getPosition() > 0) {
-            fields.put(FIELD_TYPE_POSITION, serverErrorMessage.getPosition() + "");
+            fields.put(FIELD_TYPE_POSITION, String.valueOf(serverErrorMessage.getPosition()));
         }
         if (serverErrorMessage.getInternalPosition() > 0) {
-            fields.put(FIELD_TYPE_INTERNAL_POSITION, serverErrorMessage.getInternalPosition() + "");
+            fields.put(FIELD_TYPE_INTERNAL_POSITION, String.valueOf(serverErrorMessage.getInternalPosition()));
         }
         if (null != serverErrorMessage.getInternalQuery()) {
             fields.put(FIELD_TYPE_INTERNAL_QUERY, serverErrorMessage.getInternalQuery());
@@ -109,7 +109,7 @@ public final class OpenGaussErrorResponsePacket implements PostgreSQLIdentifierP
             fields.put(FIELD_TYPE_FILE, serverErrorMessage.getFile());
         }
         if (serverErrorMessage.getLine() > 0) {
-            fields.put(FIELD_TYPE_LINE, serverErrorMessage.getLine() + "");
+            fields.put(FIELD_TYPE_LINE, String.valueOf(serverErrorMessage.getLine()));
         }
         if (null != serverErrorMessage.getRoutine()) {
             fields.put(FIELD_TYPE_ROUTINE, serverErrorMessage.getRoutine());
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowCreateTableMergedResult.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowCreateTableMergedResult.java
index ea2e32460c8..75c3ee1b807 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowCreateTableMergedResult.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowCreateTableMergedResult.java
@@ -68,12 +68,12 @@ public abstract class EncryptShowCreateTableMergedResult implements MergedResult
             if (!encryptTable.isPresent()) {
                 return result;
             }
-            StringBuilder builder = new StringBuilder(result.substring(0, result.indexOf("(") + 1));
-            List<String> columnDefinitions = Splitter.on(COMMA).splitToList(result.substring(result.indexOf("(") + 1, result.lastIndexOf(")")));
+            StringBuilder builder = new StringBuilder(result.substring(0, result.indexOf('(') + 1));
+            List<String> columnDefinitions = Splitter.on(COMMA).splitToList(result.substring(result.indexOf('(') + 1, result.lastIndexOf(')')));
             for (String each : columnDefinitions) {
                 findLogicColumnDefinition(each, encryptTable.get()).ifPresent(optional -> builder.append(optional).append(COMMA));
             }
-            builder.deleteCharAt(builder.length() - 1).append(result.substring(result.lastIndexOf(")")));
+            builder.deleteCharAt(builder.length() - 1).append(result.substring(result.lastIndexOf(')')));
             return builder.toString();
         }
         return getOriginalValue(columnIndex, type);
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/pojo/EncryptPredicateFunctionRightValueToken.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/pojo/EncryptPredicateFunctionRightValueToken.java
index 5ab6e115a86..8790d029e22 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/pojo/EncryptPredicateFunctionRightValueToken.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/pojo/EncryptPredicateFunctionRightValueToken.java
@@ -54,17 +54,17 @@ public final class EncryptPredicateFunctionRightValueToken extends SQLToken impl
         result.append(functionName).append(" (");
         for (int i = 0; i < indexValues.size() + paramMarkerIndexes.size(); i++) {
             if (paramMarkerIndexes.contains(i)) {
-                result.append("?");
+                result.append('?');
             } else {
                 if (indexValues.get(i) instanceof String) {
-                    result.append("'").append(indexValues.get(i)).append("'");
+                    result.append('\'').append(indexValues.get(i)).append('\'');
                 } else {
                     result.append(indexValues.get(i));
                 }
             }
             result.append(", ");
         }
-        result.delete(result.length() - 2, result.length()).append(")");
+        result.delete(result.length() - 2, result.length()).append(')');
         return result.toString();
     }
     
diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/pojo/EncryptPredicateInRightValueToken.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/pojo/EncryptPredicateInRightValueToken.java
index c0317ac2c58..0d13ab4ff4e 100644
--- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/pojo/EncryptPredicateInRightValueToken.java
+++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/token/pojo/EncryptPredicateInRightValueToken.java
@@ -47,20 +47,20 @@ public final class EncryptPredicateInRightValueToken extends SQLToken implements
     @Override
     public String toString() {
         StringBuilder result = new StringBuilder();
-        result.append("(");
+        result.append('(');
         for (int i = 0; i < indexValues.size() + paramMarkerIndexes.size(); i++) {
             if (paramMarkerIndexes.contains(i)) {
-                result.append("?");
+                result.append('?');
             } else {
                 if (indexValues.get(i) instanceof String) {
-                    result.append("'").append(indexValues.get(i)).append("'");
+                    result.append('\'').append(indexValues.get(i)).append('\'');
                 } else {
                     result.append(indexValues.get(i));
                 }
             }
             result.append(", ");
         }
-        result.delete(result.length() - 2, result.length()).append(")");
+        result.delete(result.length() - 2, result.length()).append(')');
         return result.toString();
     }
     
diff --git a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/algorithm/replace/UnifiedCreditCodeRandomReplaceAlgorithm.java b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/algorithm/replace/UnifiedCreditCodeRandomReplaceAlgorithm.java
index c1cd725c54b..6a570f00920 100644
--- a/features/mask/core/src/main/java/org/apache/shardingsphere/mask/algorithm/replace/UnifiedCreditCodeRandomReplaceAlgorithm.java
+++ b/features/mask/core/src/main/java/org/apache/shardingsphere/mask/algorithm/replace/UnifiedCreditCodeRandomReplaceAlgorithm.java
@@ -85,9 +85,9 @@ public final class UnifiedCreditCodeRandomReplaceAlgorithm implements MaskAlgori
     
     private String randomReplace() {
         StringBuilder result = new StringBuilder();
-        result.append(registrationDepartmentCodes.get(random.nextInt(registrationDepartmentCodes.size())));
-        result.append(categoryCodes.get(random.nextInt(categoryCodes.size())));
-        result.append(administrativeDivisionCodes.get(random.nextInt(administrativeDivisionCodes.size())));
+        result.append(registrationDepartmentCodes.get(random.nextInt(registrationDepartmentCodes.size())))
+                .append(categoryCodes.get(random.nextInt(categoryCodes.size())))
+                .append(administrativeDivisionCodes.get(random.nextInt(administrativeDivisionCodes.size())));
         for (int i = 0; i < 10; i++) {
             result.append(Character.forDigit(random.nextInt(10), 10));
         }
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/ConstraintToken.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/ConstraintToken.java
index 1c34e1e4c2b..38146e854c3 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/ConstraintToken.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/ConstraintToken.java
@@ -59,7 +59,7 @@ public final class ConstraintToken extends SQLToken implements Substitutable, Ro
         StringBuilder result = new StringBuilder(identifier.getValue());
         Map<String, String> logicAndActualTables = TokenUtils.getLogicAndActualTables(routeUnit, sqlStatementContext, shardingRule);
         sqlStatementContext.getTablesContext().getTableNames().stream().findFirst().map(optional -> logicAndActualTables.get(optional.toLowerCase()))
-                .ifPresent(optional -> result.append("_").append(optional));
+                .ifPresent(optional -> result.append('_').append(optional));
         return result.toString();
     }
 }
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/OrderByToken.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/OrderByToken.java
index 6e1ca376862..cb082880df2 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/OrderByToken.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/pojo/OrderByToken.java
@@ -45,12 +45,12 @@ public final class OrderByToken extends SQLToken implements Attachable {
         result.append(" ORDER BY ");
         for (int i = 0; i < columnLabels.size(); i++) {
             if (0 == i) {
-                result.append(columnLabels.get(0)).append(" ").append(orderDirections.get(i).name());
+                result.append(columnLabels.get(0)).append(' ').append(orderDirections.get(i).name());
             } else {
-                result.append(",").append(columnLabels.get(i)).append(" ").append(orderDirections.get(i).name());
+                result.append(',').append(columnLabels.get(i)).append(' ').append(orderDirections.get(i).name());
             }
         }
-        result.append(" ");
+        result.append(' ');
         return result.toString();
     }
 }
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/yaml/swapper/rule/YamlShardingTableReferenceRuleConfigurationConverter.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/yaml/swapper/rule/YamlShardingTableReferenceRuleConfigurationConverter.java
index ab2bd17e19d..6b518f45279 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/yaml/swapper/rule/YamlShardingTableReferenceRuleConfigurationConverter.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/yaml/swapper/rule/YamlShardingTableReferenceRuleConfigurationConverter.java
@@ -53,8 +53,8 @@ public final class YamlShardingTableReferenceRuleConfigurationConverter {
     }
     
     private static ShardingTableReferenceRuleConfiguration convertYamlConfigurationWithName(final String referenceConfig) {
-        String name = referenceConfig.substring(0, referenceConfig.indexOf(":"));
-        String reference = referenceConfig.substring(referenceConfig.indexOf(":") + 1);
+        String name = referenceConfig.substring(0, referenceConfig.indexOf(':'));
+        String reference = referenceConfig.substring(referenceConfig.indexOf(':') + 1);
         return new ShardingTableReferenceRuleConfiguration(name, reference);
     }
     
diff --git a/features/sharding/plugin/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/CosIdSnowflakeKeyGenerateAlgorithm.java b/features/sharding/plugin/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/CosIdSnowflakeKeyGenerateAlgorithm.java
index ac14e58e2e7..9d772d3e7ae 100644
--- a/features/sharding/plugin/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/CosIdSnowflakeKeyGenerateAlgorithm.java
+++ b/features/sharding/plugin/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/keygen/CosIdSnowflakeKeyGenerateAlgorithm.java
@@ -73,7 +73,7 @@ public final class CosIdSnowflakeKeyGenerateAlgorithm implements KeyGenerateAlgo
     }
     
     private long getEpoch(final Properties props) {
-        long result = Long.parseLong(props.getProperty(EPOCH_KEY, DEFAULT_EPOCH + ""));
+        long result = Long.parseLong(props.getProperty(EPOCH_KEY, String.valueOf(DEFAULT_EPOCH)));
         ShardingSpherePreconditions.checkState(result > 0L,
                 () -> new ShardingPluginException("Key generate algorithm `%s` initialization failed, reason is: %s.", getType(), "Epoch must be positive."));
         return result;
diff --git a/features/sharding/plugin/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/sharding/interval/CosIdSnowflakeIntervalShardingAlgorithm.java b/features/sharding/plugin/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/sharding/interval/CosIdSnowflakeIntervalShardingAlgorithm.java
index 4e18f9e700c..966b610972f 100644
--- a/features/sharding/plugin/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/sharding/interval/CosIdSnowflakeIntervalShardingAlgorithm.java
+++ b/features/sharding/plugin/cosid/src/main/java/org/apache/shardingsphere/sharding/cosid/algorithm/sharding/interval/CosIdSnowflakeIntervalShardingAlgorithm.java
@@ -43,7 +43,7 @@ public final class CosIdSnowflakeIntervalShardingAlgorithm extends AbstractCosId
     }
     
     private SnowflakeIdStateParser createSnowflakeIdStateParser(final Properties props) {
-        long epoch = Long.parseLong(props.getProperty(EPOCH_KEY, CosIdSnowflakeKeyGenerateAlgorithm.DEFAULT_EPOCH + ""));
+        long epoch = Long.parseLong(props.getProperty(EPOCH_KEY, String.valueOf(CosIdSnowflakeKeyGenerateAlgorithm.DEFAULT_EPOCH)));
         ZoneId zoneId = props.containsKey(ZONE_ID_KEY) ? ZoneId.of(props.getProperty(ZONE_ID_KEY)) : ZoneId.systemDefault();
         return new MillisecondSnowflakeIdStateParser(
                 epoch, MillisecondSnowflakeId.DEFAULT_TIMESTAMP_BIT, MillisecondSnowflakeId.DEFAULT_MACHINE_BIT, MillisecondSnowflakeId.DEFAULT_SEQUENCE_BIT, zoneId);
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/database/metadata/url/JdbcUrlAppender.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/database/metadata/url/JdbcUrlAppender.java
index 495b1f4a80b..3c5e32f522c 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/database/metadata/url/JdbcUrlAppender.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/database/metadata/url/JdbcUrlAppender.java
@@ -57,9 +57,9 @@ public final class JdbcUrlAppender {
         for (Entry<Object, Object> entry : queryProps.entrySet()) {
             result.append(entry.getKey());
             if (null != entry.getValue()) {
-                result.append("=").append(entry.getValue());
+                result.append('=').append(entry.getValue());
             }
-            result.append("&");
+            result.append('&');
         }
         result.deleteCharAt(result.length() - 1);
         return result.toString();
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/data/ShardingSphereRowData.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/data/ShardingSphereRowData.java
index 063deeb6aee..14fe1b1564d 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/data/ShardingSphereRowData.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/data/ShardingSphereRowData.java
@@ -48,7 +48,11 @@ public final class ShardingSphereRowData {
     private String generateUniqueKey(final List<Object> rows) {
         StringBuilder uniqueKeyText = new StringBuilder();
         for (Object each : rows) {
-            uniqueKeyText.append(null == each ? "" : each.toString()).append("|");
+            if (null == each) {
+                uniqueKeyText.append('|');
+            } else {
+                uniqueKeyText.append(each).append('|');
+            }
         }
         return useMd5GenerateUniqueKey(uniqueKeyText);
     }
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/OracleSchemaMetaDataLoader.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/OracleSchemaMetaDataLoader.java
index f52b435d6c5..eae705cdb8c 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/OracleSchemaMetaDataLoader.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/OracleSchemaMetaDataLoader.java
@@ -124,7 +124,7 @@ public final class OracleSchemaMetaDataLoader implements DialectSchemaMetaDataLo
     }
     
     private String getOriginalDataType(final String dataType) {
-        int index = dataType.indexOf("(");
+        int index = dataType.indexOf('(');
         if (index > 0) {
             return dataType.substring(0, index);
         }
diff --git a/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/generic/SubstitutableColumnNameToken.java b/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/generic/SubstitutableColumnNameToken.java
index 29228601b68..e6affa1babb 100644
--- a/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/generic/SubstitutableColumnNameToken.java
+++ b/infra/rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/sql/token/pojo/generic/SubstitutableColumnNameToken.java
@@ -109,7 +109,7 @@ public final class SubstitutableColumnNameToken extends SQLToken implements Subs
         StringBuilder builder = new StringBuilder();
         String owner = columnProjection.getOwner();
         if (!Strings.isNullOrEmpty(owner)) {
-            builder.append(quoteCharacter.wrap(logicActualTableNames.getOrDefault(owner, owner))).append(".");
+            builder.append(quoteCharacter.wrap(logicActualTableNames.getOrDefault(owner, owner))).append('.');
         }
         builder.append(quoteCharacter.wrap(columnProjection.getName()));
         if (columnProjection.getAlias().isPresent()) {
diff --git a/infra/util-groovy/src/main/java/org/apache/shardingsphere/infra/util/groovy/expr/HotspotInlineExpressionParser.java b/infra/util-groovy/src/main/java/org/apache/shardingsphere/infra/util/groovy/expr/HotspotInlineExpressionParser.java
index 032aaec5c05..2ca5e9fde34 100644
--- a/infra/util-groovy/src/main/java/org/apache/shardingsphere/infra/util/groovy/expr/HotspotInlineExpressionParser.java
+++ b/infra/util-groovy/src/main/java/org/apache/shardingsphere/infra/util/groovy/expr/HotspotInlineExpressionParser.java
@@ -67,10 +67,10 @@ public final class HotspotInlineExpressionParser implements JVMInlineExpressionP
         for (String each : inlineExpressions) {
             StringBuilder expression = new StringBuilder(handlePlaceHolder(each));
             if (!each.startsWith("\"")) {
-                expression.insert(0, "\"");
+                expression.insert(0, '"');
             }
             if (!each.endsWith("\"")) {
-                expression.append("\"");
+                expression.append('"');
             }
             result.add(evaluate(expression.toString()));
         }
diff --git a/infra/util/src/main/java/org/apache/shardingsphere/infra/util/yaml/YamlEngine.java b/infra/util/src/main/java/org/apache/shardingsphere/infra/util/yaml/YamlEngine.java
index 97a5f3651b9..6ac4eb247c4 100644
--- a/infra/util/src/main/java/org/apache/shardingsphere/infra/util/yaml/YamlEngine.java
+++ b/infra/util/src/main/java/org/apache/shardingsphere/infra/util/yaml/YamlEngine.java
@@ -25,12 +25,13 @@ import org.yaml.snakeyaml.DumperOptions;
 import org.yaml.snakeyaml.Yaml;
 import org.yaml.snakeyaml.representer.Representer;
 
+import java.io.BufferedReader;
 import java.io.ByteArrayInputStream;
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.InputStreamReader;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.util.Collection;
 
 /**
@@ -49,9 +50,7 @@ public final class YamlEngine {
      * @throws IOException IO Exception
      */
     public static <T extends YamlConfiguration> T unmarshal(final File yamlFile, final Class<T> classType) throws IOException {
-        try (
-                FileInputStream fileInputStream = new FileInputStream(yamlFile);
-                InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream)) {
+        try (BufferedReader inputStreamReader = Files.newBufferedReader(Paths.get(yamlFile.toURI()))) {
             return new Yaml(new ShardingSphereYamlConstructor(classType)).loadAs(inputStreamReader, classType);
         }
     }
diff --git a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ConnectionManager.java b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ConnectionManager.java
index 7e6b0b583df..51f335ee77f 100644
--- a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ConnectionManager.java
+++ b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/connection/ConnectionManager.java
@@ -127,7 +127,7 @@ public final class ConnectionManager implements ExecutorJDBCConnectionManager, A
     private String createJdbcUrl(final ProxyInstanceMetaData instanceMetaData, final String schema, final Map<String, Object> props) {
         String jdbcUrl = String.valueOf(props.get("jdbcUrl"));
         String jdbcUrlPrefix = jdbcUrl.substring(0, jdbcUrl.indexOf("//"));
-        String jdbcUrlSuffix = jdbcUrl.contains("?") ? jdbcUrl.substring(jdbcUrl.indexOf("?")) : "";
+        String jdbcUrlSuffix = jdbcUrl.contains("?") ? jdbcUrl.substring(jdbcUrl.indexOf('?')) : "";
         return String.format("%s//%s:%s/%s%s", jdbcUrlPrefix, instanceMetaData.getIp(), instanceMetaData.getPort(), schema, jdbcUrlSuffix);
     }
     
diff --git a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/spi/AbsolutePathDriverURLProvider.java b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/spi/AbsolutePathDriverURLProvider.java
index 35b1ed21082..afe4d4a22f5 100644
--- a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/spi/AbsolutePathDriverURLProvider.java
+++ b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/spi/AbsolutePathDriverURLProvider.java
@@ -45,7 +45,7 @@ public final class AbsolutePathDriverURLProvider implements ShardingSphereDriver
     @Override
     @SneakyThrows(IOException.class)
     public byte[] getContent(final String url) {
-        String configuredFile = url.substring("jdbc:shardingsphere:".length(), url.contains("?") ? url.indexOf("?") : url.length());
+        String configuredFile = url.substring("jdbc:shardingsphere:".length(), url.contains("?") ? url.indexOf('?') : url.length());
         String file = configuredFile.substring(PATH_TYPE.length());
         Preconditions.checkArgument(!file.isEmpty(), "Configuration file is required in ShardingSphere driver URL.");
         try (
diff --git a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/spi/ApolloDriverURLProvider.java b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/spi/ApolloDriverURLProvider.java
index 7bc5febbc0f..888c3fa6cd8 100644
--- a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/spi/ApolloDriverURLProvider.java
+++ b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/spi/ApolloDriverURLProvider.java
@@ -40,7 +40,7 @@ public final class ApolloDriverURLProvider implements ShardingSphereDriverURLPro
     
     @Override
     public byte[] getContent(final String url) {
-        String configPath = url.substring("jdbc:shardingsphere:".length(), url.contains("?") ? url.indexOf("?") : url.length());
+        String configPath = url.substring("jdbc:shardingsphere:".length(), url.contains("?") ? url.indexOf('?') : url.length());
         String namespace = configPath.substring(APOLLO_TYPE.length());
         Preconditions.checkArgument(!namespace.isEmpty(), "Apollo namespace is required in ShardingSphere driver URL.");
         ConfigFile configFile = ConfigService.getConfigFile(namespace, ConfigFileFormat.YAML);
diff --git a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/spi/ClasspathDriverURLProvider.java b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/spi/ClasspathDriverURLProvider.java
index fe12073de03..1f27a8e64d8 100644
--- a/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/spi/ClasspathDriverURLProvider.java
+++ b/jdbc/core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/driver/spi/ClasspathDriverURLProvider.java
@@ -44,7 +44,7 @@ public final class ClasspathDriverURLProvider implements ShardingSphereDriverURL
     @Override
     @SneakyThrows(IOException.class)
     public byte[] getContent(final String url) {
-        String configuredFile = url.substring("jdbc:shardingsphere:".length(), url.contains("?") ? url.indexOf("?") : url.length());
+        String configuredFile = url.substring("jdbc:shardingsphere:".length(), url.contains("?") ? url.indexOf('?') : url.length());
         String file = configuredFile.substring(CLASSPATH_TYPE.length());
         Preconditions.checkArgument(!file.isEmpty(), "Configuration file is required in ShardingSphere driver URL.");
         try (
diff --git a/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/provider/database/builder/DatabasePrivilegeBuilder.java b/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/provider/database/builder/DatabasePrivilegeBuilder.java
index 5873f15ef96..61494092456 100644
--- a/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/provider/database/builder/DatabasePrivilegeBuilder.java
+++ b/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/provider/database/builder/DatabasePrivilegeBuilder.java
@@ -84,8 +84,8 @@ public final class DatabasePrivilegeBuilder {
         Arrays.asList(mappings).forEach(each -> {
             String[] userDatabasePair = each.trim().split("=");
             String yamlUser = userDatabasePair[0];
-            String username = yamlUser.substring(0, yamlUser.indexOf("@"));
-            String hostname = yamlUser.substring(yamlUser.indexOf("@") + 1);
+            String username = yamlUser.substring(0, yamlUser.indexOf('@'));
+            String hostname = yamlUser.substring(yamlUser.indexOf('@') + 1);
             ShardingSphereUser shardingSphereUser = new ShardingSphereUser(username, "", hostname);
             Collection<String> databases = result.getOrDefault(shardingSphereUser, new HashSet<>());
             databases.add(userDatabasePair[1]);
diff --git a/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/yaml/swapper/YamlUserSwapper.java b/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/yaml/swapper/YamlUserSwapper.java
index 5bb8d5d7ef3..6813063a4d9 100644
--- a/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/yaml/swapper/YamlUserSwapper.java
+++ b/kernel/authority/core/src/main/java/org/apache/shardingsphere/authority/yaml/swapper/YamlUserSwapper.java
@@ -56,8 +56,8 @@ public final class YamlUserSwapper implements YamlConfigurationSwapper<YamlUserC
         if (!yamlUser.contains("@")) {
             return new Grantee(yamlUser, "");
         }
-        String username = yamlUser.substring(0, yamlUser.indexOf("@"));
-        String hostname = yamlUser.substring(yamlUser.indexOf("@") + 1);
+        String username = yamlUser.substring(0, yamlUser.indexOf('@'));
+        String hostname = yamlUser.substring(yamlUser.indexOf('@') + 1);
         Preconditions.checkArgument(!Strings.isNullOrEmpty(username), "user configuration `%s` is invalid, the legal format is `username@hostname`", yamlUser);
         return new Grantee(username, hostname);
     }
diff --git a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/api/datanode/JobDataNodeEntry.java b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/api/datanode/JobDataNodeEntry.java
index d4f00660dff..fc39437f2fb 100644
--- a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/api/datanode/JobDataNodeEntry.java
+++ b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/api/datanode/JobDataNodeEntry.java
@@ -59,8 +59,7 @@ public final class JobDataNodeEntry {
      */
     public String marshal() {
         StringBuilder result = new StringBuilder();
-        result.append(logicTableName);
-        result.append(":");
+        result.append(logicTableName).append(':');
         for (DataNode each : dataNodes) {
             result.append(DataNodeUtils.formatWithSchema(each)).append(',');
         }
diff --git a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/check/consistency/algorithm/DataMatchDataConsistencyCalculateAlgorithm.java b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/check/consistency/algorithm/DataMatchDataConsistencyCalculateAlgorithm.java
index a844eb5d0b7..13b6db9e356 100644
--- a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/check/consistency/algorithm/DataMatchDataConsistencyCalculateAlgorithm.java
+++ b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/check/consistency/algorithm/DataMatchDataConsistencyCalculateAlgorithm.java
@@ -80,7 +80,7 @@ public final class DataMatchDataConsistencyCalculateAlgorithm extends AbstractSt
     private int getChunkSize(final Properties props) {
         int result;
         try {
-            result = Integer.parseInt(props.getProperty(CHUNK_SIZE_KEY, DEFAULT_CHUNK_SIZE + ""));
+            result = Integer.parseInt(props.getProperty(CHUNK_SIZE_KEY, Integer.toString(DEFAULT_CHUNK_SIZE)));
         } catch (final NumberFormatException ignore) {
             log.warn("'chunk-size' is not a valid number, use default value {}", DEFAULT_CHUNK_SIZE);
             return DEFAULT_CHUNK_SIZE;
diff --git a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/metadata/generator/PipelineDDLGenerator.java b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/metadata/generator/PipelineDDLGenerator.java
index c4723af696a..3deb811b395 100644
--- a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/metadata/generator/PipelineDDLGenerator.java
+++ b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/metadata/generator/PipelineDDLGenerator.java
@@ -18,6 +18,7 @@
 package org.apache.shardingsphere.data.pipeline.core.metadata.generator;
 
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.shardingsphere.data.pipeline.spi.ddlgenerator.CreateTableSQLGenerator;
 import org.apache.shardingsphere.data.pipeline.util.spi.PipelineTypedSPILoader;
 import org.apache.shardingsphere.infra.binder.QueryContext;
@@ -86,7 +87,7 @@ public final class PipelineDDLGenerator {
     
     private Optional<String> decorate(final DatabaseType databaseType, final DataSource dataSource, final String schemaName, final String targetTableName,
                                       final SQLParserEngine parserEngine, final String sql) throws SQLException {
-        if (sql.trim().isEmpty()) {
+        if (StringUtils.isBlank(sql)) {
             return Optional.empty();
         }
         String databaseName;
diff --git a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/sqlbuilder/AbstractPipelineSQLBuilder.java b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/sqlbuilder/AbstractPipelineSQLBuilder.java
index 2efa2e5ea76..a3318855aa4 100644
--- a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/sqlbuilder/AbstractPipelineSQLBuilder.java
+++ b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/sqlbuilder/AbstractPipelineSQLBuilder.java
@@ -108,7 +108,7 @@ public abstract class AbstractPipelineSQLBuilder implements PipelineSQLBuilder {
     protected final String getQualifiedTableName(final String schemaName, final String tableName) {
         StringBuilder result = new StringBuilder();
         if (TypedSPILoader.getService(DatabaseType.class, getType()).isSchemaAvailable() && !Strings.isNullOrEmpty(schemaName)) {
-            result.append(quote(schemaName)).append(".");
+            result.append(quote(schemaName)).append('.');
         }
         result.append(quote(tableName));
         return result.toString();
diff --git a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/util/PipelineDistributedBarrier.java b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/util/PipelineDistributedBarrier.java
index 16998486400..b6067324786 100644
--- a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/util/PipelineDistributedBarrier.java
+++ b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/util/PipelineDistributedBarrier.java
@@ -141,7 +141,7 @@ public final class PipelineDistributedBarrier {
         if (Strings.isNullOrEmpty(nodePath)) {
             return;
         }
-        String barrierPath = nodePath.substring(0, nodePath.lastIndexOf("/"));
+        String barrierPath = nodePath.substring(0, nodePath.lastIndexOf('/'));
         InnerCountDownLatchHolder holder = countDownLatchHolders.get(barrierPath);
         if (null != holder && getRepository().getChildrenKeys(barrierPath).size() == holder.getTotalCount()) {
             holder.getCountDownLatch().countDown();
diff --git a/kernel/data-pipeline/dialect/opengauss/src/main/java/org/apache/shardingsphere/data/pipeline/opengauss/ingest/wal/decode/MppdbDecodingPlugin.java b/kernel/data-pipeline/dialect/opengauss/src/main/java/org/apache/shardingsphere/data/pipeline/opengauss/ingest/wal/decode/MppdbDecodingPlugin.java
index 05755bf3657..146487c8a98 100644
--- a/kernel/data-pipeline/dialect/opengauss/src/main/java/org/apache/shardingsphere/data/pipeline/opengauss/ingest/wal/decode/MppdbDecodingPlugin.java
+++ b/kernel/data-pipeline/dialect/opengauss/src/main/java/org/apache/shardingsphere/data/pipeline/opengauss/ingest/wal/decode/MppdbDecodingPlugin.java
@@ -92,7 +92,7 @@ public final class MppdbDecodingPlugin implements DecodingPlugin {
         } else if (dataText.startsWith("COMMIT")) {
             int commitBeginIndex = dataText.indexOf("COMMIT") + "COMMIT".length() + 1;
             int csnBeginIndex = dataText.indexOf("CSN") + "CSN".length() + 1;
-            result = new CommitTXEvent(Long.parseLong(dataText.substring(commitBeginIndex, dataText.indexOf(" ", commitBeginIndex))), Long.parseLong(dataText.substring(csnBeginIndex)));
+            result = new CommitTXEvent(Long.parseLong(dataText.substring(commitBeginIndex, dataText.indexOf(' ', commitBeginIndex))), Long.parseLong(dataText.substring(csnBeginIndex)));
         } else if (dataText.startsWith("{")) {
             result = readTableEvent(dataText);
         }
diff --git a/kernel/data-pipeline/dialect/opengauss/src/main/java/org/apache/shardingsphere/data/pipeline/opengauss/sqlbuilder/OpenGaussPipelineSQLBuilder.java b/kernel/data-pipeline/dialect/opengauss/src/main/java/org/apache/shardingsphere/data/pipeline/opengauss/sqlbuilder/OpenGaussPipelineSQLBuilder.java
index d0df5963637..b60aae911a9 100644
--- a/kernel/data-pipeline/dialect/opengauss/src/main/java/org/apache/shardingsphere/data/pipeline/opengauss/sqlbuilder/OpenGaussPipelineSQLBuilder.java
+++ b/kernel/data-pipeline/dialect/opengauss/src/main/java/org/apache/shardingsphere/data/pipeline/opengauss/sqlbuilder/OpenGaussPipelineSQLBuilder.java
@@ -84,7 +84,7 @@ public final class OpenGaussPipelineSQLBuilder extends AbstractPipelineSQLBuilde
             if (column.isUniqueKey()) {
                 continue;
             }
-            result.append(quote(column.getName())).append("=EXCLUDED.").append(quote(column.getName())).append(",");
+            result.append(quote(column.getName())).append("=EXCLUDED.").append(quote(column.getName())).append(',');
         }
         result.setLength(result.length() - 1);
         return result.toString();
diff --git a/kernel/data-pipeline/dialect/postgresql/src/main/java/org/apache/shardingsphere/data/pipeline/postgresql/ddlgenerator/PostgreSQLColumnPropertiesAppender.java b/kernel/data-pipeline/dialect/postgresql/src/main/java/org/apache/shardingsphere/data/pipeline/postgresql/ddlgenerator/PostgreSQLColumnPropertiesAppender.java
index 125f92bff83..eb502d06aae 100644
--- a/kernel/data-pipeline/dialect/postgresql/src/main/java/org/apache/shardingsphere/data/pipeline/postgresql/ddlgenerator/PostgreSQLColumnPropertiesAppender.java
+++ b/kernel/data-pipeline/dialect/postgresql/src/main/java/org/apache/shardingsphere/data/pipeline/postgresql/ddlgenerator/PostgreSQLColumnPropertiesAppender.java
@@ -315,11 +315,11 @@ public final class PostgreSQLColumnPropertiesAppender extends AbstractPostgreSQL
             isArray = true;
             result = result.substring(0, result.lastIndexOf("[]"));
         }
-        int idx = result.indexOf("(");
+        int idx = result.indexOf('(');
         if (idx > 0 && result.endsWith(")")) {
             result = result.substring(0, idx);
         } else if (idx > 0 && result.startsWith("time")) {
-            int endIdx = result.indexOf(")");
+            int endIdx = result.indexOf(')');
             if (1 != endIdx) {
                 Matcher matcher = BRACKETS_PATTERN.matcher(result);
                 StringBuffer buffer = new StringBuffer();
diff --git a/kernel/data-pipeline/dialect/postgresql/src/main/java/org/apache/shardingsphere/data/pipeline/postgresql/sqlbuilder/PostgreSQLPipelineSQLBuilder.java b/kernel/data-pipeline/dialect/postgresql/src/main/java/org/apache/shardingsphere/data/pipeline/postgresql/sqlbuilder/PostgreSQLPipelineSQLBuilder.java
index 43a5530708b..a31ce9d5769 100644
--- a/kernel/data-pipeline/dialect/postgresql/src/main/java/org/apache/shardingsphere/data/pipeline/postgresql/sqlbuilder/PostgreSQLPipelineSQLBuilder.java
+++ b/kernel/data-pipeline/dialect/postgresql/src/main/java/org/apache/shardingsphere/data/pipeline/postgresql/sqlbuilder/PostgreSQLPipelineSQLBuilder.java
@@ -77,7 +77,7 @@ public final class PostgreSQLPipelineSQLBuilder extends AbstractPipelineSQLBuild
     private String buildConflictSQL(final DataRecord dataRecord) {
         StringBuilder result = new StringBuilder(" ON CONFLICT (");
         for (Column each : RecordUtils.extractPrimaryColumns(dataRecord)) {
-            result.append(each.getName()).append(",");
+            result.append(each.getName()).append(',');
         }
         result.setLength(result.length() - 1);
         result.append(") DO UPDATE SET ");
@@ -86,7 +86,7 @@ public final class PostgreSQLPipelineSQLBuilder extends AbstractPipelineSQLBuild
             if (column.isUniqueKey()) {
                 continue;
             }
-            result.append(quote(column.getName())).append("=EXCLUDED.").append(quote(column.getName())).append(",");
+            result.append(quote(column.getName())).append("=EXCLUDED.").append(quote(column.getName())).append(',');
         }
         result.setLength(result.length() - 1);
         return result.toString();
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationExecutor.java
index dc5f4f3a4a4..08027b9ccc8 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationExecutor.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationExecutor.java
@@ -147,43 +147,43 @@ public final class ConvertYamlConfigurationExecutor implements QueryableRALExecu
         return result;
     }
     
-    private void appendResourceDistSQL(final YamlProxyDatabaseConfiguration yamlConfig, final StringBuilder result) {
-        appendDatabase(yamlConfig.getDatabaseName(), result);
-        appendResources(yamlConfig.getDataSources(), result);
+    private void appendResourceDistSQL(final YamlProxyDatabaseConfiguration yamlConfig, final StringBuilder stringBuilder) {
+        appendDatabase(yamlConfig.getDatabaseName(), stringBuilder);
+        appendResources(yamlConfig.getDataSources(), stringBuilder);
     }
     
-    private void appendDatabase(final String databaseName, final StringBuilder result) {
-        result.append(String.format(DistSQLScriptConstants.CREATE_DATABASE, databaseName)).append(System.lineSeparator());
-        result.append(String.format(DistSQLScriptConstants.USE_DATABASE, databaseName)).append(System.lineSeparator()).append(System.lineSeparator());
+    private void appendDatabase(final String databaseName, final StringBuilder stringBuilder) {
+        stringBuilder.append(String.format(DistSQLScriptConstants.CREATE_DATABASE, databaseName)).append(System.lineSeparator())
+                .append(String.format(DistSQLScriptConstants.USE_DATABASE, databaseName)).append(System.lineSeparator()).append(System.lineSeparator());
     }
     
-    private void appendResources(final Map<String, YamlProxyDataSourceConfiguration> dataSources, final StringBuilder result) {
+    private void appendResources(final Map<String, YamlProxyDataSourceConfiguration> dataSources, final StringBuilder stringBuilder) {
         if (dataSources.isEmpty()) {
             return;
         }
-        result.append(DistSQLScriptConstants.REGISTER_STORAGE_UNIT);
+        stringBuilder.append(DistSQLScriptConstants.REGISTER_STORAGE_UNIT);
         Iterator<Entry<String, YamlProxyDataSourceConfiguration>> iterator = dataSources.entrySet().iterator();
         while (iterator.hasNext()) {
             Entry<String, YamlProxyDataSourceConfiguration> entry = iterator.next();
             DataSourceProperties dataSourceProps = DataSourcePropertiesCreator.create(HikariDataSource.class.getName(), dataSourceConfigSwapper.swap(entry.getValue()));
-            appendResource(entry.getKey(), dataSourceProps, result);
+            appendResource(entry.getKey(), dataSourceProps, stringBuilder);
             if (iterator.hasNext()) {
-                result.append(DistSQLScriptConstants.COMMA);
+                stringBuilder.append(DistSQLScriptConstants.COMMA);
             }
         }
-        result.append(DistSQLScriptConstants.SEMI).append(System.lineSeparator()).append(System.lineSeparator());
+        stringBuilder.append(DistSQLScriptConstants.SEMI).append(System.lineSeparator()).append(System.lineSeparator());
     }
     
-    private void appendResource(final String resourceName, final DataSourceProperties dataSourceProps, final StringBuilder result) {
+    private void appendResource(final String resourceName, final DataSourceProperties dataSourceProps, final StringBuilder stringBuilder) {
         Map<String, Object> connectionProps = dataSourceProps.getConnectionPropertySynonyms().getStandardProperties();
         String url = (String) connectionProps.get(DistSQLScriptConstants.KEY_URL);
         String username = (String) connectionProps.get(DistSQLScriptConstants.KEY_USERNAME);
         String password = (String) connectionProps.get(DistSQLScriptConstants.KEY_PASSWORD);
         String props = getResourceProperties(dataSourceProps.getPoolPropertySynonyms(), dataSourceProps.getCustomDataSourceProperties());
         if (Strings.isNullOrEmpty(password)) {
-            result.append(String.format(DistSQLScriptConstants.RESOURCE_DEFINITION_WITHOUT_PASSWORD, resourceName, url, username, props));
+            stringBuilder.append(String.format(DistSQLScriptConstants.RESOURCE_DEFINITION_WITHOUT_PASSWORD, resourceName, url, username, props));
         } else {
-            result.append(String.format(DistSQLScriptConstants.RESOURCE_DEFINITION, resourceName, url, username, password, props));
+            stringBuilder.append(String.format(DistSQLScriptConstants.RESOURCE_DEFINITION, resourceName, url, username, password, props));
         }
     }
     
@@ -197,38 +197,38 @@ public final class ConvertYamlConfigurationExecutor implements QueryableRALExecu
         return result.toString();
     }
     
-    private void appendProperties(final Map<String, Object> props, final StringBuilder result) {
+    private void appendProperties(final Map<String, Object> props, final StringBuilder stringBuilder) {
         Iterator<Entry<String, Object>> iterator = props.entrySet().iterator();
         while (iterator.hasNext()) {
             Entry<String, Object> entry = iterator.next();
             if (null == entry.getValue()) {
                 continue;
             }
-            result.append(String.format(DistSQLScriptConstants.PROPERTY, entry.getKey(), entry.getValue()));
+            stringBuilder.append(String.format(DistSQLScriptConstants.PROPERTY, entry.getKey(), entry.getValue()));
             if (iterator.hasNext()) {
-                result.append(DistSQLScriptConstants.COMMA).append(" ");
+                stringBuilder.append(DistSQLScriptConstants.COMMA).append(' ');
             }
         }
     }
     
-    private void appendShardingDistSQL(final ShardingRuleConfiguration ruleConfig, final StringBuilder result) {
-        appendShardingTableRules(ruleConfig, result);
-        appendShardingBindingTableRules(ruleConfig, result);
-        appendShardingBroadcastTableRules(ruleConfig, result);
-        appendDefaultShardingStrategy(ruleConfig, result);
+    private void appendShardingDistSQL(final ShardingRuleConfiguration ruleConfig, final StringBuilder stringBuilder) {
+        appendShardingTableRules(ruleConfig, stringBuilder);
+        appendShardingBindingTableRules(ruleConfig, stringBuilder);
+        appendShardingBroadcastTableRules(ruleConfig, stringBuilder);
+        appendDefaultShardingStrategy(ruleConfig, stringBuilder);
     }
     
-    private void appendShardingTableRules(final ShardingRuleConfiguration ruleConfig, final StringBuilder result) {
+    private void appendShardingTableRules(final ShardingRuleConfiguration ruleConfig, final StringBuilder stringBuilder) {
         if (ruleConfig.getTables().isEmpty() && ruleConfig.getAutoTables().isEmpty()) {
             return;
         }
         String tableRules = getTableRules(ruleConfig);
         String autoTableRules = getAutoTableRules(ruleConfig);
-        result.append(DistSQLScriptConstants.CREATE_SHARDING_TABLE).append(tableRules);
+        stringBuilder.append(DistSQLScriptConstants.CREATE_SHARDING_TABLE).append(tableRules);
         if (!Strings.isNullOrEmpty(tableRules) && !Strings.isNullOrEmpty(autoTableRules)) {
-            result.append(DistSQLScriptConstants.COMMA).append(System.lineSeparator());
+            stringBuilder.append(DistSQLScriptConstants.COMMA).append(System.lineSeparator());
         }
-        result.append(autoTableRules).append(DistSQLScriptConstants.SEMI).append(System.lineSeparator()).append(System.lineSeparator());
+        stringBuilder.append(autoTableRules).append(DistSQLScriptConstants.SEMI).append(System.lineSeparator()).append(System.lineSeparator());
     }
     
     private String getAutoTableRules(final ShardingRuleConfiguration ruleConfig) {
@@ -273,10 +273,10 @@ public final class ConvertYamlConfigurationExecutor implements QueryableRALExecu
         return result.toString();
     }
     
-    private void appendAuditStrategy(final Map<String, AlgorithmConfiguration> auditors, final ShardingAuditStrategyConfiguration auditStrategy, final StringBuilder result) {
+    private void appendAuditStrategy(final Map<String, AlgorithmConfiguration> auditors, final ShardingAuditStrategyConfiguration auditStrategy, final StringBuilder stringBuilder) {
         if (null != auditStrategy) {
-            result.append(DistSQLScriptConstants.COMMA).append(System.lineSeparator());
-            result.append(String.format(DistSQLScriptConstants.AUDIT_STRATEGY, getAlgorithmTypes(auditors, auditStrategy.getAuditorNames()), auditStrategy.isAllowHintDisable()));
+            stringBuilder.append(DistSQLScriptConstants.COMMA).append(System.lineSeparator());
+            stringBuilder.append(String.format(DistSQLScriptConstants.AUDIT_STRATEGY, getAlgorithmTypes(auditors, auditStrategy.getAuditorNames()), auditStrategy.isAllowHintDisable()));
         }
     }
     
@@ -303,67 +303,68 @@ public final class ConvertYamlConfigurationExecutor implements QueryableRALExecu
         return result.toString();
     }
     
-    private void appendKeyGenerateStrategy(final Map<String, AlgorithmConfiguration> keyGenerators, final KeyGenerateStrategyConfiguration keyGenerateStrategyConfig, final StringBuilder result) {
+    private void appendKeyGenerateStrategy(final Map<String, AlgorithmConfiguration> keyGenerators,
+                                           final KeyGenerateStrategyConfiguration keyGenerateStrategyConfig, final StringBuilder stringBuilder) {
         if (null == keyGenerateStrategyConfig) {
             return;
         }
-        result.append(DistSQLScriptConstants.COMMA).append(System.lineSeparator());
+        stringBuilder.append(DistSQLScriptConstants.COMMA).append(System.lineSeparator());
         String algorithmDefinition = getAlgorithmType(keyGenerators.get(keyGenerateStrategyConfig.getKeyGeneratorName()));
-        result.append(String.format(DistSQLScriptConstants.KEY_GENERATOR_STRATEGY, keyGenerateStrategyConfig.getColumn(), algorithmDefinition));
+        stringBuilder.append(String.format(DistSQLScriptConstants.KEY_GENERATOR_STRATEGY, keyGenerateStrategyConfig.getColumn(), algorithmDefinition));
     }
     
     private void appendStrategy(final ShardingStrategyConfiguration strategyConfig, final String strategyType,
-                                final StringBuilder result, final Map<String, AlgorithmConfiguration> shardingAlgorithms) {
+                                final StringBuilder stringBuilder, final Map<String, AlgorithmConfiguration> shardingAlgorithms) {
         if (null == strategyConfig) {
             return;
         }
         if (Objects.equals(strategyType, DistSQLScriptConstants.DATABASE_STRATEGY) || Objects.equals(strategyType, DistSQLScriptConstants.TABLE_STRATEGY)) {
-            result.append(DistSQLScriptConstants.COMMA).append(System.lineSeparator());
+            stringBuilder.append(DistSQLScriptConstants.COMMA).append(System.lineSeparator());
         }
         String type = strategyConfig.getType().toLowerCase();
         String algorithmDefinition = getAlgorithmType(shardingAlgorithms.get(strategyConfig.getShardingAlgorithmName()));
         switch (type) {
             case DistSQLScriptConstants.STANDARD:
                 StandardShardingStrategyConfiguration standardShardingStrategyConfig = (StandardShardingStrategyConfiguration) strategyConfig;
-                result.append(String.format(DistSQLScriptConstants.SHARDING_STRATEGY_STANDARD, strategyType, type, standardShardingStrategyConfig.getShardingColumn(), algorithmDefinition));
+                stringBuilder.append(String.format(DistSQLScriptConstants.SHARDING_STRATEGY_STANDARD, strategyType, type, standardShardingStrategyConfig.getShardingColumn(), algorithmDefinition));
                 break;
             case DistSQLScriptConstants.COMPLEX:
                 ComplexShardingStrategyConfiguration complexShardingStrategyConfig = (ComplexShardingStrategyConfiguration) strategyConfig;
-                result.append(String.format(DistSQLScriptConstants.SHARDING_STRATEGY_COMPLEX, strategyType, type, complexShardingStrategyConfig.getShardingColumns(), algorithmDefinition));
+                stringBuilder.append(String.format(DistSQLScriptConstants.SHARDING_STRATEGY_COMPLEX, strategyType, type, complexShardingStrategyConfig.getShardingColumns(), algorithmDefinition));
                 break;
             case DistSQLScriptConstants.HINT:
-                result.append(String.format(DistSQLScriptConstants.SHARDING_STRATEGY_HINT, strategyType, type, algorithmDefinition));
+                stringBuilder.append(String.format(DistSQLScriptConstants.SHARDING_STRATEGY_HINT, strategyType, type, algorithmDefinition));
                 break;
             case DistSQLScriptConstants.NONE:
-                result.append(String.format(DistSQLScriptConstants.SHARDING_STRATEGY_NONE, strategyType, "none"));
+                stringBuilder.append(String.format(DistSQLScriptConstants.SHARDING_STRATEGY_NONE, strategyType, "none"));
                 break;
             default:
                 break;
         }
     }
     
-    private void appendShardingBindingTableRules(final ShardingRuleConfiguration ruleConfig, final StringBuilder result) {
+    private void appendShardingBindingTableRules(final ShardingRuleConfiguration ruleConfig, final StringBuilder stringBuilder) {
         if (ruleConfig.getBindingTableGroups().isEmpty()) {
             return;
         }
-        result.append(DistSQLScriptConstants.SHARDING_BINDING_TABLE_RULES);
+        stringBuilder.append(DistSQLScriptConstants.SHARDING_BINDING_TABLE_RULES);
         Iterator<ShardingTableReferenceRuleConfiguration> iterator = ruleConfig.getBindingTableGroups().iterator();
         while (iterator.hasNext()) {
             ShardingTableReferenceRuleConfiguration referenceRuleConfig = iterator.next();
-            result.append(String.format(DistSQLScriptConstants.BINDING_TABLES, referenceRuleConfig.getName(), referenceRuleConfig.getReference()));
+            stringBuilder.append(String.format(DistSQLScriptConstants.BINDING_TABLES, referenceRuleConfig.getName(), referenceRuleConfig.getReference()));
             if (iterator.hasNext()) {
-                result.append(DistSQLScriptConstants.COMMA);
+                stringBuilder.append(DistSQLScriptConstants.COMMA);
             }
         }
-        result.append(DistSQLScriptConstants.SEMI).append(System.lineSeparator()).append(System.lineSeparator());
+        stringBuilder.append(DistSQLScriptConstants.SEMI).append(System.lineSeparator()).append(System.lineSeparator());
     }
     
-    private void appendShardingBroadcastTableRules(final ShardingRuleConfiguration ruleConfig, final StringBuilder result) {
+    private void appendShardingBroadcastTableRules(final ShardingRuleConfiguration ruleConfig, final StringBuilder stringBuilder) {
         if (ruleConfig.getBroadcastTables().isEmpty()) {
             return;
         }
-        result.append(String.format(DistSQLScriptConstants.BROADCAST_TABLE_RULE, String.join(",", ruleConfig.getBroadcastTables())));
-        result.append(DistSQLScriptConstants.SEMI).append(System.lineSeparator()).append(System.lineSeparator());
+        stringBuilder.append(String.format(DistSQLScriptConstants.BROADCAST_TABLE_RULE, String.join(",", ruleConfig.getBroadcastTables())))
+                .append(DistSQLScriptConstants.SEMI).append(System.lineSeparator()).append(System.lineSeparator());
     }
     
     private void appendDefaultShardingStrategy(final ShardingRuleConfiguration ruleConfig, final StringBuilder result) {
@@ -380,27 +381,27 @@ public final class ConvertYamlConfigurationExecutor implements QueryableRALExecu
         }
     }
     
-    private void appendReadWriteSplittingDistSQL(final ReadwriteSplittingRuleConfiguration ruleConfig, final StringBuilder result) {
+    private void appendReadWriteSplittingDistSQL(final ReadwriteSplittingRuleConfiguration ruleConfig, final StringBuilder stringBuilder) {
         if (ruleConfig.getDataSources().isEmpty()) {
             return;
         }
-        result.append(DistSQLScriptConstants.CREATE_READWRITE_SPLITTING_RULE);
+        stringBuilder.append(DistSQLScriptConstants.CREATE_READWRITE_SPLITTING_RULE);
         Iterator<ReadwriteSplittingDataSourceRuleConfiguration> iterator = ruleConfig.getDataSources().iterator();
         while (iterator.hasNext()) {
             ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig = iterator.next();
-            appendStaticReadWriteSplittingRule(ruleConfig.getLoadBalancers(), dataSourceRuleConfig, result);
+            appendStaticReadWriteSplittingRule(ruleConfig.getLoadBalancers(), dataSourceRuleConfig, stringBuilder);
             if (iterator.hasNext()) {
-                result.append(DistSQLScriptConstants.COMMA);
+                stringBuilder.append(DistSQLScriptConstants.COMMA);
             }
         }
-        result.append(DistSQLScriptConstants.SEMI).append(System.lineSeparator()).append(System.lineSeparator());
+        stringBuilder.append(DistSQLScriptConstants.SEMI).append(System.lineSeparator()).append(System.lineSeparator());
     }
     
     private void appendStaticReadWriteSplittingRule(final Map<String, AlgorithmConfiguration> loadBalancers,
-                                                    final ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig, final StringBuilder result) {
+                                                    final ReadwriteSplittingDataSourceRuleConfiguration dataSourceRuleConfig, final StringBuilder stringBuilder) {
         String readDataSourceNames = getReadDataSourceNames(dataSourceRuleConfig.getReadDataSourceNames());
         String loadBalancerType = getLoadBalancerType(loadBalancers.get(dataSourceRuleConfig.getLoadBalancerName()));
-        result.append(String.format(DistSQLScriptConstants.READWRITE_SPLITTING_FOR_STATIC,
+        stringBuilder.append(String.format(DistSQLScriptConstants.READWRITE_SPLITTING_FOR_STATIC,
                 dataSourceRuleConfig.getName(), dataSourceRuleConfig.getWriteDataSourceName(), readDataSourceNames, loadBalancerType));
     }
     
@@ -425,22 +426,22 @@ public final class ConvertYamlConfigurationExecutor implements QueryableRALExecu
         return result.toString();
     }
     
-    private void appendEncryptDistSQL(final EncryptRuleConfiguration ruleConfig, final StringBuilder result) {
+    private void appendEncryptDistSQL(final EncryptRuleConfiguration ruleConfig, final StringBuilder stringBuilder) {
         if (ruleConfig.getTables().isEmpty()) {
             return;
         }
-        result.append(DistSQLScriptConstants.CREATE_ENCRYPT);
+        stringBuilder.append(DistSQLScriptConstants.CREATE_ENCRYPT);
         Iterator<EncryptTableRuleConfiguration> iterator = ruleConfig.getTables().iterator();
         while (iterator.hasNext()) {
             EncryptTableRuleConfiguration tableRuleConfig = iterator.next();
             boolean queryWithCipher = null == tableRuleConfig.getQueryWithCipherColumn() || tableRuleConfig.getQueryWithCipherColumn();
-            result.append(String.format(DistSQLScriptConstants.ENCRYPT, tableRuleConfig.getName(),
+            stringBuilder.append(String.format(DistSQLScriptConstants.ENCRYPT, tableRuleConfig.getName(),
                     getEncryptColumns(tableRuleConfig.getColumns(), ruleConfig.getEncryptors(), ruleConfig.getLikeEncryptors()), queryWithCipher));
             if (iterator.hasNext()) {
-                result.append(DistSQLScriptConstants.COMMA).append(System.lineSeparator());
+                stringBuilder.append(DistSQLScriptConstants.COMMA).append(System.lineSeparator());
             }
         }
-        result.append(DistSQLScriptConstants.SEMI).append(System.lineSeparator()).append(System.lineSeparator());
+        stringBuilder.append(DistSQLScriptConstants.SEMI).append(System.lineSeparator()).append(System.lineSeparator());
     }
     
     private String getEncryptColumns(final Collection<EncryptColumnRuleConfiguration> ruleConfigs,
@@ -467,15 +468,15 @@ public final class ConvertYamlConfigurationExecutor implements QueryableRALExecu
         }
         if (null != cipherColumnName) {
             if (null != plainColumnName) {
-                result.append(DistSQLScriptConstants.COMMA).append(" ");
+                result.append(DistSQLScriptConstants.COMMA).append(' ');
             }
             result.append(String.format(DistSQLScriptConstants.CIPHER, cipherColumnName));
         }
         if (null != ruleConfig.getAssistedQueryColumn()) {
-            result.append(DistSQLScriptConstants.COMMA).append(" ").append(String.format(DistSQLScriptConstants.ASSISTED_QUERY_COLUMN, ruleConfig.getAssistedQueryColumn()));
+            result.append(DistSQLScriptConstants.COMMA).append(' ').append(String.format(DistSQLScriptConstants.ASSISTED_QUERY_COLUMN, ruleConfig.getAssistedQueryColumn()));
         }
         if (null != ruleConfig.getLikeQueryColumn()) {
-            result.append(DistSQLScriptConstants.COMMA).append(" ").append(String.format(DistSQLScriptConstants.LIKE_QUERY_COLUMN, ruleConfig.getLikeQueryColumn()));
+            result.append(DistSQLScriptConstants.COMMA).append(' ').append(String.format(DistSQLScriptConstants.LIKE_QUERY_COLUMN, ruleConfig.getLikeQueryColumn()));
         }
         return result.toString();
     }
@@ -490,32 +491,33 @@ public final class ConvertYamlConfigurationExecutor implements QueryableRALExecu
             result.append(String.format(DistSQLScriptConstants.ENCRYPT_ALGORITHM, getAlgorithmType(encryptors.get(cipherEncryptorName))));
         }
         if (null != assistedQueryEncryptorName) {
-            result.append(DistSQLScriptConstants.COMMA).append(" ")
+            result.append(DistSQLScriptConstants.COMMA).append(' ')
                     .append(String.format(DistSQLScriptConstants.ASSISTED_QUERY_ALGORITHM, getAlgorithmType(encryptors.get(assistedQueryEncryptorName))));
         }
         if (null != likeQueryEncryptorName) {
-            result.append(DistSQLScriptConstants.COMMA).append(" ")
+            result.append(DistSQLScriptConstants.COMMA).append(' ')
                     .append(String.format(DistSQLScriptConstants.LIKE_QUERY_ALGORITHM, getAlgorithmType(likeEncryptors.get(likeQueryEncryptorName))));
         }
         return result.toString();
     }
     
-    private void appendShadowDistSQL(final ShadowRuleConfiguration ruleConfig, final StringBuilder result) {
+    private void appendShadowDistSQL(final ShadowRuleConfiguration ruleConfig, final StringBuilder stringBuilder) {
         if (ruleConfig.getDataSources().isEmpty()) {
             return;
         }
-        result.append(DistSQLScriptConstants.CREATE_SHADOW);
+        stringBuilder.append(DistSQLScriptConstants.CREATE_SHADOW);
         Iterator<ShadowDataSourceConfiguration> iterator = ruleConfig.getDataSources().iterator();
         while (iterator.hasNext()) {
             ShadowDataSourceConfiguration dataSourceConfig = iterator.next();
             String shadowRuleName = dataSourceConfig.getName();
             String shadowTables = getShadowTables(shadowRuleName, ruleConfig.getTables(), ruleConfig.getShadowAlgorithms());
-            result.append(String.format(DistSQLScriptConstants.SHADOW, shadowRuleName, dataSourceConfig.getProductionDataSourceName(), dataSourceConfig.getShadowDataSourceName(), shadowTables));
+            stringBuilder.append(
+                    String.format(DistSQLScriptConstants.SHADOW, shadowRuleName, dataSourceConfig.getProductionDataSourceName(), dataSourceConfig.getShadowDataSourceName(), shadowTables));
             if (iterator.hasNext()) {
-                result.append(DistSQLScriptConstants.COMMA);
+                stringBuilder.append(DistSQLScriptConstants.COMMA);
             }
         }
-        result.append(DistSQLScriptConstants.SEMI).append(System.lineSeparator()).append(System.lineSeparator());
+        stringBuilder.append(DistSQLScriptConstants.SEMI).append(System.lineSeparator()).append(System.lineSeparator());
     }
     
     private String getShadowTables(final String shadowRuleName, final Map<String, ShadowTableConfiguration> ruleConfig, final Map<String, AlgorithmConfiguration> algorithmConfigs) {
@@ -540,26 +542,26 @@ public final class ConvertYamlConfigurationExecutor implements QueryableRALExecu
         while (iterator.hasNext()) {
             result.append(getAlgorithmType(algorithmConfigs.get(iterator.next())));
             if (iterator.hasNext()) {
-                result.append(DistSQLScriptConstants.COMMA).append(" ");
+                result.append(DistSQLScriptConstants.COMMA).append(' ');
             }
         }
         return result.toString();
     }
     
-    private void appendMaskDistSQL(final MaskRuleConfiguration ruleConfig, final StringBuilder result) {
+    private void appendMaskDistSQL(final MaskRuleConfiguration ruleConfig, final StringBuilder stringBuilder) {
         if (ruleConfig.getTables().isEmpty()) {
             return;
         }
-        result.append(DistSQLScriptConstants.CREATE_MASK);
+        stringBuilder.append(DistSQLScriptConstants.CREATE_MASK);
         Iterator<MaskTableRuleConfiguration> iterator = ruleConfig.getTables().iterator();
         while (iterator.hasNext()) {
             MaskTableRuleConfiguration tableRuleConfig = iterator.next();
-            result.append(String.format(DistSQLScriptConstants.MASK, tableRuleConfig.getName(), getMaskColumns(tableRuleConfig.getColumns(), ruleConfig.getMaskAlgorithms())));
+            stringBuilder.append(String.format(DistSQLScriptConstants.MASK, tableRuleConfig.getName(), getMaskColumns(tableRuleConfig.getColumns(), ruleConfig.getMaskAlgorithms())));
             if (iterator.hasNext()) {
-                result.append(DistSQLScriptConstants.COMMA).append(System.lineSeparator());
+                stringBuilder.append(DistSQLScriptConstants.COMMA).append(System.lineSeparator());
             }
         }
-        result.append(DistSQLScriptConstants.SEMI).append(System.lineSeparator()).append(System.lineSeparator());
+        stringBuilder.append(DistSQLScriptConstants.SEMI).append(System.lineSeparator()).append(System.lineSeparator());
     }
     
     private String getMaskColumns(final Collection<MaskColumnRuleConfiguration> columnRuleConfig, final Map<String, AlgorithmConfiguration> maskAlgorithms) {
@@ -604,7 +606,7 @@ public final class ConvertYamlConfigurationExecutor implements QueryableRALExecu
             }
             result.append(String.format(DistSQLScriptConstants.PROPERTY, key, value));
             if (iterator.hasNext()) {
-                result.append(DistSQLScriptConstants.COMMA).append(" ");
+                result.append(DistSQLScriptConstants.COMMA).append(' ');
             }
         }
         return result.toString();
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/ExportUtils.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/ExportUtils.java
index afdd7a8a6e4..654d8ba8c1e 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/ExportUtils.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/ExportUtils.java
@@ -36,8 +36,10 @@ import org.apache.shardingsphere.single.api.config.SingleRuleConfiguration;
 
 import javax.sql.DataSource;
 import java.io.File;
-import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Map.Entry;
@@ -61,7 +63,7 @@ public final class ExportUtils {
         if (!file.exists()) {
             file.getParentFile().mkdirs();
         }
-        try (FileOutputStream output = new FileOutputStream(file)) {
+        try (OutputStream output = Files.newOutputStream(Paths.get(file.toURI()))) {
             output.write(exportedData.getBytes());
             output.flush();
         } catch (final IOException ex) {
@@ -98,7 +100,7 @@ public final class ExportUtils {
     }
     
     private static void appendDataSourceConfiguration(final String name, final DataSource dataSource, final StringBuilder stringBuilder) {
-        stringBuilder.append("  ").append(name).append(":").append(System.lineSeparator());
+        stringBuilder.append("  ").append(name).append(':').append(System.lineSeparator());
         DataSourceProperties dataSourceProps = DataSourcePropertiesCreator.create(dataSource);
         dataSourceProps.getConnectionPropertySynonyms().getStandardProperties()
                 .forEach((key, value) -> stringBuilder.append("    ").append(key).append(": ").append(value).append(System.lineSeparator()));
diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportDatabaseConfigurationExecutorTest.java b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportDatabaseConfigurationExecutorTest.java
index 9354600d7ba..4fc2334e6c2 100644
--- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportDatabaseConfigurationExecutorTest.java
+++ b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportDatabaseConfigurationExecutorTest.java
@@ -38,7 +38,6 @@ import javax.sql.DataSource;
 import java.io.BufferedReader;
 import java.io.FileReader;
 import java.io.IOException;
-import java.sql.SQLException;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.LinkedHashMap;
@@ -64,7 +63,7 @@ class ExportDatabaseConfigurationExecutorTest {
     }
     
     @Test
-    void assertExecute() throws SQLException {
+    void assertExecute() {
         when(database.getName()).thenReturn("normal_db");
         when(database.getResourceMetaData().getDataSources()).thenReturn(createDataSourceMap());
         when(database.getRuleMetaData().getConfigurations()).thenReturn(Collections.singleton(createShardingRuleConfiguration()));
diff --git a/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/format/MySQLFormatVisitor.java b/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/format/MySQLFormatVisitor.java
index 408b2d6f55d..dcae7187ab5 100644
--- a/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/format/MySQLFormatVisitor.java
+++ b/sql-parser/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/format/MySQLFormatVisitor.java
@@ -77,7 +77,7 @@ import java.util.Properties;
  */
 public final class MySQLFormatVisitor extends MySQLStatementBaseVisitor<String> implements SQLFormatVisitor {
     
-    private final StringBuilder formattedSQL = new StringBuilder();
+    private final StringBuilder formattedSQL = new StringBuilder(256);
     
     private boolean upperCase = true;
     
@@ -103,11 +103,11 @@ public final class MySQLFormatVisitor extends MySQLStatementBaseVisitor<String>
         } else {
             visit(ctx.queryExpression());
             if (null != ctx.lockClauseList()) {
-                formattedSQL.append(" ");
+                formattedSQL.append(' ');
                 visit(ctx.lockClauseList());
             }
         }
-        formatPrint(";");
+        formatPrint(';');
         return formattedSQL.toString();
     }
     
@@ -115,15 +115,15 @@ public final class MySQLFormatVisitor extends MySQLStatementBaseVisitor<String>
     public String visitQueryExpression(final QueryExpressionContext ctx) {
         if (null != ctx.withClause()) {
             visit(ctx.withClause());
-            formatPrint(" ");
+            formatPrint(' ');
         }
         visit(null == ctx.queryExpressionBody() ? ctx.queryExpressionParens() : ctx.queryExpressionBody());
         if (null != ctx.orderByClause()) {
-            formatPrint(" ");
+            formatPrint(' ');
             visit(ctx.orderByClause());
         }
         if (null != ctx.limitClause()) {
-            formatPrint(" ");
+            formatPrint(' ');
             visit(ctx.limitClause());
         }
         return formattedSQL.toString();
@@ -133,12 +133,12 @@ public final class MySQLFormatVisitor extends MySQLStatementBaseVisitor<String>
     public String visitQueryExpressionParens(final QueryExpressionParensContext ctx) {
         formatPrintln();
         indentCount++;
-        formatPrint("(");
+        formatPrint('(');
         formatPrintln();
         if (null == ctx.queryExpressionParens()) {
             visit(ctx.queryExpression());
             if (null != ctx.lockClauseList()) {
-                formattedSQL.append(" ");
+                formattedSQL.append(' ');
                 visit(ctx.lockClauseList());
             }
         } else {
@@ -146,7 +146,7 @@ public final class MySQLFormatVisitor extends MySQLStatementBaseVisitor<String>
         }
         indentCount--;
         formatPrintln();
-        formatPrint(")");
+        formatPrint(')');
         return formattedSQL.toString();
     }
     
@@ -169,7 +169,7 @@ public final class MySQLFormatVisitor extends MySQLStatementBaseVisitor<String>
         formattedSQL.append("\nUNION\n");
         if (null != ctx.combineOption()) {
             visit(ctx.combineOption());
-            formattedSQL.append(" ");
+            formattedSQL.append(' ');
         }
         visit(null == ctx.queryPrimary() ? ctx.queryExpressionParens() : ctx.queryPrimary());
         return formattedSQL.toString();
@@ -181,7 +181,7 @@ public final class MySQLFormatVisitor extends MySQLStatementBaseVisitor<String>
         int selectSpecCount = ctx.selectSpecification().size();
         for (int i = 0; i < selectSpecCount; i++) {
             visit(ctx.selectSpecification(i));
-            formatPrint(" ");
+            formatPrint(' ');
         }
         visit(ctx.projections());
         if (null != ctx.fromClause()) {
@@ -217,15 +217,15 @@ public final class MySQLFormatVisitor extends MySQLStatementBaseVisitor<String>
     @Override
     public String visitInsert(final InsertContext ctx) {
         visit(ctx.INSERT());
-        formatPrint(" ");
+        formatPrint(' ');
         visit(ctx.insertSpecification());
-        formatPrint(" ");
+        formatPrint(' ');
         if (null != ctx.INTO()) {
             visit(ctx.INTO());
-            formatPrint(" ");
+            formatPrint(' ');
         }
         visit(ctx.tableName());
-        formatPrint(" ");
+        formatPrint(' ');
         if (null != ctx.partitionNames()) {
             formatPrintln();
             visit(ctx.partitionNames());
@@ -255,18 +255,18 @@ public final class MySQLFormatVisitor extends MySQLStatementBaseVisitor<String>
             }
             visit(ctx.identifier(i));
         }
-        formatPrint(")");
+        formatPrint(')');
         return formattedSQL.toString();
     }
     
     @Override
     public String visitInsertValuesClause(final InsertValuesClauseContext ctx) {
         if (null != ctx.LP_()) {
-            formatPrint("(");
+            formatPrint('(');
             if (null != ctx.fields()) {
                 visit(ctx.fields());
             }
-            formatPrint(")");
+            formatPrint(')');
         }
         formatPrintln();
         visit(null == ctx.VALUE() ? ctx.VALUES() : ctx.VALUE());
@@ -276,7 +276,7 @@ public final class MySQLFormatVisitor extends MySQLStatementBaseVisitor<String>
             int valueCount = ctx.assignmentValues().size();
             for (int i = 0; i < valueCount; i++) {
                 if (0 != i) {
-                    formatPrint(",");
+                    formatPrint(',');
                     formatPrintln();
                 }
                 visit(ctx.assignmentValues(i));
@@ -299,10 +299,10 @@ public final class MySQLFormatVisitor extends MySQLStatementBaseVisitor<String>
     public String visitInsertSelectClause(final InsertSelectClauseContext ctx) {
         if (null != ctx.valueReference()) {
             visit(ctx.valueReference());
-            formatPrint(" ");
+            formatPrint(' ');
         }
         if (null != ctx.LP_()) {
-            formatPrint("(");
+            formatPrint('(');
             if (null != ctx.fields()) {
                 visit(ctx.fields());
             }
@@ -317,11 +317,11 @@ public final class MySQLFormatVisitor extends MySQLStatementBaseVisitor<String>
     public String visitSetAssignmentsClause(final SetAssignmentsClauseContext ctx) {
         if (null != ctx.valueReference()) {
             visit(ctx.valueReference());
-            formatPrint(" ");
+            formatPrint(' ');
         }
         indentCount++;
         visit(ctx.SET());
-        formatPrint(" ");
+        formatPrint(' ');
         int assignmentCount = ctx.assignment().size();
         for (int i = 0; i < assignmentCount; i++) {
             if (0 != i) {
@@ -550,7 +550,7 @@ public final class MySQLFormatVisitor extends MySQLStatementBaseVisitor<String>
         indentCount++;
         if (null != ctx.unqualifiedShorthand()) {
             visit(ctx.unqualifiedShorthand());
-            formattedSQL.append(" ");
+            formattedSQL.append(' ');
         }
         int projectionCount = ctx.projection().size();
         int lineItemCount = 0;
@@ -754,7 +754,7 @@ public final class MySQLFormatVisitor extends MySQLStatementBaseVisitor<String>
         formatPrint("WITH ");
         if (null != ctx.RECURSIVE()) {
             visit(ctx.RECURSIVE());
-            formattedSQL.append(" ");
+            formattedSQL.append(' ');
         }
         for (int i = 0; i < ctx.cteClause().size(); i++) {
             if (i != 0 && i < ctx.cteClause().size() - 1) {
@@ -763,7 +763,7 @@ public final class MySQLFormatVisitor extends MySQLStatementBaseVisitor<String>
             visit(ctx.cteClause(i));
         }
         if (null != ctx.parent) {
-            formattedSQL.append("\n");
+            formattedSQL.append('\n');
         }
         return formattedSQL.toString();
     }
@@ -771,10 +771,10 @@ public final class MySQLFormatVisitor extends MySQLStatementBaseVisitor<String>
     @Override
     public String visitCteClause(final CteClauseContext ctx) {
         visit(ctx.identifier());
-        formattedSQL.append(" ");
+        formattedSQL.append(' ');
         if (null != ctx.columnNames()) {
             visit(ctx.columnNames());
-            formattedSQL.append(" ");
+            formattedSQL.append(' ');
         }
         formattedSQL.append("AS ");
         visit(ctx.subquery());
diff --git a/src/resources/pmd.xml b/src/resources/pmd.xml
index 978db58336e..28be1d2147f 100644
--- a/src/resources/pmd.xml
+++ b/src/resources/pmd.xml
@@ -138,4 +138,25 @@
     <rule ref="category/java/errorprone.xml/UnnecessaryCaseChange" />
     <rule ref="category/java/errorprone.xml/UseCorrectExceptionLogging" />
     <rule ref="category/java/errorprone.xml/UseProperClassLoader" />
+    
+    <rule ref="category/java/performance.xml/AddEmptyString" />
+    <rule ref="category/java/performance.xml/AppendCharacterWithChar" />
+    <rule ref="category/java/performance.xml/AvoidArrayLoops" />
+    <rule ref="category/java/performance.xml/AvoidCalendarDateCreation" />
+    <rule ref="category/java/performance.xml/AvoidFileStream" />
+    <rule ref="category/java/performance.xml/ConsecutiveAppendsShouldReuse" />
+    <rule ref="category/java/performance.xml/ConsecutiveLiteralAppends" />
+    <rule ref="category/java/performance.xml/InefficientEmptyStringCheck" />
+    <rule ref="category/java/performance.xml/InefficientStringBuffering" />
+    <rule ref="category/java/performance.xml/RedundantFieldInitializer" />
+    <rule ref="category/java/performance.xml/StringInstantiation" />
+    <rule ref="category/java/performance.xml/StringToString" />
+    <rule ref="category/java/performance.xml/TooFewBranchesForASwitchStatement" />
+    <rule ref="category/java/performance.xml/UseArrayListInsteadOfVector" />
+    <rule ref="category/java/performance.xml/UseArraysAsList" />
+    <rule ref="category/java/performance.xml/UseIndexOfChar" />
+    <rule ref="category/java/performance.xml/UseIOStreamsWithApacheCommonsFileItem" />
+    <rule ref="category/java/performance.xml/UselessStringValueOf" />
+    <rule ref="category/java/performance.xml/UseStringBufferForStringAppends" />
+    <rule ref="category/java/performance.xml/UseStringBufferLength" />
 </ruleset>
diff --git a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/result/type/csv/CsvSQLParseResultReporter.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/result/type/csv/CsvSQLParseResultReporter.java
index 22617274341..9c7cc608760 100644
--- a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/result/type/csv/CsvSQLParseResultReporter.java
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/external/result/type/csv/CsvSQLParseResultReporter.java
@@ -24,8 +24,10 @@ import org.apache.shardingsphere.test.it.sql.parser.external.env.SQLParserExtern
 import org.apache.shardingsphere.test.it.sql.parser.external.result.SQLParseResultReporter;
 
 import java.io.File;
-import java.io.FileWriter;
 import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.nio.file.StandardOpenOption;
 
 /**
  * SQL parse result reporter for CSV.
@@ -38,7 +40,7 @@ public final class CsvSQLParseResultReporter implements SQLParseResultReporter {
     public CsvSQLParseResultReporter(final String databaseType) {
         File csvFile = new File(SQLParserExternalITEnvironment.getInstance().getResultPath() + databaseType + "-result.csv");
         printHeader(csvFile);
-        printer = new CSVPrinter(new FileWriter(csvFile, true), CSVFormat.DEFAULT.builder().setSkipHeaderRecord(true).build());
+        printer = new CSVPrinter(Files.newBufferedWriter(Paths.get(csvFile.toURI()), StandardOpenOption.APPEND), CSVFormat.DEFAULT.builder().setSkipHeaderRecord(true).build());
     }
     
     @SneakyThrows(IOException.class)
@@ -47,8 +49,7 @@ public final class CsvSQLParseResultReporter implements SQLParseResultReporter {
             return;
         }
         try (
-                FileWriter fileWriter = new FileWriter(csvFile);
-                CSVPrinter csvHeaderPrinter = new CSVPrinter(fileWriter, CSVFormat.DEFAULT.builder().setSkipHeaderRecord(false).build())) {
+                CSVPrinter csvHeaderPrinter = new CSVPrinter(Files.newBufferedWriter(Paths.get(csvFile.toURI())), CSVFormat.DEFAULT.builder().setSkipHeaderRecord(false).build())) {
             csvHeaderPrinter.printRecord("SQLCaseId", "DatabaseType", "Result", "SQL");
             csvHeaderPrinter.flush();
         }
diff --git a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/SQLCaseAssertContext.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/SQLCaseAssertContext.java
index e94003373e8..ef6e1b02953 100644
--- a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/SQLCaseAssertContext.java
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/SQLCaseAssertContext.java
@@ -53,27 +53,19 @@ public final class SQLCaseAssertContext {
     }
     
     private void appendSQLCaseId(final StringBuilder builder) {
-        builder.append("SQL Case ID : ");
-        builder.append(caseId);
-        builder.append(System.lineSeparator());
+        builder.append("SQL Case ID : ").append(caseId).append(System.lineSeparator());
     }
     
     private void appendSQL(final StringBuilder builder) {
         builder.append("SQL         : ");
         if (SQLCaseType.PLACEHOLDER == caseType) {
-            builder.append(sql);
-            builder.append(System.lineSeparator());
-            builder.append("SQL Params  : ");
-            builder.append(params);
-            builder.append(System.lineSeparator());
+            builder.append(sql).append(System.lineSeparator()).append("SQL Params  : ").append(params).append(System.lineSeparator());
         } else {
             builder.append(sql);
         }
     }
     
     private void appendFailureMessage(final String failureMessage, final StringBuilder builder) {
-        builder.append(System.lineSeparator());
-        builder.append(failureMessage);
-        builder.append(System.lineSeparator());
+        builder.append(System.lineSeparator()).append(failureMessage).append(System.lineSeparator());
     }
 }
diff --git a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/loader/SQLParserTestCaseLoaderCallback.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/loader/SQLParserTestCaseLoaderCallback.java
index 615fe20a772..ec761816f01 100644
--- a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/loader/SQLParserTestCaseLoaderCallback.java
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/loader/SQLParserTestCaseLoaderCallback.java
@@ -26,9 +26,10 @@ import org.apache.shardingsphere.test.it.sql.parser.internal.loader.CaseLoaderCa
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -54,7 +55,7 @@ public final class SQLParserTestCaseLoaderCallback implements CaseLoaderCallback
     public Map<String, SQLParserTestCase> loadFromDirectory(final String rootDirectory) throws IOException, JAXBException {
         Map<String, SQLParserTestCase> result = new HashMap<>(Short.MAX_VALUE, 1);
         for (File each : CaseFileLoader.loadFilesFromDirectory(rootDirectory)) {
-            try (FileInputStream inputStream = new FileInputStream(each)) {
+            try (InputStream inputStream = Files.newInputStream(Paths.get(each.toURI()))) {
                 Map<String, SQLParserTestCase> testCases = createTestCases(inputStream);
                 checkDuplicatedTestCases(testCases, result);
                 result.putAll(testCases);
diff --git a/test/it/yaml/src/main/java/org/apache/shardingsphere/test/it/yaml/YamlRuleConfigurationIT.java b/test/it/yaml/src/main/java/org/apache/shardingsphere/test/it/yaml/YamlRuleConfigurationIT.java
index db5e2c27fc0..8e4c57554e0 100644
--- a/test/it/yaml/src/main/java/org/apache/shardingsphere/test/it/yaml/YamlRuleConfigurationIT.java
+++ b/test/it/yaml/src/main/java/org/apache/shardingsphere/test/it/yaml/YamlRuleConfigurationIT.java
@@ -24,9 +24,11 @@ import org.junit.jupiter.api.Test;
 
 import java.io.BufferedReader;
 import java.io.File;
-import java.io.FileReader;
 import java.io.IOException;
+import java.net.URISyntaxException;
 import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
@@ -47,13 +49,11 @@ public abstract class YamlRuleConfigurationIT {
     }
     
     @Test
-    void assertUnmarshalWithYamlBytes() throws IOException {
+    void assertUnmarshalWithYamlBytes() throws IOException, URISyntaxException {
         URL url = Thread.currentThread().getContextClassLoader().getResource(yamlFile);
         assertNotNull(url);
         StringBuilder yamlContent = new StringBuilder();
-        try (
-                FileReader fileReader = new FileReader(url.getFile());
-                BufferedReader reader = new BufferedReader(fileReader)) {
+        try (BufferedReader reader = Files.newBufferedReader(Paths.get(url.toURI()))) {
             String line;
             while (null != (line = reader.readLine())) {
                 yamlContent.append(line).append(System.lineSeparator());