JSDoc Annotation 是一个 VS Code 插件,用来为 TypeScript 和 JavaScript 声明生成 JSDoc / TSDoc 风格的注释块。
当前版本已经切到 AST-only 主路径,重点不再是“尽量快地正则匹配”,而是:
- 覆盖更全
- 输出更稳定
- 配置更清晰
- 更容易维护和扩展
- 类
- 构造器
- 普通函数
- 类方法
- 接口方法签名
- 属性
- 接口属性签名
- 枚举
- 接口
- 类型别名
- 泛型声明
- 可从 AST 推断出的
async和throws
| 命令 | 快捷键 | 说明 |
|---|---|---|
addAnnotation |
Alt+\ |
为光标所在声明生成注释 |
addAnnotations |
Ctrl+Alt+\ |
为当前文件内所有支持的声明批量生成注释 |
openConfigConsole |
Alt+Shift+\ |
打开插件设置 |
当前最重要的行为配置是 annotation.behavior.mode:
insert始终插入新的注释块replace如果声明上方已有 JSDoc,则替换skip如果声明上方已有 JSDoc,则跳过
你可以在 VS Code 设置里配置,也可以在项目中放以下任一文件:
annotation.config.json.annotationrc.json.vscode/annotation.json
示例:
{
"behavior": {
"mode": "replace"
},
"global": {
"authorInfo": "your-name",
"versionInfo": "1.0.0"
},
"method": {
"tags": {
"paramsTag": true,
"returnsTag": true,
"throwsTag": true,
"templateTag": true,
"descriptionTag": false
}
}
}下面是当前默认开启的主要标签,和 package.json 中的扩展配置保持一致:
class.tagsclassTagabstractTagextendsTagimplementsTagnameTagdescriptionTagtemplateTagmethod.tagsasyncTagfunctionTagconstructorTagthrowsTagparamsTagreturnsTagstaticTagaccessTagnameTagdescriptionTagtemplateTagproperty.tagspropertyTagtypeTagstaticTagdefaultTagaliasTagnameTagdescriptionTagtemplateTaginterface.tagsinterfaceTagextendsTagtemplateTagnameTagdescriptionTagenum.tagsenumTagnameTagdescriptionTagtypedef.tagstypedefTagtypeTagtemplateTagaliasTagnameTagdescriptionTagseeTagexampleTag
默认关闭的作者、版本、示例、别名等标签可以按需打开;全局值通过 annotation.global 提供。
更完整的字段说明、默认值表和配置示例见:
/**
* @name load
* @method
* @access protected
* @static
* @async
* @param {string} source
* @returns {Promise<Result<T>>}
* @throws {Error}
* @template T
* @description
*//**
* @name Repository
* @class
* @abstract
* @extends BaseRepository<T>
* @implements {Disposable}
* @implements {Cacheable<T>}
* @template T
* @description
*//**
* @name count
* @property
* @type {number}
* @static
* @default 0
* @description
*/命令执行时,插件会尽量明确告诉你发生了什么:
- 当前行没有可解析声明时,会提示未找到可生成目标
skip模式遇到已有注释时,会提示已跳过- 批量生成完成时,会提示实际应用数量,以及跳过的已有注释数量
- 编辑应用失败时,会给出错误提示,而不是静默失败
可以直接参考 examples/feature-coverage.ts,这个文件覆盖了当前 AST 解析器的主要场景。
当前运行链路已经收成四步:
- 读取并合并设置
- AST 解析为统一的
DocTarget - 构建注释文本
- 插入、替换或跳过已有注释
详细说明见:
- docs/CONFIG_REFERENCE.md
- docs/SIMPLIFIED_ARCHITECTURE.md
- docs/PERFORMANCE_NOTES.md
- docs/TROUBLESHOOTING.md
当前实现已经是 AST-only 主路径,并且做了两层优化:
- 复用
AstParser的ts-morph项目实例 - 按文档
URI + version缓存解析后的目标列表
本仓库本地热启动测试结果大致是:
- 约 49 行:平均
7.11ms - 约 490 行:平均
15.13ms - 约 2450 行:平均
79.78ms
所以对这个插件场景来说,AST 是可接受的,主要优化点不在“退回正则”,而在“减少重复解析和重复建模”。