FeaturePilot 是一个面向 VS Code 的 .feature 语言增强插件,提供 Cucumber Step 自动补齐、定义跳转、未定义诊断、侧边栏检索和自动格式化。
适用场景
适合以下项目:
- 使用 Cucumber/Gherkin 编写大量
.feature用例 - Step definitions 同时来自项目源码和 npm 依赖包
- 需要稳定的补齐、跳转、诊断与统一格式化体验
核心能力
.feature文件专属增强(Given/When/Then/And/But)- Step 自动补齐(支持 snippet 占位)
- 选择补齐项时,自动替换当前行关键字后的整段文本(避免错误残留)
And语义链场景下提供稳定补齐(例如And I click ...)- Ctrl/定义跳转到对应 Step definitions
- 未定义 Step 红色波浪线诊断
- Quick Fix 模板修复:对未定义 Step 提供可选模板并一键替换
- 双来源扫描(项目
src+ Lighthouse 包) - 侧边栏 Step 树形浏览、检索、刷新、平台切换
.feature自动格式化(全文/选区/可选 On-Type)
Step 扫描规则
启用前提:工作区存在以下目录
node_modules/@lighthouse/lighthouse-implementation
满足前提后,扫描来源为:
- 项目:
src/**/*.ts - 包内:
node_modules/@lighthouse/lighthouse-implementation/src/step-definitions/<platform>/**/*.ts
平台目录通过配置控制(默认 durandal-platform)。
冲突处理:同一 gherkin + stepText 重复时,项目 src 优先。
侧边栏(Step Explorer)
活动栏入口:FeaturePilot
树结构:
- 来源(Project / Lighthouse)
- 平台/目录
- 文件
- Step
支持功能:
- 标题栏刷新按钮(重建缓存)
Search Step Definitions快速检索并跳转Switch Lighthouse Platform切换平台后自动刷新
自动格式化
- 全文格式化
- 选区格式化
- 可选 On-Type 格式化
- 表格对齐(含 CJK 宽度处理)
- DocString 策略(
skipDocStringsFormat) """中 JSON 美化
命令
FeaturePilot: Refresh Step IndexFeaturePilot: Search Step DefinitionsFeaturePilot: Switch Lighthouse Platform
配置
所有配置前缀统一为 featurepilot.*。
常用配置:
featurepilot.lighthousePlatforms:启用的平台目录列表featurepilot.strictGherkinCompletion:补齐时是否严格遵循 Gherkin 语义featurepilot.strictGherkinValidation:诊断时是否严格遵循 Gherkin 语义featurepilot.customParameters:自定义参数映射featurepilot.parameterSymbols:参数占位符前后缀(如给string自动加引号)featurepilot.onTypeFormat:是否启用 On-Type 格式化featurepilot.formatConfOverride:格式化规则覆盖
默认 customParameters 包含:
[
{ "parameter": "{pronoun}", "value": "(I|he|she|they|his|her|their)" }
]
推荐使用流程
- 安装扩展并打开项目工作区根目录
- 确认
node_modules/@lighthouse/lighthouse-implementation已安装 - 在侧边栏执行
Refresh Step Index - 如需切换平台,执行
Switch Lighthouse Platform - 在
.feature中使用补齐、跳转、Quick Fix 与格式化
自动补齐与 Quick Fix 说明
-
自动补齐:
- 在
Given/When/Then/And/But后输入时触发 - 选择候选后会替换当前行关键字后的全部文本
- 参数按
featurepilot.parameterSymbols规则生成(默认字符串参数带双引号)
- 在
-
Quick Fix(未定义 Step):
- 在红色波浪线处使用
Ctrl+.打开修复建议 - 提供模板候选并直接替换当前行 Step 文本
- 参数占位采用空引号形式(例如
""),便于直接填写
- 在红色波浪线处使用
常见问题
- 侧边栏显示 Language server is not running
- 执行
Developer: Reload Window - 确认打开的是正确工作区根目录(建议单根)
- 修改 Step definitions 后未立即生效
- 点击侧边栏刷新按钮
- 或执行
FeaturePilot: Refresh Step Index
- 跳转/诊断结果异常
- 先刷新 Step 索引
- 再检查当前平台配置
featurepilot.lighthousePlatforms
And I click ...看不到期望提示
- 确认光标位于
.feature文件中 - 执行
FeaturePilot: Refresh Step Index - 执行
Developer: Reload Window
License
MIT