tsufeki / tenkawa-php-language-server
PHP 语言的代码服务器,具有强大的静态分析和类型推断功能
Requires
- php: >=7.1
- ext-mbstring: *
- ext-pdo: *
- ext-pdo_sqlite: *
- cogpowered/finediff: ^0.3.1
- composer/xdebug-handler: ^1.3
- eloquent/phpstan-phony: 0.3.0
- evenement/evenement: ^3
- jangregor/phpstan-prophecy: 0.3.0
- jetbrains/phpstorm-stubs: dev-master
- league/html-to-markdown: ^4
- nikic/php-parser: ^4
- phpdocumentor/reflection-docblock: ^4
- phpdocumentor/type-resolver: 0.5.0 as 0.4.0
- phpstan/phpdoc-parser: ^0.3
- phpstan/phpstan: 0.10.7
- phpstan/phpstan-beberlei-assert: 0.10
- phpstan/phpstan-doctrine: 0.10
- phpstan/phpstan-mockery: 0.10.2
- phpstan/phpstan-phpunit: 0.10
- phpstan/phpstan-symfony: 0.10.2
- phpstan/phpstan-webmozart-assert: 0.10
- psr/log: ^1
- react/event-loop: ^1
- recoil/api: ^1
- recoil/kernel: ^1
- recoil/react: ^1
- tsufeki/blanche-json-rpc: ^0.3
- tsufeki/hmcontainer: ^0.3
- tsufeki/kayo-json-mapper: ^0.3
- tsufeki/php-lenient-parser: ^0.1
- tsufeki/react-filesystem-monitor: ^0.4
- webmozart/glob: ^4
- webmozart/path-util: ^2
Requires (Dev)
- phpunit/phpunit: ^7
- dev-master
- 0.4.3
- 0.4.2
- 0.4.1
- 0.4.0
- 0.3.3
- 0.3.2
- 0.3.1
- 0.3.0
- 0.2.0
- 0.1.0
- dev-dependabot/add-v2-config-file
- dev-dependabot/composer/nikic/php-parser-4.10.4
- dev-dependabot/composer/composer/xdebug-handler-1.4.5
- dev-dependabot/composer/recoil/kernel-1.0.3
- dev-dependabot/composer/league/html-to-markdown-4.10.0
- dev-dependabot/composer/psr/log-1.1.3
- dev-dependabot/composer/phpunit/phpunit-7.5.20
- dev-dependabot/composer/react/event-loop-1.1.1
- dev-dependabot/composer/phpdocumentor/reflection-docblock-4.3.4
- dev-dependabot/composer/jangregor/phpstan-prophecy-0.5.0
- dev-dependabot/composer/phpstan/phpstan-0.10.8
- dev-phpstan-0.11
This package is auto-updated.
Last update: 2024-08-29 04:43:06 UTC
README
Tenkawa 是一个 PHP 的语言服务器,具有强大的静态分析和从 PHPStan 中借用而不询问的类型推断引擎。
目前处于实验阶段,但应该可以使用。欢迎任何错误报告、功能请求、建议和问题。
安装
需要 PHP >= 7.1 且包含 pdo_sqlite 扩展。
有关 Visual Studio Code 扩展,请参阅 这里。
可以通过 composer
create-project
命令(~
目录是一个示例)
$ cd ~ $ composer create-project --no-dev --keep-vcs \ tsufeki/tenkawa-php-language-server tenkawa/
或者通过克隆仓库
$ cd ~ $ git clone https://github.com/tsufeki/tenkawa-php-language-server.git tenkawa/ $ cd tenkawa/ $ composer install --no-dev $ cd ..
构建标准库索引
$ php ~/tenkawa/bin/tenkawa.php --build-index
现在配置您的客户端,使用以下命令启动服务器以使用 stdio
php ~/tenkawa/bin/tenkawa.php
或者连接到 TCP 套接字
php ~/tenkawa/bin/tenkawa.php --socket=tcp://127.0.0.1:12345
功能
- ✔ 自动完成
- ✔ 类/函数(还包括自动导入和文档注释内)
- ✔ 类成员
- ✔ 局部变量
- ✔ 诊断
- ✔ 转到定义
- ✔ 转到实现
- ✔ 悬停信息
- ✔ 签名帮助
- ✔ 引用
- ✔ 文档符号
- ✔ 工作区符号
- ✔ 类/函数/常量
- ✘ 类成员(尚未实现)
- ✔ 代码操作
- ✔ 导入类/函数
- ✔ 修复错误的自动加载类/命名空间名称
- ✘ 更多即将推出...
- ✔ 多根工作区
- ✔ 代码片段
- ✔ 类/接口/特性
- ✔ 动态配置
未实现(尚无?)
- ✘ 转到类型定义
- ✘ 转到声明
- ✘ 文档高亮
- ✘ 文档链接
- ✘ 代码透镜
- ✘ 格式化
- ✘ 文档
- ✘ 范围
- ✘ 在类型上
- ✘ 重命名
- ✘ 折叠范围
已知问题
- 许多功能在 traits 中不起作用。这是由 PHPStan 的设计引起的。
- 重构可能不是百分之百无懈可击的。
- 性能和长索引时间。
命令行选项
--socket=<socket>
- 连接到套接字而不是通过 STDIO 进行通信。允许的格式:`tcp://127.0.0.1:12345` 或 `unix:///path/to/socket`。--log-stderr
- 将日志记录到 stderr。--log-file=<file>
- 将日志记录到指定的文件。--log-client
- 使用 `window/logMessage` 协议方法记录日志。--log-level=<level>
- 仅记录给定级别及以上的消息。`<level>` 可以是以下之一:`emergency`、`alert`、`critical`、`error`、`warning`、`notice`、`info`、`debug`。默认为 `info`。--build-index
- 构建标准库索引而不是启动服务器。--config-json=<json>
- 默认选项,见 配置。示例:`--config-json={"completion":{"autoImport":false}}`。
配置
您可以通过 `initialize` 协议方法的 `initializationOptions` 参数或将 `workspace/configuration` 请求实现并从客户端发送 `workspace/didChangeConfiguration` 通知来将配置选项传递给服务器。
识别的选项
{ "tenkawaphp": { "diagnostics": { "phpstan": { // Enable PHPStan diagnostics. "enabled": true } }, "completion": { // Enable automatic import (use) of completed classes. "autoImport": true, // By default, only some PHP extensions are used for autocompletion. // Additional ones can be enabled here. "extensions": ["mysqli", "redis"] }, "index": { // Additional stubs directories "stubs": ["/path/to/stubs/dir"] } } }
许可
版权所有 (c) 2017 tsufeki
本程序是自由软件:您可以按照自由软件基金会发布的GNU通用公共许可证的条款重新分发和/或修改它,许可证版本可以是3或(根据您的选择)任何更新的版本。
本程序的分发是希望它会有用,但没有任何保证;甚至不保证其可销售性或适用于特定目的。有关更多详细信息,请参阅GNU通用公共许可证。
您应该已经随本程序收到了一份GNU通用公共许可证的副本。如果没有,请参阅https://gnu.ac.cn/licenses/。