diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc
index f8d25ecc24580bcef93112d095dcbafb6862fce5..4cffe40471ee73d80b4bf810e3b2268580efac63 100644
--- a/core/includes/bootstrap.inc
+++ b/core/includes/bootstrap.inc
@@ -95,13 +95,13 @@ function t($string, array $args = [], array $options = []) {
 /**
  * Provides custom PHP error handling.
  *
- * @param $error_level
+ * @param int $error_level
  *   The level of the error raised.
- * @param $message
+ * @param string $message
  *   The error message.
- * @param $filename
+ * @param string $filename
  *   (optional) The filename that the error was raised in.
- * @param $line
+ * @param int $line
  *   (optional) The line number the error was raised at.
  */
 function _drupal_error_handler($error_level, $message, $filename = NULL, $line = NULL) {
@@ -367,14 +367,14 @@ function drupal_maintenance_theme() {
  * }
  * @endcode
  *
- * @param $name
+ * @param string|null $name
  *   Globally unique name for the variable. For a function with only one static,
  *   variable, the function name (e.g. via the PHP magic __FUNCTION__ constant)
  *   is recommended. For a function with multiple static variables add a
  *   distinguishing suffix to the function name for each one.
- * @param $default_value
+ * @param mixed|null $default_value
  *   Optional default value.
- * @param $reset
+ * @param bool $reset
  *   TRUE to reset one or all variables(s). This parameter is only used
  *   internally and should not be passed in; use drupal_static_reset() instead.
  *   (This function's return value should not be used when TRUE is passed in.)
@@ -425,7 +425,7 @@ function &drupal_static($name, $default_value = NULL, $reset = FALSE) {
 /**
  * Resets one or all centrally stored static variable(s).
  *
- * @param $name
+ * @param string $name
  *   Name of the static variable to reset. Omit to reset all variables.
  *   Resetting all variables should only be used, for example, for running
  *   unit tests with a clean environment.
@@ -442,7 +442,7 @@ function drupal_static_reset($name = NULL) {
  *
  * @param callable $callback
  *   The shutdown function to register.
- * @param ...$args
+ * @param mixed ...$args
  *   Additional arguments to pass to the shutdown function.
  *
  * @return array
diff --git a/core/includes/common.inc b/core/includes/common.inc
index 0e6af7f9bbe04ae0bbab3ebef1b8f4b353ef64f9..f87c0617afa539e7b3f26144e1ca90455904b2e4 100644
--- a/core/includes/common.inc
+++ b/core/includes/common.inc
@@ -212,7 +212,7 @@ function base_path() {
  * MenuForm::BuildOverviewForm for an example creating a table
  * containing parent relationships.
  *
- * @param $element
+ * @param array $element
  *   A form element to attach the tableDrag behavior to.
  * @param array $options
  *   These options are used to generate JavaScript settings necessary to
@@ -290,7 +290,7 @@ function drupal_attach_tabledrag(&$element, array $options) {
  * is rendered for the first time, as it will have no effect on subsequent
  * renderings of the parent tree.
  *
- * @param $element
+ * @param array $element
  *   The element to be hidden.
  *
  * @return array
@@ -320,7 +320,7 @@ function hide(&$element) {
  * is rendered for the first time, as it will have no effect on subsequent
  * renderings of the parent tree.
  *
- * @param $element
+ * @param array $element
  *   The element to be shown.
  *
  * @return array
diff --git a/core/includes/errors.inc b/core/includes/errors.inc
index c52e11e3c28e63ee7999a1e457839297189e9e57..3ec342aa29d99dd2a83360312209fdba2173b809 100644
--- a/core/includes/errors.inc
+++ b/core/includes/errors.inc
@@ -45,13 +45,13 @@ function drupal_error_levels() {
 /**
  * Provides custom PHP error handling.
  *
- * @param $error_level
+ * @param int $error_level
  *   The level of the error raised.
- * @param $message
+ * @param string $message
  *   The error message.
- * @param $filename
+ * @param string $filename
  *   The filename that the error was raised in.
- * @param $line
+ * @param int $line
  *   The line number the error was raised at.
  */
 function _drupal_error_handler_real($error_level, $message, $filename, $line) {
@@ -109,7 +109,7 @@ function _drupal_error_handler_real($error_level, $message, $filename, $line) {
  * all errors should be displayed. For ERROR_REPORTING_DISPLAY_SOME, $error
  * will be examined to determine if it should be displayed.
  *
- * @param $error
+ * @param array $error
  *   Optional error to examine for ERROR_REPORTING_DISPLAY_SOME.
  *
  * @return bool
@@ -132,7 +132,7 @@ function error_displayable($error = NULL) {
 /**
  * Logs a PHP error or exception and displays an error page in fatal cases.
  *
- * @param $error
+ * @param array $error
  *   An array with the following keys: %type, @message, %function, %file, %line,
  *   @backtrace_string, severity_level, backtrace, and exception. All the
  *   parameters are plain-text, with the exception of @message, which needs to
@@ -342,15 +342,15 @@ function _drupal_get_error_level() {
 /**
  * Adds error information to headers so that tests can access it.
  *
- * @param $message
+ * @param string $message
  *   The error message.
- * @param $type
+ * @param string $type
  *   The type of error.
- * @param $function
+ * @param string $function
  *   The function that emitted the error.
- * @param $file
+ * @param string $file
  *   The file that emitted the error.
- * @param $line
+ * @param int $line
  *   The line number in file that emitted the error.
  */
 function _drupal_error_header($message, $type, $function, $file, $line) {
diff --git a/core/includes/form.inc b/core/includes/form.inc
index f209702b6735a36b775743a0e1e43f7f7a8150c6..06e572cd1e936e5ba8e7cf846dc3d8d9e4226d09 100644
--- a/core/includes/form.inc
+++ b/core/includes/form.inc
@@ -23,7 +23,7 @@
  * the #options property to an associative array in which the keys are group
  * labels, and the values are associative arrays in the normal #options format.
  *
- * @param $variables
+ * @param array $variables
  *   An associative array containing:
  *   - element: An associative array containing the properties of the element.
  *     Properties used: #title, #value, #options, #description, #extra,
@@ -153,9 +153,9 @@ function form_select_options($element, $choices = NULL) {
  * As usual with functions that can return [] or FALSE, do not
  * forget to use === and !== if needed.
  *
- * @param $element
+ * @param array $element
  *   The select element to search.
- * @param $key
+ * @param string $key
  *   The key to look for.
  *
  * @return array|bool
@@ -355,7 +355,7 @@ function template_preprocess_input(&$variables): void {
  *
  * Default template: form.html.twig.
  *
- * @param $variables
+ * @param array $variables
  *   An associative array containing:
  *   - element: An associative array containing the properties of the element.
  *     Properties used: #action, #method, #attributes, #children
@@ -694,7 +694,7 @@ function template_preprocess_form_element_label(&$variables): void {
  * 'finished' callback. Batch sets are processed sequentially, with the progress
  * bar starting afresh for each new set.
  *
- * @param $batch_definition
+ * @param array $batch_definition
  *   An associative array defining the batch, with the following elements (all
  *   are optional except as noted):
  *   - operations: (required) Array of operations to be performed, where each
@@ -799,9 +799,9 @@ function batch_set($batch_definition) {
  * inserted a new set, additional sets will be inserted after the last inserted
  * set.
  *
- * @param &$batch
+ * @param array &$batch
  *   The batch array.
- * @param $batch_set
+ * @param array $batch_set
  *   The batch set.
  */
 function _batch_append_set(&$batch, $batch_set) {
@@ -871,7 +871,7 @@ function _batch_append_set(&$batch, $batch_set) {
  * @param \Drupal\Core\Url|null $url
  *   (optional) URL of the batch processing page. Should only be used for
  *   separate scripts like update.php.
- * @param $redirect_callback
+ * @param string|null $redirect_callback
  *   (optional) Specify a function to be called to redirect to the progressive
  *   processing page.
  *
@@ -1001,9 +1001,9 @@ function &batch_get() {
  * be used. The name and class of the queue are added by reference to the
  * batch set.
  *
- * @param $batch
+ * @param array $batch
  *   The batch array.
- * @param $set_id
+ * @param string $set_id
  *   The id of the set to process.
  */
 function _batch_populate_queue(&$batch, $set_id) {
@@ -1030,7 +1030,7 @@ function _batch_populate_queue(&$batch, $set_id) {
 /**
  * Returns a queue object for a batch set.
  *
- * @param $batch_set
+ * @param string[][] $batch_set
  *   The batch set.
  *
  * @return \Drupal\Core\Queue\QueueInterface|null
diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc
index baf58cc0ffd09be0144ed2282e25e6b716af30cc..f91937b07007ab015319822ab7bcb263531bcb6c 100644
--- a/core/includes/install.core.inc
+++ b/core/includes/install.core.inc
@@ -87,10 +87,10 @@
  * an error is thrown, (b) a new page needs to be displayed, or (c) the
  * installation finishes (whichever happens first).
  *
- * @param $class_loader
+ * @param \Composer\Autoload\ClassLoader $class_loader
  *   The class loader. Normally Composer's ClassLoader, as included by the
  *   front controller, but may also be decorated.
- * @param $settings
+ * @param array $settings
  *   An optional array of installation settings. Leave this empty for a normal,
  *   interactive, browser-based installation intended to occur over multiple
  *   page requests. Alternatively, if an array of settings is passed in, the
@@ -285,10 +285,10 @@ function install_state_defaults() {
  * This function performs commands that must run at the beginning of every page
  * request. It throws an exception if the installation should not proceed.
  *
- * @param $class_loader
+ * @param \Composer\Autoload\ClassLoader $class_loader
  *   The class loader. Normally Composer's ClassLoader, as included by the
  *   front controller, but may also be decorated.
- * @param $install_state
+ * @param array $install_state
  *   An array of information about the current installation state. This is
  *   modified with information gleaned from the beginning of the page request.
  *
@@ -547,7 +547,7 @@ function install_begin_request($class_loader, &$install_state) {
  * user, or until a page redirect is required. Otherwise, tasks will be
  * attempted until the installation is finished.
  *
- * @param $install_state
+ * @param array $install_state
  *   An array of information about the current installation state. This is
  *   passed along to each task, so it can be modified if necessary.
  * @param callable|null $callback
@@ -602,10 +602,10 @@ function install_run_tasks(&$install_state, ?callable $callback = NULL) {
 /**
  * Runs an individual installation task.
  *
- * @param $task
+ * @param array $task
  *   An array of information about the task to be run as returned by
  *   hook_install_tasks().
- * @param $install_state
+ * @param array $install_state
  *   An array of information about the current installation state. This is
  *   passed in by reference so that it can be modified by the task.
  *
@@ -703,7 +703,7 @@ function install_run_task($task, &$install_state) {
  * the page request evolves (for example, if an installation profile hasn't
  * been selected yet, we don't yet know which profile tasks need to be run).
  *
- * @param $install_state
+ * @param array $install_state
  *   An array of information about the current installation state.
  *
  * @return array
@@ -739,7 +739,7 @@ function install_tasks_to_perform($install_state) {
  * You can override this using hook_install_tasks() or
  * hook_install_tasks_alter().
  *
- * @param $install_state
+ * @param array $install_state
  *   An array of information about the current installation state.
  *
  * @return array
@@ -923,7 +923,7 @@ function install_tasks($install_state) {
  * The output of this function is a list suitable for sending to
  * maintenance-task-list.html.twig.
  *
- * @param $install_state
+ * @param array $install_state
  *   An array of information about the current installation state.
  *
  * @return array
@@ -996,7 +996,7 @@ function install_get_form($form_id, array &$install_state) {
  *
  * The output of this function is suitable for sending to install_goto().
  *
- * @param $install_state
+ * @param array $install_state
  *   An array of information about the current installation state.
  *
  * @return string
@@ -1011,7 +1011,7 @@ function install_redirect_url($install_state) {
 /**
  * Returns the complete URL redirected to during an installation request.
  *
- * @param $install_state
+ * @param array $install_state
  *   An array of information about the current installation state.
  *
  * @return string
@@ -1031,9 +1031,9 @@ function install_full_redirect_url($install_state) {
  * title, but otherwise this function takes care of theming the overall page
  * output during every step of the installation.
  *
- * @param $output
+ * @param array $output
  *   The content to display on the main part of the page.
- * @param $install_state
+ * @param array $install_state
  *   An array of information about the current installation state.
  */
 function install_display_output($output, $install_state) {
@@ -1089,7 +1089,7 @@ function install_display_output($output, $install_state) {
 /**
  * Verifies the requirements for installing Drupal.
  *
- * @param $install_state
+ * @param array $install_state
  *   An array of information about the current installation state.
  *
  * @return array
@@ -1108,7 +1108,7 @@ function install_verify_requirements(&$install_state) {
 /**
  * Installation task; install the base functionality Drupal needs to bootstrap.
  *
- * @param $install_state
+ * @param array $install_state
  *   An array of information about the current installation state.
  */
 function install_base_system(&$install_state) {
@@ -1225,7 +1225,7 @@ function install_database_errors($database, $settings_file) {
 /**
  * Selects which profile to install.
  *
- * @param $install_state
+ * @param array $install_state
  *   An array of information about the current installation state. The chosen
  *   profile will be added here, if it was not already selected previously, as
  *   will a list of all available profiles.
@@ -1344,7 +1344,7 @@ function install_find_translations() {
 /**
  * Selects which language to use during installation.
  *
- * @param $install_state
+ * @param array $install_state
  *   An array of information about the current installation state. The chosen
  *   langcode will be added here, if it was not already selected previously, as
  *   will a list of all available languages.
@@ -1528,7 +1528,7 @@ function _install_get_version_info($version) {
 /**
  * Loads information about the chosen profile during installation.
  *
- * @param $install_state
+ * @param array $install_state
  *   An array of information about the current installation state. The loaded
  *   profile information will be added here.
  */
@@ -1569,7 +1569,7 @@ function install_bootstrap_full() {
 /**
  * Installs required modules via a batch process.
  *
- * @param $install_state
+ * @param array $install_state
  *   An array of information about the current installation state.
  *
  * @return array
@@ -1664,7 +1664,7 @@ function install_core_entity_type_definitions() {
  * because an installation profile typically installs 1-3 themes only (default
  * theme, base theme, admin theme).
  *
- * @param $install_state
+ * @param array $install_state
  *   An array of information about the current installation state.
  */
 function install_profile_themes(&$install_state) {
@@ -1680,7 +1680,7 @@ function install_profile_themes(&$install_state) {
 /**
  * Installs the install profile.
  *
- * @param $install_state
+ * @param array $install_state
  *   An array of information about the current installation state.
  */
 function install_install_profile(&$install_state) {
@@ -1703,7 +1703,7 @@ function install_install_profile(&$install_state) {
 /**
  * Prepares the system for import and downloads additional translations.
  *
- * @param $install_state
+ * @param array $install_state
  *   An array of information about the current installation state.
  *
  * @return array
@@ -1754,7 +1754,7 @@ function install_download_additional_translations_operations(&$install_state) {
 /**
  * Imports languages via a batch process during installation.
  *
- * @param $install_state
+ * @param array $install_state
  *   An array of information about the current installation state.
  *
  * @return array|null
@@ -1858,7 +1858,7 @@ function _install_prepare_import($langcodes, $server_pattern) {
  * If other projects besides Drupal core have been installed, their translation
  * will be imported here.
  *
- * @param $install_state
+ * @param array $install_state
  *   An array of information about the current installation state.
  *
  * @return array
@@ -1896,7 +1896,7 @@ function install_finish_translations(&$install_state) {
 /**
  * Performs final installation steps and displays a 'finished' page.
  *
- * @param $install_state
+ * @param array $install_state
  *   An array of information about the current installation state.
  */
 function install_finished(&$install_state) {
@@ -2565,7 +2565,7 @@ function _install_config_locale_overrides() {
  *   The configuration to process.
  * @param array $langcodes
  *   The langcodes available on the site.
- * @param $context
+ * @param array $context
  *   The batch context.
  */
 function _install_config_locale_overrides_process_batch(array $names, array $langcodes, &$context) {
diff --git a/core/includes/install.inc b/core/includes/install.inc
index 3474c7c3cafac45eabf4118e315dcd1aafd5740b..be9fc6c245d02539b17f7665479779be0c334f2a 100644
--- a/core/includes/install.inc
+++ b/core/includes/install.inc
@@ -142,7 +142,7 @@ function drupal_install_profile_distribution_version() {
 /**
  * Verifies that all dependencies are met for a given installation profile.
  *
- * @param $install_state
+ * @param array $install_state
  *   An array of information about the current installation state.
  *
  * @return array
@@ -280,11 +280,11 @@ function drupal_install_system($install_state) {
 /**
  * Verifies the state of the specified file.
  *
- * @param $file
+ * @param string $file
  *   The file to check for.
- * @param $mask
+ * @param int $mask
  *   An optional bitmask created from various FILE_* constants.
- * @param $type
+ * @param string|null $type
  *   The type of file. Can be file (default), dir, or link.
  * @param bool $auto_fix
  *   (optional) Determines whether to attempt fixing the permissions according
@@ -372,11 +372,11 @@ function drupal_verify_install_file($file, $mask = NULL, $type = 'file', $auto_f
 /**
  * Creates a directory with the specified permissions.
  *
- * @param $file
+ * @param string $file
  *   The name of the directory to create;
- * @param $mask
+ * @param int $mask
  *   The permissions of the directory to create.
- * @param $message
+ * @param bool $message
  *   (optional) Whether to output messages. Defaults to TRUE.
  *
  * @return bool
@@ -423,11 +423,11 @@ function drupal_install_mkdir($file, $mask, $message = TRUE) {
  * using bitwise operations. This lets us remove, for example, 0222 from
  * 0700 and get the correct value of 0500.
  *
- * @param $file
+ * @param string $file
  *   The name of the file with permissions to fix.
- * @param $mask
+ * @param int $mask
  *   The desired permissions for the file.
- * @param $message
+ * @param bool $message
  *   (optional) Whether to output messages. Defaults to TRUE.
  *
  * @return bool
@@ -502,7 +502,7 @@ function drupal_install_fix_file($file, $mask, $message = TRUE) {
  *
  * This issues an on-site HTTP redirect. Messages (and errors) are erased.
  *
- * @param $path
+ * @param string $path
  *   An installer path.
  */
 function install_goto($path) {
@@ -530,7 +530,7 @@ function install_goto($path) {
  * that need to be bypassed), using this function to generate the URL for links
  * to the next steps of the script ensures that the links will work correctly.
  *
- * @param $query
+ * @param array $query
  *   (optional) An array of query parameters to merge in to the existing ones.
  *
  * @return string
@@ -558,7 +558,7 @@ function drupal_current_script_url($query = []) {
  * update.php) and returns a URL that can be used to attempt to proceed to the
  * next step of the script.
  *
- * @param $severity
+ * @param int $severity
  *   The severity of the requirements problem, as returned by
  *   drupal_requirements_severity().
  *
@@ -633,7 +633,7 @@ function drupal_check_profile($profile) {
 /**
  * Extracts the highest severity from the requirements array.
  *
- * @param $requirements
+ * @param array $requirements
  *   An array of requirements, in the same format as is returned by
  *   hook_requirements().
  *
@@ -653,7 +653,7 @@ function drupal_requirements_severity(&$requirements) {
 /**
  * Checks a module's requirements.
  *
- * @param $module
+ * @param string $module
  *   Machine name of module to check.
  *
  * @return bool
@@ -729,9 +729,9 @@ function drupal_check_module($module) {
  *      - dblog
  * @endcode
  *
- * @param $profile
+ * @param string $profile
  *   Name of profile.
- * @param $langcode
+ * @param string $langcode
  *   Language code (if any).
  *
  * @return array
diff --git a/core/includes/theme.inc b/core/includes/theme.inc
index 3b7b562dd36a4700f1fef575a5ba9b8d873855fc..38c01e5cc7b7cf32f748b1653824c6fdc6f8e24b 100644
--- a/core/includes/theme.inc
+++ b/core/includes/theme.inc
@@ -85,11 +85,11 @@ function _system_default_theme_features() {
 /**
  * Allows themes and/or theme engines to easily discover overridden templates.
  *
- * @param $cache
+ * @param array $cache
  *   The existing cache of theme hooks to test against.
- * @param $extension
+ * @param string $extension
  *   The extension that these templates will have.
- * @param $path
+ * @param string $path
  *   The path to search.
  */
 function drupal_find_theme_templates($cache, $extension, $path) {
@@ -199,9 +199,9 @@ function drupal_find_theme_templates($cache, $extension, $path) {
  * To only retrieve the default global theme setting, an empty string should be
  * given for $theme.
  *
- * @param $setting_name
+ * @param string $setting_name
  *   The name of the setting to be retrieved.
- * @param $theme
+ * @param string $theme
  *   The name of a given theme; defaults to the current theme.
  *
  * @return mixed
@@ -1246,12 +1246,12 @@ function template_preprocess_page(&$variables): void {
  * variables from within preprocess functions, when wanting to base the
  * additional suggestions or classes on the path of the current page.
  *
- * @param $args
+ * @param array $args
  *   An array of path arguments.
- * @param $base
+ * @param string $base
  *   A string identifying the base 'thing' from which more specific suggestions
  *   are derived. For example, 'page' or 'html'.
- * @param $delimiter
+ * @param string $delimiter
  *   The string used to delimit increasingly specific information. The default
  *   of '__' is appropriate for theme hook suggestions. '-' is appropriate for
  *   extra classes.
diff --git a/core/includes/update.inc b/core/includes/update.inc
index fb63966ee159f92f9e33504151b5665cb93ada36..022f95011eafc78b4cab7b97e49da7606287af01 100644
--- a/core/includes/update.inc
+++ b/core/includes/update.inc
@@ -145,15 +145,15 @@ function _update_fix_missing_schema() {
  * and set the #finished property to the percentage completed that it is, as a
  * fraction of 1.
  *
- * @param $module
+ * @param string $module
  *   The module whose update will be run.
- * @param $number
+ * @param string $number
  *   The update number to run.
- * @param $dependency_map
+ * @param array $dependency_map
  *   An array whose keys are the names of all update functions that will be
  *   performed during this batch process, and whose values are arrays of other
  *   update functions that each one depends on.
- * @param $context
+ * @param array $context
  *   The batch context array.
  *
  * @see update_resolve_dependencies()
@@ -398,7 +398,7 @@ function update_get_update_list() {
  * dependency chain for each update, as provided by the depth-first search
  * algorithm in Drupal\Component\Graph\Graph::searchAndSort().
  *
- * @param $starting_updates
+ * @param array $starting_updates
  *   An array whose keys contain the names of modules with updates to be run
  *   and whose values contain the number of the first requested update for that
  *   module.
@@ -465,7 +465,7 @@ function update_resolve_dependencies($starting_updates) {
 /**
  * Returns an organized list of update functions for a set of modules.
  *
- * @param $starting_updates
+ * @param array $starting_updates
  *   An array whose keys contain the names of modules and whose values contain
  *   the number of the first requested update for that module.
  *
@@ -523,7 +523,7 @@ function update_get_update_function_list($starting_updates) {
  * modules which implement hook_update_dependencies(), and builds them into the
  * graph as well.
  *
- * @param $update_functions
+ * @param array $update_functions
  *   An organized array of update functions, in the format returned by
  *   update_get_update_function_list().
  *
@@ -586,11 +586,11 @@ function update_build_dependency_graph($update_functions) {
 /**
  * Determines if a module update is missing or unavailable.
  *
- * @param $module
+ * @param string $module
  *   The name of the module.
- * @param $number
+ * @param int $number
  *   The number of the update within that module.
- * @param $update_functions
+ * @param array $update_functions
  *   An organized array of update functions, in the format returned by
  *   update_get_update_function_list(). This should represent all module
  *   updates that are requested to run at the time this function is called.
@@ -606,9 +606,9 @@ function update_is_missing($module, $number, $update_functions) {
 /**
  * Determines if a module update has already been performed.
  *
- * @param $module
+ * @param string $module
  *   The name of the module.
- * @param $number
+ * @param int $number
  *   The number of the update within that module.
  *
  * @return bool
diff --git a/core/includes/utility.inc b/core/includes/utility.inc
index 13975bd18bf3e875a9474a02b2596cee128e0d28..fcc018694fdcb7ee12b38ad309a15bbfde6dabc6 100644
--- a/core/includes/utility.inc
+++ b/core/includes/utility.inc
@@ -11,7 +11,7 @@
 /**
  * Rebuilds all caches even when Drupal itself does not work.
  *
- * @param $class_loader
+ * @param \Composer\Autoload\ClassLoader $class_loader
  *   The class loader. Normally Composer's ClassLoader, as included by the
  *   front controller, but may also be decorated.
  * @param \Symfony\Component\HttpFoundation\Request $request
diff --git a/core/modules/system/system.admin.inc b/core/modules/system/system.admin.inc
index ad8621628f51cdd64901928c4ce21d737a8e1bbc..5ef69a611a1b62a35bc05f7b0d7532c69241c059 100644
--- a/core/modules/system/system.admin.inc
+++ b/core/modules/system/system.admin.inc
@@ -17,7 +17,7 @@
  *
  * Default template: admin-block-content.html.twig.
  *
- * @param $variables
+ * @param array $variables
  *   An associative array containing:
  *   - content: List of administrative menu items. Each menu item contains:
  *     - url: Path to the admin section.
@@ -45,7 +45,7 @@ function template_preprocess_admin_block_content(&$variables): void {
  *
  * Default template: admin-page.html.twig.
  *
- * @param $variables
+ * @param array $variables
  *   An associative array containing:
  *   - blocks: An array of blocks to display. Each array should include a
  *     'title', a 'description', a formatted 'content' and a 'position' which
@@ -77,7 +77,7 @@ function template_preprocess_admin_page(&$variables): void {
  *
  * Default template: system-admin-index.html.twig.
  *
- * @param $variables
+ * @param array $variables
  *   An associative array containing:
  *   - menu_items: An array of modules to be displayed.
  */
@@ -115,7 +115,7 @@ function template_preprocess_system_admin_index(&$variables): void {
  *
  * Default template: system-modules-details.html.twig.
  *
- * @param $variables
+ * @param array $variables
  *   An associative array containing:
  *   - form: A render element representing the form. The main form element
  *     represents a package, and child elements of the form are individual
@@ -205,7 +205,7 @@ function template_preprocess_system_modules_details(&$variables): void {
  *
  * Default template: system-modules-uninstall.html.twig.
  *
- * @param $variables
+ * @param array $variables
  *   An associative array containing:
  *   - form: A render element representing the form. Child elements of the form
  *     are individual modules. Each module is an associative array containing
@@ -252,7 +252,7 @@ function template_preprocess_system_modules_uninstall(&$variables): void {
  *
  * Default template: system-themes-page.html.twig.
  *
- * @param $variables
+ * @param array $variables
  *   An associative array containing:
  *   - theme_groups: An associative array containing groups of themes.
  *   - theme_group_titles: An associative array containing titles of themes.
diff --git a/core/modules/update/update.authorize.inc b/core/modules/update/update.authorize.inc
index 15f09badfcf0e98c84d61c8bc076799798f46494..6883f72071717b80be282599f7afe6cb85d0c885 100644
--- a/core/modules/update/update.authorize.inc
+++ b/core/modules/update/update.authorize.inc
@@ -14,10 +14,10 @@
  * Callback for system_authorized_init() in
  * update_manager_update_ready_form_submit().
  *
- * @param $filetransfer
+ * @param \Drupal\Core\FileTransfer\FileTransfer $filetransfer
  *   The FileTransfer object created by authorize.php for use during this
  *   operation.
- * @param $projects
+ * @param array $projects
  *   A nested array of projects to install into the live webroot, keyed by
  *   project name. Each subarray contains the following keys:
  *   - project: The canonical project short name.
@@ -138,9 +138,9 @@ function update_authorize_batch_copy_project($project, $updater_name, $local_url
  * authorize.php will render a report. Also responsible for putting the site
  * back online and clearing the update status storage after a successful update.
  *
- * @param $success
+ * @param bool $success
  *   TRUE if the batch operation was successful; FALSE if there were errors.
- * @param $results
+ * @param array $results
  *   An associative array of results from the batch operation.
  */
 function update_authorize_update_batch_finished($success, $results) {
diff --git a/core/modules/update/update.compare.inc b/core/modules/update/update.compare.inc
index 4cca7e4000f8f27742ac9eb8422b405da30cdf72..c5ca79e46ae3b9ed8ae9b32f5d568537150d43eb 100644
--- a/core/modules/update/update.compare.inc
+++ b/core/modules/update/update.compare.inc
@@ -18,7 +18,7 @@
  * installed versions, and other information that is required before we can
  * compare against the available releases to produce the status report.
  *
- * @param $projects
+ * @param array $projects
  *   Array of project information from
  *   \Drupal\update\UpdateManager::getProjects().
  */
@@ -200,9 +200,9 @@ function update_calculate_project_data($available) {
  * NOTE: This function *must* set a value for $project_data['status'] before
  * returning, or the rest of the Update Manager will break in unexpected ways.
  *
- * @param $project_data
+ * @param array $project_data
  *   An array containing information about a specific project.
- * @param $available
+ * @param array $available
  *   Data about available project releases of a specific project.
  */
 function update_calculate_project_update_status(&$project_data, $available) {
diff --git a/core/modules/update/update.manager.inc b/core/modules/update/update.manager.inc
index 02554db90acb8053172399dd0cb15acae0909d37..ba3632e97e36cd8bcdbc90cd9a011b246089a963 100644
--- a/core/modules/update/update.manager.inc
+++ b/core/modules/update/update.manager.inc
@@ -14,9 +14,9 @@
 /**
  * Batch callback: Performs actions when the download batch is completed.
  *
- * @param $success
+ * @param bool $success
  *   TRUE if the batch operation was successful, FALSE if there were errors.
- * @param $results
+ * @param array $results
  *   An associative array of results from the batch operation.
  */
 function update_manager_download_batch_finished($success, $results) {
@@ -178,7 +178,7 @@ function update_manager_archive_verify($project, $archive_file, $directory) {
  *
  * Returns the local path if the file has already been downloaded.
  *
- * @param $url
+ * @param string $url
  *   The URL of the file on the server.
  *
  * @return string|false
diff --git a/core/modules/views_ui/admin.inc b/core/modules/views_ui/admin.inc
index c7f08bebd96fe399116bec6f2b094f5b89194898..e275797bd6984ec9f21da1f05ade1fea5ff5d256 100644
--- a/core/modules/views_ui/admin.inc
+++ b/core/modules/views_ui/admin.inc
@@ -24,16 +24,16 @@
  * mean that the non-JavaScript fallback button does not appear in the correct
  * place in the form.
  *
- * @param $wrapping_element
+ * @param array $wrapping_element
  *   The element whose child will server as the AJAX trigger. For example, if
  *   $form['some_wrapper']['triggering_element'] represents the element which
  *   will trigger the AJAX behavior, you would pass $form['some_wrapper'] for
  *   this parameter.
- * @param $trigger_key
+ * @param string $trigger_key
  *   The key within the wrapping element that identifies which of its children
  *   serves as the AJAX trigger. In the above example, you would pass
  *   'triggering_element' for this parameter.
- * @param $refresh_parents
+ * @param array $refresh_parents
  *   An array of parent keys that point to the part of the form that will be
  *   refreshed by AJAX. For example, if triggering the AJAX behavior should
  *   cause $form['dynamic_content']['section'] to be refreshed, you would pass
diff --git a/core/phpcs.xml.dist b/core/phpcs.xml.dist
index 71441e9c7c4bdf1d492bbb92fbe49f8b99e01353..bcef3985d1a206b49f1e3477911636cde5beb0b7 100644
--- a/core/phpcs.xml.dist
+++ b/core/phpcs.xml.dist
@@ -83,6 +83,7 @@
   </rule>
   <rule ref="Drupal.Commenting.FunctionComment.MissingParamType">
     <include-pattern>core/lib/Component/*</include-pattern>
+    <include-pattern>core/includes/*</include-pattern>
     <include-pattern>core/*/*Database*/*</include-pattern>
   </rule>
   <rule ref="Drupal.Commenting.FunctionComment.MissingReturnComment">