@es-joy/jsdoc-slint-parser (英语)
这个项目没有经过充分检验,应考虑 实验.
这个项目的目的是允许完全 @babel/eslint-parser 配置,但与
comment-parser- 基于 JSDoc 块的 AST 和 jsdoctypeparser AST 用于
JSDoc在这些街区内打字.
还有一个 @es-joy/jsdoc-eslint-parser/typescript.js 解析器
以 @typescript-eslint/parser。 。 。 .
希望这能促使ESTree正式接受 这样的AST.
你可以运行我们 lint-test 脚本作为示例.
使用大小写
- 使用
no-restricted-syntax禁止某些评论或评论类型 - 向您提供注释或注释类型的可知查询选择器
contexts内eslint-plugin-jsdoc
附加AST的方法
在使用 Babel ESLint 解析器时,生成了具有以下特性的 AST : tokens 打开
Program eSLint 以及《公约》 range 预计每个阵列
节点.
我们补充AST评论 或者说, JSDocBlock AST-by 添加一个 jsdoc 属性
改为: @babel/eslint-parser- 没有密码
合适的祖先 持有评论块。 我们相应
更新访问者的密钥,以确保每个密钥的可访问范围
属性, jsdoc 被添加,因此可以单独进行可变. 我们也
确保 comment-parser 财务报告和审定财务报表 jsdoctypeparser 访问者密钥添加到
我们分析员的访客钥匙.
我们加一个 parent 每个节点,这样我们就可以 getJSDocComment 方法可以
(见下).
难搞的部分 jsdoc 财产与确定
哪个 JSDoc应当与某一节点相关联。 单位
jsdoccomment, (中文(简体) ),
我们有一个 getJSDocComment 方法,最初由 ESLint 本身开始
确定应在何地进行.
这种对特定结构的注释的检测不是一个小问题. 例如:
/* A */
const /* B */ aFunc = /* C */ function () {};
...对于函数表达式,我们可能会在C点寻找JSDoc Block
或B先,但如果不在场,则在A点寻找. 这个
getJSDocComment 方法使用这样的算法,我们称之为我们
解析器当前在每个节点上。 如果在B点没有JSDoc区块或
C. 节点 aFunc VariableDeclaration 节点应该得到JSDoc
在 A 点上加块而不是 FunctionExpression 获得它.
虽然抽象地说,它似乎更适合 FunctionExpression, (中文(简体) ),
找到JSDoc块的实际目的更多地涉及立场和
代码生成, 如果在最接近的位置, 代码生成应最容易操作
到它的实际位置.
请注意,《公约》第2条第1款(a)项和(b)项对所生产的AST作了说明
教学 项目。 此外,
此解析器添加到 Program 节点, a jsdocBlocks 属性(对应
改为 comments 但仅限未加附件的注释块),同时加上
commentsIndex 反映本联合文件索引的整数偏好
块与 comments 阵列.
安装
npm i -D @es-joy/jsdoc-eslint-parser
解析选项
mode (默认为"jsdoc")
这个 jsdoctypeparser 模式, jsdoc, (中文(简体) ), typescript, (中文(简体) ), closure,或 permissive。 。 。 .
一般不建议采用后者.
maxLines (默认:1)和 minLines (默认: 0)
确定从结构的线条来看,我们应该允许 寻找评论块.
indent (默认:"")
目前已曝光,但可能不应更改,而且可能已 未来被删除。 它表示解析时使用的缩进 评论。 (今后可能需要自动侦查。 )
sourceType (违约) @babel/eslint-parser默认值)
用于表示 script 或者说 module
babelOptions (默认:无)
传递给 Babel 的额外选项( 如果不使用 typescript (掌声).
...parserOptions (默认:无)
任何其他选项都会传递到解析器上 .
更改日志
更改日志可见于 变化情况。 。 。 .
作者和执照
布莱特·扎米尔 财务报告和审定财务报表 捐助者。 。 。 .
麻省理工学院的执照,请参看 利马 文档.