当前位置: 首页 > news >正文

免费网站建设制作上海网络推广报价

免费网站建设制作,上海网络推广报价,郴州做网站公司,网络营销渠道可分为哪几种ESLint 自定义规则开发 规则结构(Rule Structure) 每个自定义规则都是一个 JavaScript 模块,需导出一个包含以下必要属性的对象: meta 元数据 type:规则类型 "problem":代码中存在可能导致错…

ESLint 自定义规则开发

规则结构(Rule Structure)

每个自定义规则都是一个 JavaScript 模块,需导出一个包含以下必要属性的对象:

meta 元数据

  • type:规则类型
    • "problem":代码中存在可能导致错误的高优先级问题
    • "suggestion":代码风格优化建议,不影响功能
    • "layout":与格式相关的空格、换行等问题
  • docs:文档信息
    • description:规则用途说明
    • url(可选):详细说明链接
  • fixable(可选):是否支持自动修复
    • "code":代码级修复
    • "whitespace":空白字符修复
  • schema:规则配置项的验证方案(基于 JSON Schema)

create(context) 核心方法
返回包含访问者方法的对象,用于遍历 AST 节点:

module.exports = {meta: { ... },create(context) {return {Identifier(node) { ... },"FunctionDeclaration:exit"(node) { ... }};}
};

Context 对象

create 方法接收的 context 参数提供以下关键功能:

属性

属性/方法说明
context.id规则名称
context.filename当前文件路径
context.cwd工作目录
context.options用户配置参数
context.sourceCode源代码操作对象
context.settings共享配置
context.languageOptions语言解析选项

方法

  • context.report(descriptor):核心问题报告方法
  • context.getSourceCode()(已废弃,推荐使用 context.sourceCode

报告问题(Reporting Problems)

使用 context.report() 报告问题时,可配置以下参数:

  • node/loc:问题位置
  • message/messageId:错误信息
    • 推荐使用 messageId 配合 meta.messages 管理多语言消息
  • data:消息模板的填充数据
  • fix(fixer):自动修复函数
  • suggest:建议修正方案

自动修复注意事项

  • 必须在 meta 中声明 fixable 属性
  • 常用修复方法:
    • replaceText()
    • insertTextAfter()
    • removeRange()
  • 修复限制:
    • 同一位置不可重叠修改
    • 最多进行 10 轮修复迭代

占位符与 Message IDs

meta.messages(可选):定义消息模板对象,其中包含多个 messageId 对应不同错误类型

在 context.report 中通过 messageId + data 引用模板
使用 {{xxx}} 占位符在消息中插入动态内容

选项(Options)与 Schema

可配置规则需满足以下要求:

  1. 在 meta.schema 中定义配置参数结构(使用 JSON Schema)
  2. 通过 context.options 获取用户配置值
  3. 可选提供 defaultOptions 作为未配置项的默认值
  4. Schema 验证失败会在配置阶段报错,避免运行时异常

源代码访问(Source Code & Comments 等)

通过 context.sourceCode 可进行以下操作:

  1. 获取源代码:
    • 获取完整文本或指定 AST 节点子树 (getText)
  2. 获取注释信息(注释不在默认 AST 节点中):
    • 获取节点前后注释 (getCommentsBefore/After)
    • 获取所有注释 (getAllComments)
    • 获取节点内部注释 (getCommentsInside)
  3. 获取代码结构细节:
    • 获取 Token/节点间的空白和注释
    • 获取 AST 父节点链 (getAncestors)

作用域(Scopes)与变量追踪

  1. 使用 sourceCode.getScope(node) 获取节点作用域
  2. 通过 scope 的 variables 和 references 跟踪变量声明和使用
  3. 使用 sourceCode.markVariableAsUsed(name, refNode) 标记变量使用
    • 避免 no-unused-vars 等规则误报

其他重要事项

  1. 命名规范:建议遵循核心规则命名风格,保持一致性
  2. 单元测试:
    • 使用 RuleTester 测试
    • 包含 valid/invalid 用例
    • 验证修复行为
  3. 运行时规则:
    • 支持动态加载规则
    • 使用 --rulesdir 指定规则目录

性能分析

  1. 支持规则性能追踪
  2. 设置环境变量 TIMING=1 启用性能报告
    • 显示最耗时规则及其执行时间占比
  3. 识别性能瓶颈并进行优化

ESLint 自定义规则的单元测试例子

const rule = require('../../rules/no-js-in-ts-project');
const { RuleTester } = require('eslint');const ruleTester = new RuleTester();
ruleTester.run('no-js-in-ts-project', rule, {valid: [{filename: 'index.ts',code: '',},{filename: '.stylelintrc.js',code: '',},{filename: 'home.ts',code: '',},],invalid: [{filename: 'home.js',code: '',errors: [{message: 'The "home.js" is not recommended in TS project',},],},],
});

测试包含两部分:

✅ 合法用例(valid)

  • index.ts:允许的 TypeScript 文件
  • .stylelintrc.js:允许的配置文件(如 ESLint/Stylelint 配置通常使用 .js 格式)
  • home.ts:允许的 TypeScript 文件

❌ 非法用例(invalid)

  • home.js:在 TypeScript 项目中使用 JavaScript 文件将触发错误

错误信息:

The "home.js" is not recommended in TS project

文档参考:ESLint 官方文档中关于自定义规则的部分,详见 ESLint 自定义规则指南

http://www.dtcms.com/a/427497.html

相关文章:

  • 手撕JS实现call,apply,bind
  • 【Java学习】类加载与实例化过程
  • [xboard] 19 kernel Makefile逐行分析1
  • 《足垒球百科》什么是足球、垒球、足垒球·垒球1号位
  • Process Monitor 学习笔记(5.1):Procmon 概述、抓取原理与常见用途
  • 重塑自然之美:朱小颜健康科技有限公司,开启非侵入式面部美学新时代
  • 站长工具关键词排名怎么查淘宝刷单网站制作
  • 做一个网站的详细教学建设通是正规网站吗
  • Redis Set 类型全解析
  • OpenSSH6 双库链接问题排查与解决总结
  • PyTorch实战车牌识别 小张的停车场项目逆袭之旅
  • IDEA 2025.2正式发布,AI能力有重大更新
  • 【Nginx开荒攻略】静态文件服务深度解析:MIME类型映射与优化实战
  • 郑州社交网站开发网推项目
  • 专做品牌网站手机微网站 模板
  • MQTT Dashboard 访问控制
  • 微算法科技(NASDAQ MLGO)研究基于信任场模型的异构物联网区块链分片算法,提高区块链的可扩展性
  • 数据结构13003考前急救
  • 教育门户网站建站工商登记查询网官网
  • 线代一轮复习
  • Qt解决不同线程,调用对方的函数
  • 开发避坑指南(60):Mysql导入数据报错ERROR 2006 (HY000) MySQL server has gone away解决方案
  • 手机网络不好怎么回事但信号是满的南宁百度seo优化
  • 网站建设怎样设置动态背景风景网站的制作
  • Java-138 深入浅出 MySQL Spring Boot 事务传播机制全解析:从 REQUIRED 到 NESTED 的实战详解 传播机制原理
  • Hadoop实战:从海量数据到AI决策的落地方法论
  • springboot+vue个人财务小程序(源码+文档+调试+基础修改+答疑)
  • 季休节能型遥测终端机RTU-为农业灌溉场景量身定制!
  • 【轨物方案】变频器物联网软硬件一站式解决方案
  • 如何选择合适的EDI软件?