如何解决“ Hook实现不应与@param文档重复。”?


10

我正在使用PhpStorm尝试清理自定义模块中的代码。对于以下功能,我收到此警告:

挂钩实现不应重复@param文档。

/**
 * Implements hook_field_widget_form_alter().
 *
 * @param array $element
 * @param array $form_state
 * @param array $context
 */
function mymodule_field_widget_form_alter(&$element, $form_state, $context) {
  if ($context['widget'] instanceof \Drupal\text\Plugin\Field\FieldWidget\TextareaWidget) {
    $element['#after_build'][] = '_mymodule_remove_textarea_help';
  }
}

我应该怎么做才能解决这个问题?我以为我需要删除@param评论,但是当我这样做时,PhpStorm抱怨我没有任何参数评论。


2
可能会关闭“首选项->编辑器->检查-> PHP-> PHPDoc->缺少PHPDoc评论”?普遍的答案是让PHPStorm进行文件检查以符合Drupal的文件标准
Clive

3
您检查drupal编码标准和php编码标准的问题。您应该停用通用php编码标准的嗅探器,并使用自定义drupal编码标准
sgoelz

@Clive在这里有正确的答案。该错误与编码标准无关,与PHPStorm的内置检查
无关

公认的遮阳篷可以解决IDE中的问题,但是如果您检查编码标准,问题仍然存在。请参阅我的解决方案。
Adrian Cid Almaguer

Answers:


5

问题是,如果您要实现钩子,则无需编写更多内容:

/**
 * Implements hook_field_widget_form_alter().
 */

因为您将在hook_field_widget_form_alter()定义中拥有所有信息,所以只需始终在钩子实现中编写以下内容:

/**
 * Implements hook_hook_name().
 */

在您的情况下:

/**
 * Implements hook_field_widget_form_alter().
 */
function mymodule_field_widget_form_alter(&$element, $form_state, $context) {
  if ($context['widget'] instanceof \Drupal\text\Plugin\Field\FieldWidget\TextareaWidget) {
    $element['#after_build'][] = '_mymodule_remove_textarea_help';
  }
}

2

为后代添加答案;根据克莱夫的评论:

您需要关闭检查“ Missing PHPDoc Comments”的内置PHPStorm检查,然后可以安全地删除您的@param块。

在此处输入图片说明


1
下降投票者会在乎解释什么问题,以便我可以修改答案吗?还是只是“一针见血”下注?
Chapabu

1
这样可以解决IDE中的问题,但是如果您检查编码标准,问题仍然存在。请参阅我的解决方案。
Adrian Cid Almaguer

0

正如其他人所说,您需要设置PHPStorm配置,以将您的项目视为Drupal项目。

其次,使用Coder启动并运行。

一旦安装了这些软件包,就可以在PHPStorm中将它们连接起来并相应地设置标准系统,或者仅从命令行运行报告。这将使您的环境更加符合Drupal编码标准,而不是随随即用的配置随PHPStorm附带的常规标准。


1
反对者是我的。我什么都没有“地毯炸弹”,我只是拒绝了答案,因为它们是不正确的。
Chapabu

2
真是不礼貌的行为。
Jimmy Ko
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.