登录
Smarty Peek
分类:工具软件 访问:26 下载量:0

软件介绍

更新时间:2025-04-28

新的介绍内容:

Smarty Peek是一款专为Smarty模板开发者设计的Visual Studio Code扩展,旨在提升在DanDomain等平台上的开发体验。它通过提供悬停信息帮助开发者更好地理解Smarty变量的结构,尽管目前这些信息是基于常见变量名称的模拟数据。

开发中的注意事项:

  • 模拟数据: 请注意,目前Smarty Peek提供的悬停信息是模拟的,基于常见的变量名称(特别是在DanDomain中使用),尚未对您的PHP后端代码进行实际分析。未来目标是实现实时的Smarty分析。

当前功能:

  • DanDomain特定悬停信息: 对于不匹配预设变量名称的其他检测到的变量模式,它会显示一个通用的消息,表示类型未知。
  • 悬停信息提供者: 在.tpl文件中鼠标悬停时激活悬停信息。
  • 模拟悬停信息(预设): 对于特定常见变量名称(如user, general, page, settings, text, contactdata, currency, access),它会显示预定义的Markdown,展示猜测的结构和类型信息,通常标记为"Smarty Object"或类似。
  • Smarty语言识别: 识别.tpl文件为Smarty语言。
  • 变量语法检测: 使用正则表达式检测常用于Smarty变量的模式(例如{$var}, $var.prop, $var->prop, $var[key], $smarty.const.X)。

要求:

  • Visual Studio Code(版本在package.json中指定,目前为^1.85.0)
  • Node.js和npm(用于本地开发和安装依赖)

安装(市场):

(注意:此部分假设将来会发布到VS Code市场。目前,请使用本地开发步骤。)

  1. 打开VS Code。
  2. 进入扩展视图(Ctrl Shift X)。
  3. 搜索"Smarty Peek"。
  4. 点击"安装"。

本地开发与测试:

遵循这些步骤从源代码中运行和测试扩展:

  1. 克隆仓库:

    git clone 
    cd smarty-peek
  2. 安装依赖:

    npm install

    这将安装必要的库,包括php-parser。

  3. 编译扩展:

    • 单次构建:``` npm run compile

    • 持续构建:``` npm run watch

      
      
      这使用webpack将src/中的TypeScript代码编译到dist/中的JavaScript。
  4. 启动扩展开发主机:

    • 在VS Code中按F5。
    • 这将打开一个新的VS Code窗口([扩展开发主机]),其中加载了smarty-peek扩展。
  5. 测试:

    • 在[扩展开发主机]窗口中,打开包含Smarty .tpl文件的工作区,可能还包括相应的PHP后端代码(取决于您的设置)。
    • 打开一个.tpl文件。
    • 将鼠标悬停在不同的Smarty变量上(例如{$user}, {$product->name}, $items[0])。
    • 观察提供的悬停信息。检查输出面板(从下拉菜单中选择"Smarty Peek")以获取详细的日志和可能的错误。

发布扩展:

要将Smarty Peek扩展发布到VS Code市场,请遵循这些步骤。这确保您可以与他人共享并保持更新:

  1. 安装vsce

    • 确保已安装Node.js。
    • 在终端中运行以下命令:``` npm install -g @vscode/vsce
  2. 获取个人访问令牌(PAT)

    • 使用您的Microsoft账户登录dev.azure.com。
    • 创建一个具有"Marketplace (manage)"范围的新令牌。
  3. 创建发布者配置文件

    • 访问marketplace.visualstudio.com/manage。

    • 使用唯一ID和名称创建发布者配置文件。

    • 通过运行以下命令进行身份验证:``` vsce login

      
      
      然后在提示时输入您的PAT。
  4. 准备您的扩展

    • 确保所有更改已提交到仓库。
    • 更新package.json,包含您的发布者ID、仓库URL和相关关键词。
    • 在项目根目录中包含一个LICENSE文件。
    • 确保README.md是最新的且准确的。
  5. 打包并发布

    • 将扩展打包成.vsix文件:``` vsce package
    • 发布到市场:``` vsce publish
    • 或者,通过市场网站手动上传.vsix文件。
  6. 更新您的扩展

    • 对于未来的更新,增加版本号并发布:``` vsce publish minor

      
      
      (您也可以根据更新类型使用patch或major。)
  7. 管理发布后

    • 使用市场管理页面监控统计数据、编辑详细信息或根据需要取消发布。

注意: 如果您最初手动上传了.vsix文件,您仍然可以使用vsce publish minor进行后续更新,前提是发布者ID和扩展ID保持一致。

快速参考表

步骤操作工具/命令
安装vsce运行npm install -g @vscode/vscenpm
获取PAT通过Azure DevOps创建,选择"Marketplace (manage)"范围Azure DevOps UI
创建发布者在marketplace设置,然后运行vsce login Marketplace UI, vsce
准备扩展编辑package.json,添加LICENSE,提交更改手动编辑
打包和发布运行vsce package然后vsce publish,或手动上传.vsixvsce
更新版本使用vsce publish minor进行版本控制vsce
管理发布后通过管理页面查看/编辑Marketplace UI

工作原理(extension.ts见解)

核心逻辑位于src/extension.ts:

  1. 激活(activate函数):

    • 当VS Code为.tpl文件激活扩展时运行。
    • 创建并注册SmartyHoverProvider。
  2. 悬停提供者(SmartyHoverProvider):

    • provideHover方法在悬停时触发。
    • 变量检测: 使用正则表达式(smartyVariablePattern)查找可能的Smarty语法。
    • 变量清理: 规范化找到的文本(例如,去除{, }, $)。
    • 模拟逻辑: 将cleanVariableName与一系列if/else if条件进行比较,匹配预设名称(例如user, general, settings)。
    • 预设输出: 如果名称匹配,则附加预定义的MarkdownString,包含模拟的结构/类型信息。
    • 回退: 如果没有特定的名称匹配,则生成一个通用的"未知类型"悬停消息。
  3. 停用(deactivate函数):

    • 目前较少,主要记录停用。(之前提到的astCache在本版本中不再相关)。

配置

目前,扩展没有通过settings.json暴露任何特定的配置设置。

已知问题与限制(当前状态)

  • 基本类型推断: 通常对变量、对象属性和方法调用结果显示mixed,因为它尚未追踪变量来源或分析类定义。
  • 复杂路径分析: 无法分析嵌套属性或方法调用,如{$user->address->getCity()}。
  • 预设识别: 仅对预定义变量名称列表提供详细(模拟)的信息。所有其他变量都会得到一个通用的"未知"消息。
  • 不准确的PHP文件发现: findRelevantPhpFiles函数过于宽泛,可能会分析不相关的文件或错过正确的文件。它需要更有针对性(例如,搜索$smarty->display/fetch调用)。
  • 无上下文感知: 缺乏对所使用特定框架或项目结构的任何理解。
  • 无PHP分析: 不读取、解析或分析任何PHP文件。注释或以前README版本中提到的PHP分析已在此当前代码中过时。
  • 正则表达式限制: 变量检测正则表达式可能无法覆盖所有可能的有效(或无效)Smarty语法排列,或者可能错误地将非变量代码识别为变量。
  • 简化的assign检测: 对$object->assign()的检查会找到任何名为assign的方法,这可能会导致如果其他类使用同名方法而产生错误结果。
  • 仅模拟数据: 主要限制是所有悬停信息都是模拟的。它不反映您在特定PHP后端中定义的实际数据类型或结构。目前它包含DanDomain特定数据。

贡献

欢迎贡献!请随时在仓库中打开问题或提交拉取请求。

本站所有资源都是由网友投稿发布,或转载各大下载站, 请自行检测软件的完整性!

本站所有资源仅供学习与参考,请勿用于商业用途,否则 产生的一切后果将由您自己承担!

如有侵权请联系我们删除下架,联系方式:study_golang@163.com

最新教程

查看更多
  • Golang云原生架构师课程
    Golang云原生架构师课程
    Go是一门并发支持、垃圾回收的编译型系统编程语言;本课程转载自哔哩哔哩:https://www.bilibili.com/video/BV1Mh411M7A
  • MySQL数据管理之备份恢复案例解析视频教程
    MySQL数据管理之备份恢复案例解析视频教程
    《MySQL数据管理之备份恢复案例解析视频教程》MySQL是一个开放源码的小型关联式数据库管理系统,目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
  • MySQL索引优化解决方案
    MySQL索引优化解决方案
    本套课程是根据MySQL索引的设计理念与数据结构、索引使用场景、索引分类、索引运用场景、索引性能分析、查询优化、MySQL索引的慢查询等组成,主要讲述了MySQL索引优化的解决方案,非常适合有MySQL使用基础或者有一定工作经验的同学。课程讲解了解决大数量查询慢的问题、如何编写一个高效的SQL、查询语句应该如何优化、索引的实现原理是什么、索引又应该如何优化...等诸多SQL索引优化的难点和面试点。
  • 极客学院Docker视频教程
    极客学院Docker视频教程
    Docker是PaaS提供商dotCloud开源的一个基于LXC的高级容器引擎,源代码托管在Github上,基于go语言并遵从Apache2.0协议开源。Docker自2013年以来非常火热,无论是从github上的代码活跃度,还是各大厂商的支持,都使Docker成为了时下最受关注的技术,甚至微软都声称在下一代WindowsServer中集成对Docker的支持。所以我们收集了《极客学院Docke
  • Golang进阶实战编程
    Golang进阶实战编程
    本课程是在《Go语言基础视频》基础之上录制的,是Go语言基础的后半部分。包括包的管理,IO操作,Go语言最大的亮点:高并发,goroutine,channel,反射等。本视频主要为了帮助Go语言的初学者,从零到一的快速入门。学完本套课程,可以学会如果通过包管理Go项目,并发模型,以及并发实现,channel通道如何传递数据,反射等等。
  • JavaScript极速入门
    JavaScript极速入门
    本套课程将帮助大家迅速掌握JavaScript这门高端的、动态的、弱类型编程语言。知识点简单明了,让你学习0压力,适合新手观看学习......