门神——转转前端代码校验系统

转转FE团队为保障线上项目稳定运行,推出了门神系统,该系统在编译&部署环节通过静态扫描拦截不安全代码。门神系统无缝接入现有部署流程,提供可视化平台,支持本地调试,并采用插件机制以应对多样化需求。系统通过错误等级划分确保拦截严重问题,同时提供代码质量评分。目前,门神系统已成功应用于多个前端项目,未来将进一步拓展功能和优化体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

每逢新春佳节,家家户户都会按照习俗,在门上贴上凶神恶煞的门神,希望能驱邪避灾,保护家人平安。

而转转 FE 团队,也在农历新年前,正式上线了门神系统——一个在 编译 & 部署 环节可以通过静态扫描,发现并拦截含有不安全代码的项目上线的系统,保护线上项目稳定运行。

背景

我们先从几个简单的场景入手,来发现业务开发中的一些常见痛点。

首先,即使转转 FE 团队有着非常完善的脚手架支持和 git commit  规范,并搭配 githook  以确保每次提交的代码都是经由 eslint  校验通过的,但这里面也有两个显而易见的漏洞:

  1. 本地 .eslintrc  文件中的规则可以随意修改

  2. 可以通过 git commit -n  指令轻易绕过 githook  设置的钩子

而我们既不能保证开发人员在匆忙上线时还能保持高度自律,也无力在繁忙的的业务代码开发中推行全面的 code review,所以我们需要借助自动化工具,对其中比较危险的 eslint  错误进行拦截,比如使用了未声明的变量( no-undef ),确保线上代码不会出现低级错误,这是其一。

其次,据前段时间运维反馈,前端项目访问了不少返回状态是 404  的链接。经排查,这些链接大都指向了错误或者失效的图片地址,比如旧的 58CDN 地址的图片,如果未经处理,无疑非常影响用户体验。所以我们要求所有图片链接都需要经过基础工具 setPicSize (转转内部对 CDN 图片进行解析、压缩等操作的工具)的处理,统一修正错误地址的同时,也能在访问出错时提供兜底方案。显然,这份枯燥而又不可省略的检查和修复工作也需要自动化工具的帮助。

最后,我们需要确保项目使用了必要的基础库,充分发挥转转 FE 团队的基建能力,比如:

  1. 确保项目接入了 lego  性能上报系统,上传用户页面性能数据,为性能平台做统计提供真实的原始数据

  2. 确保项目接入了 sentry  线上监控系统,及时发现并上报线上报错

  3. 确保移动端项目使用了最新版本的 zz-ui  组件库,使用了统一的、最新的 UI 样式

上述三个方面,都是需要能够收拢管理,以保证项目质量的地方,但是在传统的开发流程中却很难实现。可能在线 IDE 方案可以解决这些问题,但是对现阶段的转转 FE 团队规模而言探索在线 IDE 方案无疑是不现实的。所以转转 FE 团队提出了门神系统的概念,作为项目上线前的最后一道防线。这其实也和业界很多优秀的前端团队的方案所见略同,比如阿里的飞冰团队开源的 iceworks,从 5 个维度给代码打分;京东 FE 团队也在几天前分享了他们基于 EOS-JS  引擎扫描代码的方案...

预期

这个功能的业务需求很直白,就是扫描并拦截有问题的代码上线。但如果我们希望设计一个高可用度、高拓展度、功能完备的代码校验系统,那要做的还有很多。

门神系统项目第一期的目标大概分为以下几点:

  1. 无缝接入现有的代码部署系统,侵入性小,业务无感知

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值