有人真的会去分析代码吗

news/2024/11/16 12:03:16/

很早之前使用 webpack 的时候,也有类似的插件,分析打包出来之后的代码,分别是哪些模块比较庞大,针对打包的内容进行优化。说实话,知道归知道,但是没有哪个项目使用分析过。最近刚好看见了两个插件,于是对自己目前在开发的项目跑了一下。

项目是 vite,用的是 rollup-plugin-visualizer 这个插件,分析结果是可视化的。

使用:

npm install --save-dev rollup-plugin-visualizerimport { visualizer } from "rollup-plugin-visualizer";
import { defineConfig, type PluginOption } from 'vite'//vite.config.js
export default defineConfig({plugins: [visualizer({filename: "stats.html",}) as PluginOption],
})

可以自己进行一些配置,没太大必要,能看见结果就行。项目分析结果:
在这里插入图片描述

鼠标放上去,还能看见一些详细信息。不分析不知道,其中一个也没这么大,也是怪自己,当时为了扫码,用了好几个插件,代码没删除,所以这么大。去代码之后这个文件就正常了。而 lodash,最开始的时候没去查一下,lodash 提供了 esmodule 版本,可以按需引入,因为使用的也没有点多,改不改还在思考中(大概率是不改了,怕麻烦)。

挺好用的,如果每个项目都大概分析一些,一些比较大的文件,进行优化,应该对越来越大的项目有挺大的帮助,只是,有人真的会去这样分析项目吗。

上面的插件是分析打包出来的结果,有一个插件 jscpd,是分析代码重复,支持超过 150 中代码语言,GitHub 的第一句话,我觉得真的有点味道:
Copy/paste is a common technical debt on a lot of projects.

复制粘贴确实是大部分项目的技术债,能跑就行。

没有做太多配置的探索,就是简单使用:

$ npm install -g jscpd//根目录新建.jscpd.json
{"threshold": 1,//阈值,超过这个值的就输出报错"reporters": ["html","console"],"absolute": true
}//命令行执行
jscpd ./src -o result

-o是–output的简写,表示输出文件到什么文件夹,结果可以打开输出的index.html

阈值 5:
在这里插入图片描述

阈值 1:
在这里插入图片描述

这个阈值,好像用处不大,看起来只是单纯的是否报错,如果有些项目做超过多大的阈值报错就警告不通过之类的有用。

结果:
在这里插入图片描述
在这里插入图片描述

分析结果就是 SelectTripType.vue 这个文件和 SelectType.vue 这个文件,标签最开始的一部分完全重复了,当然,还有其他一些重复的,总共九个。虽然知道了结果,有些还真不知道怎么改,比如这个标签的,难道单独抽出来做个组件?其他的,确实有一些是可以抽离的。

所以,真的有人会去分析代码吗,还是,所做的项目,所在的团队,所在的公司,真的有在做这件事?

之前看见一句话,有点意思:
鄙视屎山代码,理解屎山代码,写出屎山代码。

欢迎关注订阅号 coding 个人笔记


http://www.ppmy.cn/news/1022682.html

相关文章

【Spring专题】Spring之Bean的生命周期源码解析——阶段一(扫描生成BeanDefinition)

目录 前言阅读指引阅读建议 课程内容一、生成BeanDefinition1.1 简单回顾1.2 概念回顾1.3 核心方法讲解 二、方法讲解2.1 ClassPathBeanDefinitionScanner#scan2.2 ClassPathBeanDefinitionScanner#doScan2.3 ClassPathScanningCandidateComponentProvider#findCandidateCompon…

从金蝶云星空到金蝶云星空通过接口配置打通数据

从金蝶云星空到金蝶云星空通过接口配置打通数据 源系统:金蝶云星空 金蝶K/3Cloud结合当今先进管理理论和数十万家国内客户最佳应用实践,面向事业部制、多地点、多工厂等运营协同与管控型企业及集团公司,提供一个通用的ERP服务平台。K/3Cloud支持的协同应…

maven编译始终提示无效的目标发行版的解决方法

摘自个人印象笔记2021-05-07:https://app.yinxiang.com/fx/55e1d5f4-aeea-446a-a768-0f1a48195f5b(图显示不完整可查看原笔记内容)1:确保IDE中的编译版本正确 在idea中,主要看项目属性中和setting的java compiler中对应的jdk版本是否正确&…

【MySQL】InnoDB存储引擎详解

InnoDB引擎是MySQL5.5版本之后默认的存储引擎 逻辑存储结构 首先是表空间Tablespace(ibd文件):一个mysql实力可以对应多个表空间,用于存储及记录,索引等数据 这些存储记录,索引等数据中是用段(Segment)来…

Glide 的超时控制相关处理

作者:newki 前言 Glide 相信大家都不陌生,各种源码分析,使用介绍大家应该都是烂熟于心。但是设置 Glide 的超时问题大家遇到过没有。 我遇到了,并且掉坑里了,情况是这样的。 调用接口从网络拉取用户头像&#xff0c…

4-20mA模拟电流回路协议比0-20mA模拟电流回路协议有什么优势?

有很多原因使得我们采用4-20mA电流回路协议作为事实标准(特别针对回路供电的设备,比如二线制传感器)。其中最重要的有以下两点: 1)在一个直流系统中,能够有效地侦测开路状态。如果在4-20mA系统中&#xff0…

Redis_安装、启动以及基本命令

2.Redis安装 2.1前置处理环境 VMware安装安装centOS的linux操作系统xshellxftp 2.2 配置虚拟机网络 按ctrlaltf2 切换到命令行 cd (/)目录 修改/etc/sysconfig/network-scripts/ifcfg-ens3 vi 命令 按insert表示插入 按ctrlesc退出修改状态 :wq 写入并退出 此文件必须保持一…

批量翻译多个文件夹,让你的文件管理更智能高效!

大家好!对于经常需要管理大量文件夹的你来说,每次手动逐个改名实在是一项繁琐且易出错的工作。现在,我们为你带来一款强大的文件夹批量改名工具,让你能够轻松实现多个文件夹的批量翻译,让你的文件管理更智能高效 第一…