在我获得了PHP Intelephense的最新更新之后,intelephense继续显示我的路线(以及其他类)的未定义符号错误,以前没有这样的错误,这困扰着我。
这是错误屏幕截图:
这是我的代码:
SELECT LISTAGG( "Id", ' ' DISTINCT) WITHIN GROUP (ORDER BY "Id") "Id"
, LISTAGG("Course", ' ') WITHIN GROUP (ORDER BY "Id") "Course"
, LISTAGG("Day/s", ' ') WITHIN GROUP (ORDER BY "Id") "Day/s"
, "Sect"
, LISTAGG("Class Nbr", ' ' DISTINCT) WITHIN GROUP (ORDER BY "Id") as "Class Nbr"
FROM "sample_sheet_Copy"
GROUP BY "Sect"
实际上这段代码中没有错误,但是智能手机不断显示错误,因此有办法解决此问题吗?
答案 0 :(得分:112)
答案 1 :(得分:57)
Intelephense 1.3添加了未定义的类型,函数,常量,类常量,方法和属性诊断,而以前在1.2中只有未定义的变量诊断。
某些框架的编写方式为用户提供了方便的快捷方式,但使静态分析引擎难以发现运行时可用的符号。
https://github.com/barryvdh/laravel-ide-helper之类的存根生成器在这里填补了空白,与Laravel一起使用,可以通过提供易于发现的符号的具体定义来处理许多错误诊断。
不过,PHP是一种非常灵活的语言,根据代码的编写方式,可能还会有其他一些错误的未定义符号实例。因此,从1.3.3开始,intelephense具有配置选项,可以启用/禁用每种未定义符号类别,以适合工作区和编码样式。
这些选项是:
intelephense.diagnostics.undefinedTypes
intelephense.diagnostics.undefinedFunctions
intelephense.diagnostics.undefinedConstants
intelephense.diagnostics.undefinedClassConstants
intelephense.diagnostics.undefinedMethods
intelephense.diagnostics.undefinedProperties
intelephense.diagnostics.undefinedVariables
将所有这些设置为false(intelephense.diagnostics.undefinedVariables
除外)将产生1.2版的行为。请参见VSCode设置UI并搜索intelephense
。
答案 2 :(得分:16)
您不需要降级,您可以:
在设置中禁用未定义的符号诊断-“ intelephense.diagnostics.undefinedSymbols”:false。
或使用为laravel外墙添加存根的ide帮助程序。参见https://github.com/barryvdh/laravel-ide-helper
答案 3 :(得分:14)
1.3.1已修复。
只需更新您的扩展程序,您就应该很好
答案 4 :(得分:11)
use Illuminate\Support\Facades\Route;
我只是导入此文件,警告对我而言消失了。
答案 5 :(得分:6)
否,仅在自动更新Intelephense扩展名后才会发生错误。
要解决此问题,您可以通过单击Intelephense扩展中的“安装另一个版本”将其降级到以前的版本。版本1.2.3没有错误。
答案 6 :(得分:6)
如果在添加新的Vendor类后立即看到此消息,请确保运行VScode命令(control-shift-P)Index Workspace
答案 7 :(得分:6)
如果您知道问题仅限于Facades并且运行Laravel 5.5或更高版本,则此解决方案可能会对您有所帮助。
安装laravel-ide-helper
composer require --dev barryvdh/laravel-ide-helper
在您的AppServiceProvider
中添加此条件语句以注册助手类。
public function register()
{
if ($this->app->environment() !== 'production') {
$this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class);
}
// ...
}
然后运行php artisan ide-helper:generate
生成一个文件,以帮助IDE理解Facades。您将需要重新启动Visual Studio代码。
参考
https://laracasts.com/series/how-to-be-awesome-in-phpstorm/episodes/16
答案 8 :(得分:4)
这实际上是您的编辑器理解Laravel的一组配置。
如果要手动配置所有配置,则为repo。这适用于VS代码和PhpStorm。
或者,如果您愿意,也可以下载此package。(我创建的)建议您全局安装。
然后运行andylaravel setupIDE
。这将根据拳头仓库为您配置所有内容。
答案 9 :(得分:4)
对于那些希望保持简单,愚蠢的人而言;如果您希望摆脱通知,而不是安装帮助程序或降级,只需添加以下内容即可禁用settings.json
中的错误:
"intelephense.diagnostics.undefinedTypes": false
答案 10 :(得分:3)
我在这里解决了
打开扩展程序设置:
然后搜索要更改的变量,然后取消选中/选中它
您应该考虑的变量是:
intelephense.diagnostics.undefinedTypes
intelephense.diagnostics.undefinedFunctions
intelephense.diagnostics.undefinedConstants
intelephense.diagnostics.undefinedClassConstants
intelephense.diagnostics.undefinedMethods
intelephense.diagnostics.undefinedProperties
intelephense.diagnostics.undefinedVariables
答案 11 :(得分:3)
就我而言,由于某些原因,在VS Code设置中禁用了vendor
文件夹:
"intelephense.files.exclude": [
"**/.git/**",
"**/.svn/**",
"**/.hg/**",
"**/CVS/**",
"**/.DS_Store/**",
"**/node_modules/**",
"**/bower_components/**",
"**/vendor/**", <-- remove this line!
"**/resources/views/**"
],
通过删除包含vendor
文件夹的行,它可以在版本Intelephense 1.5.4上正常运行
答案 12 :(得分:1)
1.3.3已修复它。 只需更新您的扩展程序即可。
答案 13 :(得分:1)
对于遇到这些问题并且不愿意禁用一整套检查的人,有一种方法将您自己的自定义签名传递给Intelephense 。
从Intelephese repo的评论中复制(@KapitanOczywisty撰写):
https://github.com/bmewburn/vscode-intelephense/issues/892#issuecomment-565852100
对于单个工作空间,这非常简单,您必须创建
.php
文件 带有所有签名,并且智能签名将对它们进行索引。如果您想在全球范围内添加存根,仍然可以,但是我不确定是否 它的目的是功能。即使
intelephense.stubs
发出警告 您实际上可以在其中输入任何文件夹名称。{ "intelephense.stubs": [ // ... "/path/to/your/stub" ] }
注意:此设置更改会刷新存根。
您可以在此处查看内置存根: https://github.com/JetBrains/phpstorm-stubs
就我而言,我需要dspec的describe
,beforeEach
,it
...不会突出显示为错误,因此我只包含了带有签名{{ 1}}在我的VSCode的工作区设置中,其中包含我需要的函数声明:
/directories_and_paths/app/vendor/bin/dspec
答案 14 :(得分:0)
我遇到了同样的问题,以下问题似乎已经解决了。
a)已更新至最新版本1.3.5,并重新启用了所有诊断设置。
我仍然收到消息
b)将带有相关库的供应商文件夹添加到工作区
这似乎已经解决了问题。
答案 15 :(得分:0)
use Illuminate\Support\Facades\Route;
添加上面的命名空间
答案 16 :(得分:-2)
版本1.3.2中已解决的问题
无需降级。