diff --git a/core/lib/Drupal/Core/Asset/AssetResolver.php b/core/lib/Drupal/Core/Asset/AssetResolver.php
index 863f971..9f1c4a1 100644
--- a/core/lib/Drupal/Core/Asset/AssetResolver.php
+++ b/core/lib/Drupal/Core/Asset/AssetResolver.php
@@ -312,7 +312,7 @@ public function getJsAssets(AttachedAssetsInterface $assets, $optimize) {
         $settings = $this->getJsSettingsAssets($assets);
         // Allow modules to add cached JavaScript settings.
         foreach ($this->moduleHandler->getImplementations('js_settings_build') as $module) {
-          $function = $module . '_' . 'js_settings_build';
+          $function = $module . '_js_settings_build';
           $function($settings, $assets);
         }
       }
diff --git a/core/lib/Drupal/Core/Command/DbDumpCommand.php b/core/lib/Drupal/Core/Command/DbDumpCommand.php
index aa81af0..44dc2ac 100644
--- a/core/lib/Drupal/Core/Command/DbDumpCommand.php
+++ b/core/lib/Drupal/Core/Command/DbDumpCommand.php
@@ -414,10 +414,12 @@ protected function getTableScript($table, array $schema, array $data) {
       foreach ($data as $record) {
         $insert .= "->values(" . Variable::export($record) . ")\n";
       }
-      $output .= "\$connection->insert('" . $table . "')\n"
-        . "->fields(" . Variable::export(array_keys($schema['fields'])) . ")\n"
-        . $insert
-        . "->execute();\n\n";
+      $output .= implode('', [
+        "\$connection->insert('" . $table . "')\n",
+        "->fields(" . Variable::export(array_keys($schema['fields'])) . ")\n",
+        $insert,
+        "->execute();\n\n",
+      ]);
     }
     return $output;
   }
diff --git a/core/lib/Drupal/Core/Entity/EntityTypeManager.php b/core/lib/Drupal/Core/Entity/EntityTypeManager.php
index abe96a5..3a082e4 100644
--- a/core/lib/Drupal/Core/Entity/EntityTypeManager.php
+++ b/core/lib/Drupal/Core/Entity/EntityTypeManager.php
@@ -108,7 +108,7 @@ protected function findDefinitions() {
     // Directly call the hook implementations to pass the definitions to them
     // by reference, so new entity types can be added.
     foreach ($this->moduleHandler->getImplementations('entity_type_build') as $module) {
-      $function = $module . '_' . 'entity_type_build';
+      $function = $module . '_entity_type_build';
       $function($definitions);
     }
     foreach ($definitions as $plugin_id => $definition) {
diff --git a/core/lib/Drupal/Core/Render/theme.api.php b/core/lib/Drupal/Core/Render/theme.api.php
index c12dd3d..7c81bb2 100644
--- a/core/lib/Drupal/Core/Render/theme.api.php
+++ b/core/lib/Drupal/Core/Render/theme.api.php
@@ -707,7 +707,7 @@ function hook_theme_suggestions_alter(array &$suggestions, array $variables, $ho
  */
 function hook_theme_suggestions_HOOK_alter(array &$suggestions, array $variables) {
   if (empty($variables['header'])) {
-    $suggestions[] = 'hookname__' . 'no_header';
+    $suggestions[] = 'hookname__no_header';
   }
 }
 
diff --git a/core/modules/config/config.module b/core/modules/config/config.module
index b280fe8..c47cf30 100644
--- a/core/modules/config/config.module
+++ b/core/modules/config/config.module
@@ -70,7 +70,7 @@ function config_file_download($uri) {
       $date = DateTime::createFromFormat('U', $request->server->get('REQUEST_TIME'));
       $date_string = $date->format('Y-m-d-H-i');
       $hostname = str_replace('.', '-', $request->getHttpHost());
-      $filename = 'config' . '-' . $hostname . '-' . $date_string . '.tar.gz';
+      $filename = 'config-' . $hostname . '-' . $date_string . '.tar.gz';
       $disposition = 'attachment; filename="' . $filename . '"';
       return [
         'Content-disposition' => $disposition,
diff --git a/core/modules/system/tests/modules/theme_suggestions_test/theme_suggestions_test.module b/core/modules/system/tests/modules/theme_suggestions_test/theme_suggestions_test.module
index 50fb86d..543db5b 100644
--- a/core/modules/system/tests/modules/theme_suggestions_test/theme_suggestions_test.module
+++ b/core/modules/system/tests/modules/theme_suggestions_test/theme_suggestions_test.module
@@ -32,21 +32,21 @@ function theme_suggestions_test_theme_suggestions_alter(array &$suggestions, arr
  */
 function theme_suggestions_test_theme_suggestions_theme_test_suggestions_alter(array &$suggestions, array $variables) {
   drupal_set_message(__FUNCTION__ . '() executed.');
-  $suggestions[] = 'theme_test_suggestions__' . 'module_override';
+  $suggestions[] = 'theme_test_suggestions__module_override';
 }
 
 /**
  * Implements hook_theme_suggestions_HOOK_alter().
  */
 function theme_suggestions_test_theme_suggestions_theme_test_function_suggestions_alter(array &$suggestions, array $variables) {
-  $suggestions[] = 'theme_test_function_suggestions__' . 'module_override';
+  $suggestions[] = 'theme_test_function_suggestions__module_override';
 }
 
 /**
  * Implements hook_theme_suggestions_HOOK_alter().
  */
 function theme_suggestions_test_theme_suggestions_theme_test_specific_suggestions_alter(array &$suggestions, array $variables) {
-  $suggestions[] = 'theme_test_specific_suggestions__' . 'variant__foo';
+  $suggestions[] = 'theme_test_specific_suggestions__variant__foo';
 }
 
 /**
diff --git a/core/modules/system/tests/modules/theme_test/theme_test.module b/core/modules/system/tests/modules/theme_test/theme_test.module
index 6a701ab..cd2f6dd 100644
--- a/core/modules/system/tests/modules/theme_test/theme_test.module
+++ b/core/modules/system/tests/modules/theme_test/theme_test.module
@@ -167,7 +167,7 @@ function theme_theme_test_function_suggestions($variables) {
  * Implements hook_theme_suggestions_HOOK().
  */
 function theme_test_theme_suggestions_theme_test_suggestion_provided(array $variables) {
-  return ['theme_test_suggestion_provided__' . 'foo'];
+  return ['theme_test_suggestion_provided__foo'];
 }
 
 /**
diff --git a/core/modules/system/tests/src/Functional/Mail/HtmlToTextTest.php b/core/modules/system/tests/src/Functional/Mail/HtmlToTextTest.php
index bdbfd74..aba3f83 100644
--- a/core/modules/system/tests/src/Functional/Mail/HtmlToTextTest.php
+++ b/core/modules/system/tests/src/Functional/Mail/HtmlToTextTest.php
@@ -212,27 +212,29 @@ public function testDrupalHtmltoTextCollapsesWhitespace() {
    * (at least) a newline in the plaintext version.
    */
   public function testDrupalHtmlToTextBlockTagToNewline() {
-    $input = '[text]'
-      . '<blockquote>[blockquote]</blockquote>'
-      . '<br />[br]'
-      . '<dl><dt>[dl-dt]</dt>'
-      . '<dt>[dt]</dt>'
-      . '<dd>[dd]</dd>'
-      . '<dd>[dd-dl]</dd></dl>'
-      . '<h1>[h1]</h1>'
-      . '<h2>[h2]</h2>'
-      . '<h3>[h3]</h3>'
-      . '<h4>[h4]</h4>'
-      . '<h5>[h5]</h5>'
-      . '<h6>[h6]</h6>'
-      . '<hr />[hr]'
-      . '<ol><li>[ol-li]</li>'
-      . '<li>[li]</li>'
-      . '<li>[li-ol]</li></ol>'
-      . '<p>[p]</p>'
-      . '<ul><li>[ul-li]</li>'
-      . '<li>[li-ul]</li></ul>'
-      . '[text]';
+    $input = implode('', [
+      '[text]',
+      '<blockquote>[blockquote]</blockquote>',
+      '<br />[br]',
+      '<dl><dt>[dl-dt]</dt>',
+      '<dt>[dt]</dt>',
+      '<dd>[dd]</dd>',
+      '<dd>[dd-dl]</dd></dl>',
+      '<h1>[h1]</h1>',
+      '<h2>[h2]</h2>',
+      '<h3>[h3]</h3>',
+      '<h4>[h4]</h4>',
+      '<h5>[h5]</h5>',
+      '<h6>[h6]</h6>',
+      '<hr />[hr]',
+      '<ol><li>[ol-li]</li>',
+      '<li>[li]</li>',
+      '<li>[li-ol]</li></ol>',
+      '<p>[p]</p>',
+      '<ul><li>[ul-li]</li>',
+      '<li>[li-ul]</li></ul>',
+      '[text]',
+    ]);
     $output = MailFormatHelper::htmlToText($input);
     $pass = $this->assertFalse(
       preg_match('/\][^\n]*\[/s', $output),
@@ -288,22 +290,26 @@ public function testHeaderSeparation() {
    */
   public function testFootnoteReferences() {
     global $base_path, $base_url;
-    $source = '<a href="http://www.example.com/node/1">Host and path</a>'
-      . '<br /><a href="http://www.example.com">Host, no path</a>'
-      . '<br /><a href="' . $base_path . 'node/1">Path, no host</a>'
-      . '<br /><a href="node/1">Relative path</a>';
+    $source = implode('', [
+      '<a href="http://www.example.com/node/1">Host and path</a>',
+      '<br /><a href="http://www.example.com">Host, no path</a>',
+      '<br /><a href="' . $base_path . 'node/1">Path, no host</a>',
+      '<br /><a href="node/1">Relative path</a>',
+    ]);
     // @todo Footnote URLs should be absolute.
-    $tt = "Host and path [1]"
-      . "\nHost, no path [2]"
+    $tt = implode('', [
+      "Host and path [1]",
+      "\nHost, no path [2]",
       // @todo The following two references should be combined.
-      . "\nPath, no host [3]"
-      . "\nRelative path [4]"
-      . "\n"
-      . "\n[1] http://www.example.com/node/1"
-      . "\n[2] http://www.example.com"
+      "\nPath, no host [3]",
+      "\nRelative path [4]",
+      "\n",
+      "\n[1] http://www.example.com/node/1",
+      "\n[2] http://www.example.com",
       // @todo The following two references should be combined.
-      . "\n[3] $base_url/node/1"
-      . "\n[4] node/1\n";
+      "\n[3] $base_url/node/1",
+      "\n[4] node/1\n",
+    ]);
     $this->assertHtmlToText($source, $tt, 'Footnotes');
   }
 
diff --git a/core/modules/user/src/Plugin/views/field/Roles.php b/core/modules/user/src/Plugin/views/field/Roles.php
index e7d9495..fd507ea 100644
--- a/core/modules/user/src/Plugin/views/field/Roles.php
+++ b/core/modules/user/src/Plugin/views/field/Roles.php
@@ -101,8 +101,8 @@ protected function documentSelfTokens(&$tokens) {
 
   protected function addSelfTokens(&$tokens, $item) {
     if (!empty($item['role'])) {
-      $tokens['{{ ' . $this->options['id'] . '__role' . ' }}'] = $item['role'];
-      $tokens['{{ ' . $this->options['id'] . '__rid' . ' }}'] = $item['rid'];
+      $tokens['{{ ' . $this->options['id'] . '__role }}'] = $item['role'];
+      $tokens['{{ ' . $this->options['id'] . '__rid }}'] = $item['rid'];
     }
   }
 
diff --git a/core/phpcs.xml.dist b/core/phpcs.xml.dist
index 5eeb7ce..0f8f17d 100644
--- a/core/phpcs.xml.dist
+++ b/core/phpcs.xml.dist
@@ -99,6 +99,7 @@
   <rule ref="../vendor/drupal/coder/coder_sniffer/Drupal/Sniffs/Semantics/PregSecuritySniff.php"/>
   <rule ref="../vendor/drupal/coder/coder_sniffer/Drupal/Sniffs/Semantics/TInHookMenuSniff.php"/>
   <rule ref="../vendor/drupal/coder/coder_sniffer/Drupal/Sniffs/Semantics/TInHookSchemaSniff.php"/>
+  <rule ref="../vendor/drupal/coder/coder_sniffer/Drupal/Sniffs/Strings/UnnecessaryStringConcatSniff.php"/>
   <rule ref="../vendor/drupal/coder/coder_sniffer/Drupal/Sniffs/WhiteSpace/CommaSniff.php"/>
   <rule ref="../vendor/drupal/coder/coder_sniffer/Drupal/Sniffs/WhiteSpace/EmptyLinesSniff.php"/>
   <rule ref="../vendor/drupal/coder/coder_sniffer/Drupal/Sniffs/WhiteSpace/NamespaceSniff.php"/>
