diff --git a/core/modules/views/src/Plugin/views/HandlerBase.php b/core/modules/views/src/Plugin/views/HandlerBase.php
index 00e22e3b5eae263b1a2995e28f748d60c3aa10b0..ad96c444106ed7a6b56de463576c7546fd7b35c3 100644
--- a/core/modules/views/src/Plugin/views/HandlerBase.php
+++ b/core/modules/views/src/Plugin/views/HandlerBase.php
@@ -231,9 +231,9 @@ public function sanitizeValue($value, $type = NULL) {
   /**
    * Transform a string by a certain method.
    *
-   * @param $string
+   * @param string $string
    *   The input you want to transform.
-   * @param $option
+   * @param string $option
    *   How do you want to transform it, possible values:
    *   - upper: Uppercase the string.
    *   - lower: lowercase the string.
@@ -393,6 +393,9 @@ public function hasExtraOptions() {
 
   /**
    * Provide defaults for the handler.
+   *
+   * @param array $option
+   *   An array of options.
    */
   public function defineExtraOptions(&$option) {}
 
@@ -674,6 +677,11 @@ public function acceptExposedInput($input) {
 
   /**
    * If set to remember exposed input in the session, store it there.
+   *
+   * @param array $input
+   *   Associative array containing the exposed data for this view.
+   * @param bool $status
+   *   Whether to store the exposed input in the session.
    */
   public function storeExposedInput($input, $status) {
     return TRUE;
@@ -749,7 +757,10 @@ protected function getViewsData() {
   }
 
   /**
-   * {@inheritdoc}
+   * Sets the views data service.
+   *
+   * @param \Drupal\views\ViewsData $views_data
+   *   The view to save.
    */
   public function setViewsData(ViewsData $views_data) {
     $this->viewsData = $views_data;
diff --git a/core/modules/views/src/Plugin/views/PluginBase.php b/core/modules/views/src/Plugin/views/PluginBase.php
index 04f514e100c97bc4c48ec33078c04a58ad4beecd..70c327e116ececafaa3ba9dfec8be7fa91305e44 100644
--- a/core/modules/views/src/Plugin/views/PluginBase.php
+++ b/core/modules/views/src/Plugin/views/PluginBase.php
@@ -348,9 +348,9 @@ public function globalTokenReplace($string = '', array $options = []) {
    *
    * The resulting string will be sanitized with Xss::filterAdmin.
    *
-   * @param $text
+   * @param string $text
    *   Unsanitized string with possible tokens.
-   * @param $tokens
+   * @param array $tokens
    *   Array of token => replacement_value items.
    *
    * @return string
diff --git a/core/modules/views/src/Plugin/views/ViewsHandlerInterface.php b/core/modules/views/src/Plugin/views/ViewsHandlerInterface.php
index cf060c0aa6c5510a6c2204951805442b6f577466..063067db932ba00fdbbfd0e613f5b167e4325e41 100644
--- a/core/modules/views/src/Plugin/views/ViewsHandlerInterface.php
+++ b/core/modules/views/src/Plugin/views/ViewsHandlerInterface.php
@@ -66,9 +66,9 @@ public function getJoin();
   /**
    * Sanitize the value for output.
    *
-   * @param $value
+   * @param mixed $value
    *   The value being rendered.
-   * @param $type
+   * @param string $type
    *   The type of sanitization needed. If not provided,
    *   \Drupal\Component\Utility\Html::escape() is used.
    *
diff --git a/core/modules/views/src/Plugin/views/argument/ArgumentPluginBase.php b/core/modules/views/src/Plugin/views/argument/ArgumentPluginBase.php
index e855bd577af3280e4166e653b8d0e7d725bcb112..36e877878860d36b74e46f5df600748650be4fa9 100644
--- a/core/modules/views/src/Plugin/views/argument/ArgumentPluginBase.php
+++ b/core/modules/views/src/Plugin/views/argument/ArgumentPluginBase.php
@@ -990,7 +990,7 @@ public function summaryBasics($count_field = TRUE) {
    *
    * The base variant of this is usually adequate.
    *
-   * @param $order
+   * @param string $order
    *   The order selected in the UI.
    * @param string|null $by
    *   (optional) This parameter sets the direction for which to order.
@@ -1006,7 +1006,7 @@ public function summarySort($order, $by = NULL) {
    * This will be called once per row of a summary, and used as part of
    * $view->getUrl().
    *
-   * @param $data
+   * @param array $data
    *   The query results for the row.
    */
   public function summaryArgument($data) {
@@ -1016,7 +1016,7 @@ public function summaryArgument($data) {
   /**
    * Provides the name to use for the summary, defaults to the name field.
    *
-   * @param $data
+   * @param array $data
    *   The query results for the row.
    */
   public function summaryName($data) {
diff --git a/core/modules/views/src/Plugin/views/cache/CachePluginBase.php b/core/modules/views/src/Plugin/views/cache/CachePluginBase.php
index 223bfe62a012229b1bb99faf76d891a5e4937fc8..8de80b6e1a9e6f29e961dbb297fd7cc053e9d11e 100644
--- a/core/modules/views/src/Plugin/views/cache/CachePluginBase.php
+++ b/core/modules/views/src/Plugin/views/cache/CachePluginBase.php
@@ -75,7 +75,7 @@ public function summaryTitle() {
    *
    * Plugins must override this to implement expiration.
    *
-   * @param $type
+   * @param string $type
    *   The cache type, either 'query', 'result'.
    */
   protected function cacheExpire($type) {
@@ -103,7 +103,7 @@ protected function cacheSetMaxAge($type) {
    *
    * A plugin should override this to provide specialized caching behavior.
    *
-   * @param $type
+   * @param string $type
    *   The cache type, either 'query', 'result'.
    */
   public function cacheSet($type) {
@@ -129,7 +129,7 @@ public function cacheSet($type) {
    *
    * A plugin should override this to provide specialized caching behavior.
    *
-   * @param $type
+   * @param string $type
    *   The cache type, either 'query', 'result'.
    *
    * @return bool
diff --git a/core/modules/views/src/Plugin/views/field/FieldHandlerInterface.php b/core/modules/views/src/Plugin/views/field/FieldHandlerInterface.php
index 18bffb0918cfb1ed503f3b0dbd0907c725c7de4f..85a771fe750256b8ebf66b7c5b2bb9d47a91a697 100644
--- a/core/modules/views/src/Plugin/views/field/FieldHandlerInterface.php
+++ b/core/modules/views/src/Plugin/views/field/FieldHandlerInterface.php
@@ -191,7 +191,7 @@ public function render(ResultRow $values);
    *
    * @param \Drupal\views\ResultRow $row
    *   An array of all ResultRow objects returned from the query.
-   * @param $output
+   * @param string $output
    *   The field rendered output.
    *
    * @return string[]
@@ -220,7 +220,7 @@ public function advancedRender(ResultRow $values);
   /**
    * Checks if a field value is empty.
    *
-   * @param $value
+   * @param mixed $value
    *   The field value.
    * @param bool $empty_zero
    *   Whether or not this field is configured to consider 0 as empty.
diff --git a/core/modules/views/src/Plugin/views/field/FieldPluginBase.php b/core/modules/views/src/Plugin/views/field/FieldPluginBase.php
index a26b087fbd2e70a32c8c258d69a2b3a5b1210b7e..32321111a08e332b2aa8905895104624ac037424 100644
--- a/core/modules/views/src/Plugin/views/field/FieldPluginBase.php
+++ b/core/modules/views/src/Plugin/views/field/FieldPluginBase.php
@@ -182,7 +182,7 @@ public function query() {
   /**
    * Add 'additional' fields to the query.
    *
-   * @param $fields
+   * @param array $fields
    *   An array of fields. The key is an identifier used to later find the
    *   field alias used. The value is either a string in which case it's
    *   assumed to be a field on this handler's table; or it's an array in the
@@ -1734,9 +1734,9 @@ protected function getFieldTokenPlaceholder() {
    *     '{{ arguments.bar.b.c }}' => 'value',
    *   ];
    *
-   * @param $array
+   * @param array $array
    *   An array of values.
-   * @param $parent_keys
+   * @param array $parent_keys
    *   An array of parent keys. This will represent the array depth.
    *
    * @return array
diff --git a/core/modules/views/src/Plugin/views/filter/InOperator.php b/core/modules/views/src/Plugin/views/filter/InOperator.php
index 85c53950ed66859e805560e5a724159d1ec6f841..c1a80ef192eaa0946a69ad1347995d0c887fe09e 100644
--- a/core/modules/views/src/Plugin/views/filter/InOperator.php
+++ b/core/modules/views/src/Plugin/views/filter/InOperator.php
@@ -275,6 +275,9 @@ protected function valueForm(&$form, FormStateInterface $form_state) {
 
   /**
    * When using exposed filters, we may be required to reduce the set.
+   *
+   * @param array $input
+   *   (optional) Associative array containing the exposed data for this view.
    */
   public function reduceValueOptions($input = NULL) {
     if (!isset($input)) {
diff --git a/core/modules/views/src/Plugin/views/join/JoinPluginInterface.php b/core/modules/views/src/Plugin/views/join/JoinPluginInterface.php
index 275224160083efc13c3458a766bb124126595caa..8fc3ee845e9153d07bf12a41890fd3452d959916 100644
--- a/core/modules/views/src/Plugin/views/join/JoinPluginInterface.php
+++ b/core/modules/views/src/Plugin/views/join/JoinPluginInterface.php
@@ -14,9 +14,9 @@ interface JoinPluginInterface {
    *
    * When possible, try to use table alias instead of table names.
    *
-   * @param $select_query
+   * @param \Drupal\Core\Database\Query\Select $select_query
    *   A select query object.
-   * @param $table
+   * @param string $table
    *   The base table to join.
    * @param \Drupal\views\Plugin\views\query\QueryPluginBase $view_query
    *   The source views query.
diff --git a/core/modules/views/src/Plugin/views/pager/PagerPluginBase.php b/core/modules/views/src/Plugin/views/pager/PagerPluginBase.php
index 58436930fb3454f73841b71c16b0cecb2542ca10..3356d703c93d6597f7798f3dc977378135640c74 100644
--- a/core/modules/views/src/Plugin/views/pager/PagerPluginBase.php
+++ b/core/modules/views/src/Plugin/views/pager/PagerPluginBase.php
@@ -121,7 +121,7 @@ public function getCurrentPage() {
   /**
    * Set the current page.
    *
-   * @param $number
+   * @param mixed $number
    *   If provided, the page number will be set to this. If NOT provided,
    *   the page number will be set from the global page array.
    */
@@ -236,7 +236,7 @@ public function preRender(&$result) {}
    *
    * Called during the view render process.
    *
-   * @param $input
+   * @param array $input
    *   Any extra GET parameters that should be retained, such as exposed
    *   input.
    */
diff --git a/core/modules/views/src/Plugin/views/pager/SqlBase.php b/core/modules/views/src/Plugin/views/pager/SqlBase.php
index 5e16f90d87935872fa192a22ebc9dcd4f3a72939..e710591268f06e330f9a35c4becc69af50513a76 100644
--- a/core/modules/views/src/Plugin/views/pager/SqlBase.php
+++ b/core/modules/views/src/Plugin/views/pager/SqlBase.php
@@ -309,7 +309,7 @@ public function query() {
   /**
    * Set the current page.
    *
-   * @param $number
+   * @param int|null $number
    *   If provided, the page number will be set to this. If NOT provided,
    *   the page number will be set from the pager manager service.
    */
diff --git a/core/modules/views/src/Plugin/views/query/CastSqlInterface.php b/core/modules/views/src/Plugin/views/query/CastSqlInterface.php
index aeb9f32df14eba999f03a6277a41d05d770e658b..2b79e75765743a5a661e3502e4a2fd41e8f78387 100644
--- a/core/modules/views/src/Plugin/views/query/CastSqlInterface.php
+++ b/core/modules/views/src/Plugin/views/query/CastSqlInterface.php
@@ -10,7 +10,7 @@ interface CastSqlInterface {
   /**
    * Returns a database expression to cast the field to int.
    *
-   * @param $field string
+   * @param string $field
    *   The database field to cast.
    *
    * @return string
diff --git a/core/modules/views/src/Plugin/views/query/QueryPluginBase.php b/core/modules/views/src/Plugin/views/query/QueryPluginBase.php
index 99e95980c07b4a68f130352969fd64cbc1c58607..63b3dfc55e0795d1626806b3ed73f239e6c2bb82 100644
--- a/core/modules/views/src/Plugin/views/query/QueryPluginBase.php
+++ b/core/modules/views/src/Plugin/views/query/QueryPluginBase.php
@@ -62,7 +62,7 @@ abstract class QueryPluginBase extends PluginBase implements CacheableDependency
   /**
    * Generate a query and a countQuery from all of the information supplied.
    *
-   * @param $get_count
+   * @param bool $get_count
    *   Provide a countQuery if this is true, otherwise provide a normal query.
    */
   public function query($get_count = FALSE) {}
@@ -171,13 +171,13 @@ public function getLimit() {
   /**
    * Create a new grouping for the WHERE or HAVING clause.
    *
-   * @param $type
+   * @param string $type
    *   Either 'AND' or 'OR'. All items within this group will be added
    *   to the WHERE clause with this logical operator.
-   * @param $group
+   * @param string|null $group
    *   An ID to use for this group. If unspecified, an ID will be generated.
-   * @param $where
-   *   'where' or 'having'.
+   * @param string $where
+   *   The type of clause, either 'where' or 'having'.
    *
    * @return int|string
    *   The group ID generated.
@@ -202,7 +202,7 @@ public function setWhereGroup($type = 'AND', $group = NULL, $where = 'where') {
   /**
    * Control how all WHERE and HAVING groups are put together.
    *
-   * @param $type
+   * @param string $type
    *   Either 'AND' or 'OR'
    */
   public function setGroupOperator($type = 'AND') {
diff --git a/core/modules/views/src/Plugin/views/query/Sql.php b/core/modules/views/src/Plugin/views/query/Sql.php
index af6b49db5e268b1f13aa40667ceec79352bdce7a..c178044417aa02800c49e91f1de1c3db73211f3d 100644
--- a/core/modules/views/src/Plugin/views/query/Sql.php
+++ b/core/modules/views/src/Plugin/views/query/Sql.php
@@ -385,16 +385,16 @@ public function submitOptionsForm(&$form, FormStateInterface $form_state) {
    * 'node_content_parent' instead, thus allowing all properties of
    * both nodes to be available in the query.
    *
-   * @param $alias
+   * @param string $alias
    *   What this relationship will be called, and is also the alias
    *   for the table.
    * @param \Drupal\views\Plugin\views\join\JoinPluginBase $join
    *   A Join object (or derived object) to join the alias in.
-   * @param $base
+   * @param string $base
    *   The name of the 'base' table this relationship represents; this
    *   tells the join search which path to attempt to use when finding
    *   the path to this relationship.
-   * @param $link_point
+   * @param string|null $link_point
    *   If this relationship links to something other than the primary
    *   table, specify that table here. For example, a 'track' node
    *   might have a relationship to an 'album' node, which might
@@ -451,10 +451,10 @@ public function addRelationship($alias, JoinPluginBase $join, $base, $link_point
    * table is valid and exists; if you do not wish for this testing to
    * occur, use $query->queueTable() instead.
    *
-   * @param $table
+   * @param string $table
    *   The name of the table to add. It needs to exist in the global table
    *   array.
-   * @param $relationship
+   * @param string|null $relationship
    *   An alias of a table; if this is set, the path back to this table will
    *   be tested prior to adding the table, making sure that all intermediary
    *   tables exist and are properly aliased. If set to NULL the path to
@@ -465,7 +465,7 @@ public function addRelationship($alias, JoinPluginBase $join, $base, $link_point
    *   a different method; this is most likely to be used when tracing
    *   a hierarchy path. (node->parent->parent2->parent3). This parameter
    *   will specify how this table joins if it is not the default.
-   * @param $alias
+   * @param string|null $alias
    *   A specific alias to use, rather than the default alias.
    *
    * @return string
@@ -493,10 +493,10 @@ public function addTable($table, $relationship = NULL, ?JoinPluginBase $join = N
    * ensureTable() should be used instead of this one, unless you are
    * absolutely sure this is what you want.
    *
-   * @param $table
+   * @param string $table
    *   The name of the table to add. It needs to exist in the global table
    *   array.
-   * @param $relationship
+   * @param string|null $relationship
    *   The primary table alias this table is related to. If not set, the
    *   primary table will be used.
    * @param \Drupal\views\Plugin\views\join\JoinPluginBase $join
@@ -504,7 +504,7 @@ public function addTable($table, $relationship = NULL, ?JoinPluginBase $join = N
    *   a different method; this is most likely to be used when tracing
    *   a hierarchy path. (node->parent->parent2->parent3). This parameter
    *   will specify how this table joins if it is not the default.
-   * @param $alias
+   * @param string|null $alias
    *   A specific alias to use, rather than the default alias.
    *
    * @return string
@@ -610,9 +610,9 @@ protected function markTable($table, $relationship, $alias) {
    * the table queue. It will ensure a path leads back to the relationship
    * table.
    *
-   * @param $table
+   * @param string $table
    *   The un-aliased name of the table to ensure.
-   * @param $relationship
+   * @param string|null $relationship
    *   The relationship to ensure the table links to. Each relationship will
    *   get a unique instance of the table being added. If not specified,
    *   will be the primary table.
@@ -801,9 +801,9 @@ protected function adjustJoin($join, $relationship) {
   /**
    * Retrieve join data from the larger join data cache.
    *
-   * @param $table
+   * @param string $table
    *   The table to get the join information for.
-   * @param $base_table
+   * @param string $base_table
    *   The path we're following to get this join.
    *
    * @return \Drupal\views\Plugin\views\join\JoinPluginBase
@@ -844,17 +844,17 @@ public function getTableInfo($table) {
    * This will automatically call ensureTable to make sure the required table
    * exists, *unless* $table is unset.
    *
-   * @param $table
+   * @param string $table
    *   The table this field is attached to. If NULL, it is assumed this will
    *   be a formula; otherwise, ensureTable is used to make sure the
    *   table exists.
-   * @param $field
+   * @param string $field
    *   The name of the field to add. This may be a real field or a formula.
-   * @param $alias
+   * @param string $alias
    *   The alias to create. If not specified, the alias will be $table_$field
    *   unless $table is NULL. When adding formulae, it is recommended that an
    *   alias be used.
-   * @param $params
+   * @param array $params
    *   An array of parameters additional to the field that will control items
    *   such as aggregation functions and DISTINCT. Some values that are
    *   recognized:
@@ -942,17 +942,17 @@ public function clearFields() {
    * );
    * @endcode
    *
-   * @param $group
+   * @param string $group
    *   The WHERE group to add these to; groups are used to create AND/OR
    *   sections. Groups cannot be nested. Use 0 as the default group.
    *   If the group does not yet exist it will be created as an AND group.
-   * @param $field
+   * @param string $field
    *   The name of the field to check.
-   * @param $value
+   * @param string|null $value
    *   The value to test the field against. In most cases, this is a scalar. For more
    *   complex options, it is an array. The meaning of each element in the array is
    *   dependent on the $operator.
-   * @param $operator
+   * @param string|null $operator
    *   The comparison operator, such as =, <, or >=. It also accepts more
    *   complex options such as IN, LIKE, LIKE BINARY, or BETWEEN. Defaults to =.
    *   If $field is a string you have to use 'formula' here.
@@ -986,14 +986,14 @@ public function addWhere($group, $field, $value = NULL, $operator = NULL) {
    * (TABLE.FIELD) and that the table already exists in the query.
    * Internally the dbtng method "where" is used.
    *
-   * @param $group
+   * @param string $group
    *   The WHERE group to add these to; groups are used to create AND/OR
    *   sections. Groups cannot be nested. Use 0 as the default group.
    *   If the group does not yet exist it will be created as an AND group.
-   * @param $snippet
+   * @param string $snippet
    *   The snippet to check. This can be either a column or
    *   a complex expression like "UPPER(table.field) = 'value'"
-   * @param $args
+   * @param array $args
    *   An associative array of arguments.
    *
    * @see QueryConditionInterface::where()
@@ -1024,14 +1024,14 @@ public function addWhereExpression($group, $snippet, $args = []) {
    * (TABLE.FIELD) and that the table and an appropriate GROUP BY already exist in the query.
    * Internally the dbtng method "having" is used.
    *
-   * @param $group
+   * @param string $group
    *   The HAVING group to add these to; groups are used to create AND/OR
    *   sections. Groups cannot be nested. Use 0 as the default group.
    *   If the group does not yet exist it will be created as an AND group.
-   * @param $snippet
+   * @param string $snippet
    *   The snippet to check. This can be either a column or
    *   a complex expression like "COUNT(table.field) > 3"
-   * @param $args
+   * @param array $args
    *   An associative array of arguments.
    *
    * @see QueryConditionInterface::having()
@@ -1059,20 +1059,20 @@ public function addHavingExpression($group, $snippet, $args = []) {
   /**
    * Add an ORDER BY clause to the query.
    *
-   * @param $table
+   * @param string $table
    *   The table this field is part of. If a formula, enter NULL.
    *   If you want to orderby random use "rand" as table and nothing else.
-   * @param $field
+   * @param string|null $field
    *   The field or formula to sort on. If already a field, enter NULL
    *   and put in the alias.
-   * @param $order
+   * @param string $order
    *   Either ASC or DESC.
-   * @param $alias
+   * @param string $alias
    *   The alias to add the field as. In SQL, all fields in the order by
    *   must also be in the SELECT portion. If an $alias isn't specified
    *   one will be generated for from the $field; however, if the
    *   $field is a formula, this alias will likely fail.
-   * @param $params
+   * @param array $params
    *   Any params that should be passed through to the addField.
    */
   public function addOrderBy($table, $field = NULL, $order = 'ASC', $alias = '', $params = []) {
@@ -1156,8 +1156,8 @@ public function placeholder($base = 'views') {
    * There is other code in filters which makes sure that the group IDs are
    * higher than zero.
    *
-   * @param $where
-   *   'where' or 'having'.
+   * @param string $where
+   *   The type of clause, either 'where' or 'having'.
    */
   protected function buildCondition($where = 'where') {
     $has_condition = FALSE;
@@ -1325,7 +1325,7 @@ public function getConnection() {
   /**
    * Generates a query and count query from all of the information supplied.
    *
-   * @param $get_count
+   * @param bool $get_count
    *   Provide a countQuery if this is true, otherwise provide a normal query.
    */
   public function query($get_count = FALSE) {
diff --git a/core/modules/views/src/Plugin/views/relationship/GroupwiseMax.php b/core/modules/views/src/Plugin/views/relationship/GroupwiseMax.php
index 40af0a77a41b39c1962274fb9b7460ba7f8d7a8c..14225c3f44545a4075a6b8efe270f884b5f44bfc 100644
--- a/core/modules/views/src/Plugin/views/relationship/GroupwiseMax.php
+++ b/core/modules/views/src/Plugin/views/relationship/GroupwiseMax.php
@@ -179,7 +179,7 @@ public function submitOptionsForm(&$form, FormStateInterface $form_state) {
    * generate the subquery when the options are saved, rather than when the view
    * is run. This saves considerable time.
    *
-   * @param $options
+   * @param array $options
    *   An array of options:
    *    - subquery_sort: the id of a views sort.
    *    - subquery_order: either ASC or DESC.
diff --git a/core/modules/views/src/Plugin/views/row/OpmlFields.php b/core/modules/views/src/Plugin/views/row/OpmlFields.php
index ca88dbc6d826b832d4c276c318b7696b407642d1..91231561b1feab70ece3dd8a128d1ec3b2077e6c 100644
--- a/core/modules/views/src/Plugin/views/row/OpmlFields.php
+++ b/core/modules/views/src/Plugin/views/row/OpmlFields.php
@@ -204,9 +204,9 @@ public function render($row) {
   /**
    * Retrieves a views field value from the style plugin.
    *
-   * @param $index
+   * @param int $index
    *   The index count of the row as expected by views_plugin_style::getField().
-   * @param $field_id
+   * @param string $field_id
    *   The ID assigned to the required field in the display.
    *
    * @return string
diff --git a/core/modules/views/src/Plugin/views/row/RowPluginBase.php b/core/modules/views/src/Plugin/views/row/RowPluginBase.php
index a055b5ee70f8604615628bcf7dc56f6c858ffe9b..8a2e3444133f3cd896d745bcf942fd169de7a4e9 100644
--- a/core/modules/views/src/Plugin/views/row/RowPluginBase.php
+++ b/core/modules/views/src/Plugin/views/row/RowPluginBase.php
@@ -161,7 +161,7 @@ public function query() {
   /**
    * Allow the style to do stuff before each row is rendered.
    *
-   * @param $result
+   * @param array $result
    *   The full array of results from the query.
    */
   public function preRender($result) {}
diff --git a/core/modules/views/src/Plugin/views/row/RssFields.php b/core/modules/views/src/Plugin/views/row/RssFields.php
index 64cb267b5c2853f2d8fd058aa0696dd7741a0afd..d8276607cc8244f6812fda93230aa50ed6408dff 100644
--- a/core/modules/views/src/Plugin/views/row/RssFields.php
+++ b/core/modules/views/src/Plugin/views/row/RssFields.php
@@ -180,9 +180,9 @@ public function render($row) {
   /**
    * Retrieves a views field value from the style plugin.
    *
-   * @param $index
+   * @param int $index
    *   The index count of the row as expected by views_plugin_style::getField().
-   * @param $field_id
+   * @param string $field_id
    *   The ID assigned to the required field in the display.
    *
    * @return string|null|\Drupal\Component\Render\MarkupInterface
diff --git a/core/modules/views/src/Plugin/views/style/StylePluginBase.php b/core/modules/views/src/Plugin/views/style/StylePluginBase.php
index 75791cd794540aa0161d68a5ea99faa2d80ea1dc..b03160c68af2db7534108f78717b6d7d7dbe58b2 100644
--- a/core/modules/views/src/Plugin/views/style/StylePluginBase.php
+++ b/core/modules/views/src/Plugin/views/style/StylePluginBase.php
@@ -428,7 +428,7 @@ public function buildSortPost() {}
   /**
    * Allow the style to do stuff before each row is rendered.
    *
-   * @param $result
+   * @param array $result
    *   The full array of results from the query.
    */
   public function preRender($result) {
@@ -474,7 +474,7 @@ public function render() {
    * Plugins may override this method if they wish some other way of handling
    * grouping.
    *
-   * @param $sets
+   * @param array $sets
    *   An array keyed by group content containing the grouping sets to render.
    *   Each set contains the following associative array:
    *   - group: The group content.
@@ -523,12 +523,12 @@ public function renderGroupingSets($sets) {
   /**
    * Group records as needed for rendering.
    *
-   * @param $records
+   * @param array $records
    *   An array of records from the view to group.
-   * @param $groupings
+   * @param array $groupings
    *   An array of grouping instructions on which fields to group. If empty, the
    *   result set will be given a single group with an empty string as a label.
-   * @param $group_rendered
+   * @param bool $group_rendered
    *   Boolean value whether to use the rendered or the raw field value for
    *   grouping. If set to NULL the return is structured as before
    *   Views 7.x-3.0-rc2. After Views 7.x-3.0 this boolean is only used if
@@ -795,9 +795,9 @@ public function getField($index, $field) {
   /**
    * Get the raw field value.
    *
-   * @param $index
+   * @param int $index
    *   The index count of the row.
-   * @param $field
+   * @param string $field
    *   The id of the field.
    */
   public function getFieldValue($index, $field) {
diff --git a/core/modules/views/src/Plugin/views/style/Table.php b/core/modules/views/src/Plugin/views/style/Table.php
index 746580894198f923aabe14a817bc8bc9a4e798ca..6c748ef0424ad47eb0e22d1d138412be5a344b88 100644
--- a/core/modules/views/src/Plugin/views/style/Table.php
+++ b/core/modules/views/src/Plugin/views/style/Table.php
@@ -159,10 +159,10 @@ public function buildSortPost() {
    * - Any fields not currently represented must be added.
    * - Columns must be re-ordered to match the fields.
    *
-   * @param $columns
+   * @param string[][] $columns
    *   An array of all fields; the key is the id of the field and the
    *   value is the id of the column the field should be in.
-   * @param $fields
+   * @param string[] $fields
    *   The fields to use for the columns. If not provided, they will
    *   be requested from the current display. The running render should
    *   send the fields through, as they may be different than what the
diff --git a/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php b/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php
index 09856344f9c4dcc6bdeeabf379fa8291bef144a0..15b535cbad8a97dfc7eac29e4960059c786214da 100644
--- a/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php
+++ b/core/modules/views/src/Plugin/views/wizard/WizardPluginBase.php
@@ -502,7 +502,7 @@ public function buildForm(array $form, FormStateInterface $form_state) {
    *
    * @param \Drupal\Core\Form\FormStateInterface $form_state
    *   The current state of the form.
-   * @param $parents
+   * @param array $parents
    *   An array of parent keys that point to the part of the submitted form
    *   values that are expected to contain the element's value (in the case where
    *   this form element was actually submitted). In a simple case (assuming
@@ -510,10 +510,10 @@ public function buildForm(array $form, FormStateInterface $form_state) {
    *   $form['wrapper']['select'], so that the submitted form values would
    *   normally be found in $form_state->getValue(['wrapper', 'select']),
    *   you would pass ['wrapper', 'select'] for this parameter.
-   * @param $default_value
+   * @param array|string $default_value
    *   The default value to return if the #select element does not currently have
    *   a proper value set based on the submitted input.
-   * @param $element
+   * @param array $element
    *   An array representing the current version of the #select element within
    *   the form.
    *
diff --git a/core/modules/views/tests/src/Kernel/Plugin/CastedIntFieldJoinTestBase.php b/core/modules/views/tests/src/Kernel/Plugin/CastedIntFieldJoinTestBase.php
index 6cbf304ff639bc3c1d5d2601939845e28376d803..fc356f757b11c17abf102aaad01739d37ac5f1cd 100644
--- a/core/modules/views/tests/src/Kernel/Plugin/CastedIntFieldJoinTestBase.php
+++ b/core/modules/views/tests/src/Kernel/Plugin/CastedIntFieldJoinTestBase.php
@@ -177,9 +177,9 @@ public function testBuildJoin(): void {
    *
    * @param \Drupal\views\ViewExecutable $view
    *   The view used in this test.
-   * @param $configuration
+   * @param array $configuration
    *   The join plugin configuration.
-   * @param $table_alias
+   * @param string $table_alias
    *   The table alias to use for the join.
    *
    * @return array
diff --git a/core/modules/views/tests/src/Kernel/Plugin/FieldOrLanguageJoinTest.php b/core/modules/views/tests/src/Kernel/Plugin/FieldOrLanguageJoinTest.php
index c06ab3694d94edc361ad7f871219c9a6bf57c55c..8c7d8c44fc74a7f81b33cbbfd34df8946161b98b 100644
--- a/core/modules/views/tests/src/Kernel/Plugin/FieldOrLanguageJoinTest.php
+++ b/core/modules/views/tests/src/Kernel/Plugin/FieldOrLanguageJoinTest.php
@@ -184,9 +184,9 @@ public function testLanguageBundleConditions(): void {
    *
    * @param \Drupal\views\ViewExecutable $view
    *   The view used in this test.
-   * @param $configuration
+   * @param array $configuration
    *   The join plugin configuration.
-   * @param $table_alias
+   * @param string $table_alias
    *   The table alias to use for the join.
    *
    * @return array
diff --git a/core/modules/views/tests/src/Unit/Plugin/field/FieldTest.php b/core/modules/views/tests/src/Unit/Plugin/field/FieldTest.php
index d9f371c41c58adb98961f79c0113052fe5ddf858..12241bc6a52ccab9de909dff16b16b2000e44cc6 100644
--- a/core/modules/views/tests/src/Unit/Plugin/field/FieldTest.php
+++ b/core/modules/views/tests/src/Unit/Plugin/field/FieldTest.php
@@ -720,7 +720,7 @@ public static function providerSortOrders() {
    *
    * @param \Drupal\views\Plugin\views\field\EntityField $handler
    *   The field handler.
-   * @param $definition
+   * @param array $definition
    *   An array with entity type definition data.
    */
   protected function setupLanguageRenderer(EntityField $handler, $definition): void {
diff --git a/core/modules/views/tests/src/Unit/ViewExecutableTest.php b/core/modules/views/tests/src/Unit/ViewExecutableTest.php
index 149e8b55a842d9fc9fac2d5b7030bbdd69756bc4..e6986b8630d5469e23bbb818111aa85853c0e7ba 100644
--- a/core/modules/views/tests/src/Unit/ViewExecutableTest.php
+++ b/core/modules/views/tests/src/Unit/ViewExecutableTest.php
@@ -367,7 +367,7 @@ public function testGenerateHandlerId(): void {
    *
    * @param string $option
    *   The option to set on the View.
-   * @param $handler_type
+   * @param string $handler_type
    *   The handler type to set.
    */
   public function testAddHandler($option, $handler_type): void {
@@ -409,7 +409,7 @@ public function testAddHandler($option, $handler_type): void {
    *
    * @param string $option
    *   The option to set on the View.
-   * @param $handler_type
+   * @param string $handler_type
    *   The handler type to set.
    */
   public function testAddHandlerWithEntityField($option, $handler_type): void {
diff --git a/core/modules/views/views.module b/core/modules/views/views.module
index 964b1657c61372b713eb546a4d8bae630cada9d1..9d36d592909550384d68d878afc8227b1e88eacc 100644
--- a/core/modules/views/views.module
+++ b/core/modules/views/views.module
@@ -76,13 +76,13 @@ function views_preprocess_comment(&$variables): void {
  * later on (for example, alter hooks which run later during the same page
  * request).
  *
- * @param $render_element
+ * @param array $render_element
  *   The renderable array to which contextual links will be added. This array
  *   should be suitable for passing in to
  *   \Drupal\Core\Render\RendererInterface::render() and will normally contain a
  *   representation of the view display whose contextual links are being
  *   requested.
- * @param $location
+ * @param string $location
  *   The location in which the calling function intends to render the view and
  *   its contextual links. The core system supports three options for this
  *   parameter:
@@ -380,12 +380,12 @@ function _views_query_tag_alter_condition(AlterableInterface $query, &$condition
  * to do that, you will need to do what this function does manually, by
  * loading the view, getting the preview and then getting $view->getTitle().
  *
- * @param $name
+ * @param string $name
  *   The name of the view to embed.
- * @param $display_id
+ * @param string $display_id
  *   The display id to embed. If unsure, use 'default', as it will always be
  *   valid. But things like 'page' or 'block' should work here.
- * @param ...$args
+ * @param mixed ...$args
  *   Any additional parameters will be passed as arguments.
  *
  * @return array|null
@@ -418,7 +418,7 @@ function views_embed_view($name, $display_id = 'default', ...$args) {
  *   want to use. A URL will appear in the status bar of your browser. This is
  *   usually at the bottom of the window, in the chrome. Everything after
  *   #views-tab- is the display ID, e.g. page_1.
- * @param ...$args
+ * @param mixed ...$args
  *   Any additional parameters will be passed as arguments.
  *
  * @return array
diff --git a/core/modules/views_ui/views_ui.module b/core/modules/views_ui/views_ui.module
index 4f056b0f767966048dd391f1c8400f9a97dff044..fa4471b4f880d037c5c7de28087d77e7557c4157 100644
--- a/core/modules/views_ui/views_ui.module
+++ b/core/modules/views_ui/views_ui.module
@@ -53,7 +53,7 @@ function views_ui_theme_suggestions_views_ui_view_preview_section(array $variabl
  * @todo Refactor this function to use much stuff of
  *    views_ui_edit_form_get_bucket.
  *
- * @param $title
+ * @param string $title
  *   Add a bolded title of this section.
  */
 function views_ui_view_preview_section_handler_links(ViewExecutable $view, $type, $title = FALSE) {
diff --git a/core/phpcs.xml.dist b/core/phpcs.xml.dist
index 71be430a339f19966c481ba8bd24c5ae1f04abbf..3bf930d50a45d8a6c13c1e0fc9e2a22add89bfe4 100644
--- a/core/phpcs.xml.dist
+++ b/core/phpcs.xml.dist
@@ -87,6 +87,8 @@
     <include-pattern>core/lib/Component/*</include-pattern>
     <include-pattern>core/includes/*</include-pattern>
     <include-pattern>core/*/*Database*/*</include-pattern>
+    <include-pattern>*/*/views/*</include-pattern>
+    <include-pattern>*/*/views_ui/*</include-pattern>
   </rule>
   <rule ref="Drupal.Commenting.FunctionComment.MissingReturnComment">
     <include-pattern>core/lib/Drupal/Core/*</include-pattern>