diff --git a/core/modules/breakpoint/breakpoint.module b/core/modules/breakpoint/breakpoint.module
index a0fd468df07d0ee90b3cac3e3bd7869da9c27a59..77b837ed9d8c4640f6738db325c9b6daec8ae136 100644
--- a/core/modules/breakpoint/breakpoint.module
+++ b/core/modules/breakpoint/breakpoint.module
@@ -37,14 +37,14 @@ function breakpoint_help($route_name, RouteMatchInterface $route_match) {
 }
 
 /**
- * Implements hook_themes_installed()
+ * Implements hook_themes_installed().
  */
 function breakpoint_themes_installed($theme_list) {
   \Drupal::service('breakpoint.manager')->clearCachedDefinitions();
 }
 
 /**
- * Implements hook_themes_uninstalled()
+ * Implements hook_themes_uninstalled().
  */
 function breakpoint_themes_uninstalled($theme_list) {
   \Drupal::service('breakpoint.manager')->clearCachedDefinitions();
diff --git a/core/modules/config/tests/config_install_dependency_test/config_install_dependency_test.module b/core/modules/config/tests/config_install_dependency_test/config_install_dependency_test.module
index fbf11e5dabf6ad732da0dc2d2569c9cb6d63d0a6..3dfc959b1dad882ec084e27c9628468a54bfaa82 100644
--- a/core/modules/config/tests/config_install_dependency_test/config_install_dependency_test.module
+++ b/core/modules/config/tests/config_install_dependency_test/config_install_dependency_test.module
@@ -8,7 +8,7 @@
 use Drupal\Core\Entity\EntityInterface;
 
 /**
- * Implements hook_ENTITY_TYPE_create.
+ * Implements hook_ENTITY_TYPE_create().
  */
 function config_install_dependency_test_config_test_create(EntityInterface $entity) {
   // Add an enforced dependency on this module so that we can test if this is
diff --git a/core/modules/content_moderation/tests/modules/content_moderation_test_views/content_moderation_test_views.module b/core/modules/content_moderation/tests/modules/content_moderation_test_views/content_moderation_test_views.module
index f974e7eba10ee8f73e95b62a9762ef9c40c28e9a..11fe270883914292c9447bc5f50600084ef68467 100644
--- a/core/modules/content_moderation/tests/modules/content_moderation_test_views/content_moderation_test_views.module
+++ b/core/modules/content_moderation/tests/modules/content_moderation_test_views/content_moderation_test_views.module
@@ -11,11 +11,6 @@
 /**
  * Implements hook_views_query_alter().
  *
- * @param \Drupal\views\ViewExecutable $view
- *   The view object about to be processed.
- * @param \Drupal\views\Plugin\views\query\QueryPluginBase $query
- *   The query plugin object for the query.
- *
  * @see \Drupal\Tests\content_moderation\Kernel\ViewsModerationStateSortTest::testSortRevisionBaseTable()
  */
 function content_moderation_test_views_views_query_alter(ViewExecutable $view, QueryPluginBase $query) {
diff --git a/core/modules/filter/filter.module b/core/modules/filter/filter.module
index 5bded3b0ef244b7ffb9e9f08a00fe1f2239d69a5..70a603e8c5db12050f298591a477e3ab25c02b4b 100644
--- a/core/modules/filter/filter.module
+++ b/core/modules/filter/filter.module
@@ -801,9 +801,6 @@ function _filter_html_image_secure_process($text) {
  *
  * Formats an image DOM element that has an invalid source.
  *
- * @param DOMElement $image
- *   An IMG node to format, parsed from the filtered text.
- *
  * @see _filter_html_image_secure_process()
  */
 function filter_filter_secure_image_alter(&$image) {
diff --git a/core/modules/image/image.install b/core/modules/image/image.install
index 725bab886a78462e6eb811a3471ac2edd1bfcf6a..bd692bd70c1896acbc42746b9da7e898c124d0b9 100644
--- a/core/modules/image/image.install
+++ b/core/modules/image/image.install
@@ -33,9 +33,7 @@ function image_uninstall() {
 }
 
 /**
- * Implements hook_requirements() to check the PHP GD Library.
- *
- * @param $phase
+ * Implements hook_requirements().
  */
 function image_requirements($phase) {
   if ($phase != 'runtime') {
diff --git a/core/modules/language/language.module b/core/modules/language/language.module
index 1a0cf7f54585731407324c68a246641ef00cff59..91641dec5628da45cf59079f92358a0969210dab 100644
--- a/core/modules/language/language.module
+++ b/core/modules/language/language.module
@@ -374,7 +374,7 @@ function language_field_info_alter(&$info) {
 }
 
 /**
- * Implements hook_entity_field_access()
+ * Implements hook_entity_field_access().
  */
 function language_entity_field_access($operation, FieldDefinitionInterface $field_definition, AccountInterface $account, FieldItemListInterface $items = NULL) {
   // Only allow edit access on a langcode field if the entity it is attached to
diff --git a/core/modules/search/tests/modules/search_date_query_alter/search_date_query_alter.module b/core/modules/search/tests/modules/search_date_query_alter/search_date_query_alter.module
index e595796e1f8d03ba8d508e8ae8b766337eafa6a7..c13be2a34cd8216f0bdfadec743a125043e5beba 100644
--- a/core/modules/search/tests/modules/search_date_query_alter/search_date_query_alter.module
+++ b/core/modules/search/tests/modules/search_date_query_alter/search_date_query_alter.module
@@ -8,7 +8,9 @@
 use Drupal\Core\Database\Query\AlterableInterface;
 
 /**
- * Implements hook_query_TAG_alter(): tag search_$type with $type node_search.
+ * Implements hook_query_TAG_alter().
+ *
+ * Tags search_$type with $type node_search.
  */
 function search_date_query_alter_query_search_node_search_alter(AlterableInterface $query) {
   // Start date Sat, 19 Mar 2016 00:00:00 GMT.
diff --git a/core/modules/search/tests/modules/search_query_alter/search_query_alter.module b/core/modules/search/tests/modules/search_query_alter/search_query_alter.module
index aee8e6c6d32ddf800c7032bc05f1bb1ea7087bb1..0c81da54eb5bf63879689f685eb8a0fb69c4a566 100644
--- a/core/modules/search/tests/modules/search_query_alter/search_query_alter.module
+++ b/core/modules/search/tests/modules/search_query_alter/search_query_alter.module
@@ -8,7 +8,9 @@
 use Drupal\Core\Database\Query\AlterableInterface;
 
 /**
- * Implements hook_query_TAG_alter(): tag search_$type with $type node_search.
+ * Implements hook_query_TAG_alter().
+ *
+ * Tags search_$type with $type node_search.
  */
 function search_query_alter_query_search_node_search_alter(AlterableInterface $query) {
   // For testing purposes, restrict the query to node type 'article' only.
diff --git a/core/modules/system/tests/modules/common_test/common_test.module b/core/modules/system/tests/modules/common_test/common_test.module
index 8abc74d7d8a3c0aff28f04666b99ac2db9d24e24..c8b496db0487baf54743c6e67ddd4e5c412d5291 100644
--- a/core/modules/system/tests/modules/common_test/common_test.module
+++ b/core/modules/system/tests/modules/common_test/common_test.module
@@ -47,7 +47,7 @@ function common_test_drupal_alter_alter(&$data, &$arg2 = NULL, &$arg3 = NULL) {
 }
 
 /**
- * Implements hook_TYPE_alter() on behalf of Bartik theme.
+ * Implements hook_TYPE_alter().
  *
  * Same as common_test_drupal_alter_alter(), but here, we verify that themes
  * can also alter and come last.
@@ -81,7 +81,7 @@ function bartik_drupal_alter_alter(&$data, &$arg2 = NULL, &$arg3 = NULL) {
 }
 
 /**
- * Implements hook_TYPE_alter() on behalf of block module.
+ * Implements hook_TYPE_alter().
  *
  * This is to verify that
  * \Drupal::moduleHandler()->alter(array(TYPE1, TYPE2), ...) allows
diff --git a/core/modules/system/tests/modules/form_test/form_test.module b/core/modules/system/tests/modules/form_test/form_test.module
index 14e011877a7d57261cff87ceba4482605290f7f8..babfacd2ab8ce27f4ae0d1f6d8734ab69d886f42 100644
--- a/core/modules/system/tests/modules/form_test/form_test.module
+++ b/core/modules/system/tests/modules/form_test/form_test.module
@@ -8,7 +8,7 @@
 use Drupal\Core\Form\FormStateInterface;
 
 /**
- * Implements hook_form_FORM_ID_alter() on behalf of block.module.
+ * Implements hook_form_FORM_ID_alter().
  */
 function block_form_form_test_alter_form_alter(&$form, FormStateInterface $form_state) {
   \Drupal::messenger()->addStatus('block_form_form_test_alter_form_alter() executed.');
@@ -31,7 +31,7 @@ function form_test_form_form_test_alter_form_alter(&$form, FormStateInterface $f
 }
 
 /**
- * Implements hook_form_FORM_ID_alter() on behalf of system.module.
+ * Implements hook_form_FORM_ID_alter().
  */
 function system_form_form_test_alter_form_alter(&$form, FormStateInterface $form_state) {
   \Drupal::messenger()->addStatus('system_form_form_test_alter_form_alter() executed.');
diff --git a/core/modules/system/tests/modules/module_test/module_test.module b/core/modules/system/tests/modules/module_test/module_test.module
index dba4889d53050b6161d034f39217d8744d17a0a4..cbe81129b9b96ac04148aad1fe91bbdb73b84adc 100644
--- a/core/modules/system/tests/modules/module_test/module_test.module
+++ b/core/modules/system/tests/modules/module_test/module_test.module
@@ -95,7 +95,7 @@ function module_test_modules_uninstalled($modules) {
 }
 
 /**
- * Implements hook_module_implements_alter()
+ * Implements hook_module_implements_alter().
  *
  * @see module_test_altered_test_hook()
  * @see \Drupal\system\Tests\Module\ModuleImplementsAlterTest::testModuleImplementsAlter()
diff --git a/core/modules/update/update.install b/core/modules/update/update.install
index 5c8da0da367f42a3cf25510155d2b4358b6a0da2..4c4fdc1633bc1ba4812a8788c703b2a27456a16a 100644
--- a/core/modules/update/update.install
+++ b/core/modules/update/update.install
@@ -15,20 +15,18 @@
 /**
  * Implements hook_requirements().
  *
- * @return
- *   An array describing the status of the site regarding available updates. If
- *   there is no update data, only one record will be returned, indicating that
- *   the status of core can't be determined. If data is available, there will be
- *   two records: one for core, and another for all of contrib (assuming there
- *   are any contributed modules or themes enabled on the site). In addition to
- *   the fields expected by hook_requirements ('value', 'severity', and
- *   optionally 'description'), this array will contain a 'reason' attribute,
- *   which is an integer constant to indicate why the given status is being
- *   returned (UpdateManagerInterface::NOT_SECURE,
- *   UpdateManagerInterface::NOT_CURRENT, or UpdateManagerInterface::UNKNOWN).
- *   This is used for generating the appropriate email notification messages
- *   during update_cron(), and might be useful for other modules that invoke
- *   update_requirements() to find out if the site is up to date or not.
+ * Describes the status of the site regarding available updates. If
+ * there is no update data, only one record will be returned, indicating that
+ * the status of core can't be determined. If data is available, there will be
+ * two records: one for core, and another for all of contrib (assuming there
+ * are any contributed modules or themes enabled on the site). In addition to
+ * the fields expected by hook_requirements ('value', 'severity', and
+ * optionally 'description'), this array will contain a 'reason' attribute,
+ * which is an integer constant to indicate why the given status is being
+ * returned (UPDATE_NOT_SECURE, UPDATE_NOT_CURRENT, or UPDATE_UNKNOWN). This
+ * is used for generating the appropriate email notification messages during
+ * update_cron(), and might be useful for other modules that invoke
+ * update_requirements() to find out if the site is up to date or not.
  *
  * @see _update_message_text()
  * @see _update_cron_notify()
diff --git a/core/modules/update/update.module b/core/modules/update/update.module
index 4fa96d232a1167065449f06b078012e9c4c7b61a..164856d8b9d6b984fa65e43db57a31cf1ffbc54f 100644
--- a/core/modules/update/update.module
+++ b/core/modules/update/update.module
@@ -390,16 +390,6 @@ function update_fetch_data_finished($success, $results) {
  *
  * Constructs the email notification message when the site is out of date.
  *
- * @param $key
- *   Unique key to indicate what message to build, always 'status_notify'.
- * @param $message
- *   Reference to the message array being built.
- * @param $params
- *   Array of parameters to indicate what kind of text to include in the message
- *   body. This is a keyed array of message type ('core' or 'contrib') as the
- *   keys, and the status reason constant (UpdateManagerInterface::NOT_SECURE,
- *   etc) for the values.
- *
  * @see \Drupal\Core\Mail\MailManagerInterface::mail()
  * @see _update_cron_notify()
  * @see _update_message_text()
diff --git a/core/phpcs.xml.dist b/core/phpcs.xml.dist
index bf22ac684247007b36ca4e85183c4b5934323feb..223ae7ed721f75fdf7404d8aee3853d5b7149ceb 100644
--- a/core/phpcs.xml.dist
+++ b/core/phpcs.xml.dist
@@ -75,6 +75,7 @@
     <exclude name="Drupal.Commenting.FunctionComment.ParamMissingDefinition"/>
     <exclude name="Drupal.Commenting.FunctionComment.TypeHintMissing"/>
   </rule>
+  <rule ref="Drupal.Commenting.HookComment"/>
   <rule ref="Drupal.Commenting.GenderNeutralComment" />
   <rule ref="Drupal.Commenting.VariableComment">
     <!-- Sniff for: DuplicateVar, EmptyVar, InlineVariableName -->