当前位置: 首页 > 网络应用技术

Eslint的禁用和启用评论如何?

时间:2023-03-07 21:34:18 网络应用技术

  我不知道您是否使用了ESLINT注释的配置:

  Eslint支持Eslint-Disable,Eslint-Enable,Eslint-Disable-next-line等。内部配置指定是否效用规则,称为Inline Config。

  WebPack中还有这种配置方法。在向魔术注释引入模块时,您可以配置代码分割。

  同样,Terser还具有这种称为宣传的机制。它可以指定某个API是否纯净。如果未在纯函数中使用它,则可以直接删除。

  可以看出,许多库通过注释使用这种配置方法。无论是称为注释,魔术评论还是内联配置,都指的是同一件事。

  既然它是如此常见的配置,那么它们是如何实现的?

  让我们看一下ESLINT内联配置的实现。

  ESLINT将使用源代码为AST,然后将AST检查为一系列检查的规则。检查结果将以格式化为格式。

  评论的配置在哪里?

  我简化了源代码,就是这样:

  可以看出,总体过程是:

  换句话说,ESLINT的内联配置在棉绒完成AST后是有效的,在获得各种proflems后生效,并在Privems过滤。

  那么您如何从AST获取指令?如何过滤问题?

  让我们来看看。

  从AST删除指令码后,就是这样:

  实际上,这是与AST中所有注释的内容的常规匹配。如果指令支持它,请收集并记录相应的等级。

  之后,它被过滤出来的问题。

  简化的源代码是这样:

  我们关心:

  我们想滤除问题中残疾规则报告的预言,并返回过滤后的预言。

  您可以维护残疾人图以指示禁用规则。

  对于每个问题,指令的信息根据数字数字从残障指导中获取,并将相应的规则放置在disabledrulemap中。

  然后,查看PRELEM的规则是否被禁用,即,是否处于禁用卢比普中,如果是的话,它将被过滤。

  处理此操作后,可以报告返回的预言。

  这是Eslint的Eslint-Disable,Eslint-Enable,Eslint-Disable-Next-Line和其他可以配备规则是否生效的原则的评论。

  ESLINT根据等级编号找到相应的评论。实际上,许多AST会记录与每个节点相关的评论。

  例如,Babel的AST:

  通过这种方式,您可以根据AST进行注释,然后确定它是否是通过规律性的指令。

  通过等级编号找到评论,并通过AST找到关联的评论,这是找到注释的两种方法。

  注释中的配置应用于Eslint,WebPack,Terser等工具中,即内联配置,魔术评论,宣传,但它们都指的是同一件事。

  他们都在AST中找到评论,在常规匹配下使用指令(说明),然后取出相应的信息。

  找到指令后,您还必须找到指令生效的地方。您可以找到两种方法:一个是基于等级的比较,另一个是根据相关的AST进行的。

  找到指令和相应的位置后,您可以根据指令中的信息进行各种处理。

  ESLINT在呼叫后打电话后获得所有私人,并按照等级号码进行匹配,并根据禁用规则过滤一些问题。

  注释中的配置是一种相对常见的配置方法,适用于某些本地配置。理解其实现原理可以使我们能够更好地掌握这种机制。