【问题标题】:Eclipse PDT - Semantic AnalysisEclipse PDT - 语义分析
【发布时间】:2015-02-27 08:58:37
【问题描述】:

Eclipse PDT 中的 PHP 语义分析存在一些问题。 在这种情况下,我会收到“未定义的变量”警告:

a.php:

<?php
$a = "var";
?>

b.php:

<?php
/* @var $a String */
/* @var $var String */
include a.php;
echo $a;              // Eclipse says $a is undefined

$arr = ["var" => "val"];
extract($arr);
echo $var;            // Eclipse says $var is undefined
?>

我尝试通过 PhpDoc 语法通知 Eclipse 这些变量,但它忽略了它。

有什么办法可以消除警告没有关闭它?

【问题讨论】:

  • 这是预期的行为。 Eclipse 无法知道 $arr 拥有一个在提取时将变为 $var 的密钥,并且确定 $a 是在另一个文件中定义的也不是一件容易的事。
  • 我投票结束这个问题,因为它是关于一个开发工具,而不是一个编程问题
  • 我不希望 Eclipse 分析 $arr 是否已提取密钥。但我希望它能够从 PhpDoc cmets 获得这些信息。这就是它在 PhpStorm 中的工作方式..
  • Eclipse 不是 PHPStorm。如果你想要类似 PHPStorm 的东西,那么使用 PHPStorm。

标签: php eclipse eclipse-pdt


【解决方案1】:

这是固定的。你可以写在b.php中

/**
 * @var string  $a
 * @var MyClass $otherVar
 */
echo $a;    // No warning should be shown as if $a is undefined.
$otherVar-> // Autocomplete will show you MyClass methods and properties.

【讨论】:

    【解决方案2】:

    语义分析不是 Eclipse PDT 的一部分。此功能是 PEX Core-Plugin 的一部分 https://github.com/pdt-eg/Core-Plugin

    从 cmets 读取变量信息仍在我的待办事项列表中:https://github.com/pdt-eg/Core-Plugin/issues/103

    编辑:

    PDT 自 5.0 以来有自己的内置语义验证。从 5.3 开始,您可以配置问题严重性(Ingore/Info/Warning/Error)。自 6.0 PEX 变量验证器(未使用/未定义)被采用。我们还添加了用于验证扩展的 API(Symfony 和 Doctrine 插件已经使用它)。

    【讨论】:

      猜你喜欢
      • 2019-01-02
      • 1970-01-01
      • 2011-06-22
      • 2010-09-29
      • 2010-11-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-20
      • 1970-01-01
      相关资源
      最近更新 更多