讲师中心 微信公众号
AI工具推荐 视频效率加速

VSCode如何查找重复代码?使用全局搜索与正则表达式【攻略】

夜磊大大_2249

夜磊大大_2249

发布时间:2026-09-11 07:46:29

|

986人浏览过

|

来源于php中文网

原创

VSCode不支持语义级重复代码识别,仅能通过全局文本搜索(Ctrl+Shift+F)配合正则表达式定位模式化代码,需手动判断逻辑重复性,且须排除node_modules等无关路径。

vscode如何查找重复代码?使用全局搜索与正则表达式【攻略】

VSCode 本身不提供“智能识别语义重复代码”的能力,所谓“查找重复代码”实际是靠人工判断 + 精准定位,核心方法只有两个:用 Ctrl+Shift+F(Windows/Linux)或 Cmd+Shift+F(macOS)做全局文本搜索,配合正则表达式缩小范围。别指望它自动标出“这段逻辑和另一处高度相似”——那是专用工具(如 jscpd、simian)干的事。

怎么用正则快速定位疑似重复的函数块?

多数重复代码集中在函数定义、API 调用、状态更新等模式化结构上。比如多个地方都写了类似 setLoading(true); apiCall().then(...).finally(() => setLoading(false)); 的逻辑。

  • 打开全局搜索面板,勾选 “使用正则表达式”(.* 图标)
  • 输入类似 setLoading\(\s*true\s*\);\s*apiCall\(\).+?\.finally\(\s*\(?\s*=>?\s*setLoading\(\s*false\s*\)\s*\)?\s*\),注意启用 “点匹配换行符”(.图标)才能跨行匹配
  • 如果结果太多,先缩小搜索范围:在搜索框下方的 files to include 输入 **/*.ts 或 src/**/hooks/*.js
  • 正则里慎用 .*,优先用 [\s\S]*? 或 .+? 配合“点匹配换行符”,避免贪婪匹配吞掉整个文件

为什么搜 useEffect 总是漏掉某些重复逻辑?

因为 useEffect 写法太灵活:有人写 useEffect(() => { ... }, []),有人拆成两行,还有人加了注释或空行。纯文本搜字面量必然漏。

VSCode
VSCode

避免常见的 VSCode 错误——设置冲突、调试器配置和扩展冲突。

下载
  • 用正则 useEffect\(\s*\(?\s*=>?\s*\{[\s\S]*?\},\s*\[?\s*\]?\s*\)? 能覆盖大部分变体
  • 但更实用的做法是:先搜 useEffect,再手动看每个结果的依赖数组是否为空([])且内部只做副作用(无 return 清理、无条件判断),这才是常见重复模式
  • VSCode 的搜索不分析 AST,所以无法区分 useEffect(() => {}, [a, b]) 和 useEffect(() => {}, []) 的语义差异——得靠你肉眼判断上下文

搜索时如何排除 node_modules 和构建产物?

默认全局搜索会扫 node_modules、dist、build,不仅慢,还会把第三方库里的雷同代码当成本地重复。

  • 在搜索面板底部 files to exclude 输入:**/node_modules/**,**/dist/**,**/build/**,**/.git/**
  • 如果项目用 pnpm,加上 **/.pnpm/**;用 yarn v3,加上 **/.yarn/**
  • 这些路径规则是 glob 模式,不是正则,不支持括号或 +,写错一个星号就可能失效
  • 也可以在工作区根目录的 .vscode/settings.json 里配 "search.exclude",一劳永逸

真正难的不是搜出相同字符串,而是判断“这两段看着像,到底算不算重复逻辑”。比如一个地方 Math.round(a * 100) / 100,另一个地方封装成 roundToTwo(a) —— VSCode 搜不到后者,但它们确实是重复。这种只能靠静态分析工具补位,编辑器只是第一道筛子。

相关文章

热门游戏推荐
热门游戏推荐

海量精品小游戏合集,无需安装即点即玩,休闲益智、动作闯关应有尽有,秒开即玩,轻松解压,快乐停不下来

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

相关专题

更多
js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

3836

2023.06.20

正则表达式不包含
正则表达式不包含

正则表达式,又称规则表达式,,是一种文本模式,包括普通字符和特殊字符,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式的文本。php中文网给大家带来了有关正则表达式的相关教程以及文章,希望对大家能有所帮助。

2341

2023.07.05

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

6362

2023.07.05

java正则表达式匹配字符串
java正则表达式匹配字符串

在Java中,我们可以使用正则表达式来匹配字符串。本专题为大家带来java正则表达式匹配字符串的相关内容,帮助大家解决问题。

792

2023.08.11

正则表达式空格
正则表达式空格

正则表达式空格可以用“s”来表示,它是一个特殊的元字符,用于匹配任意空白字符,包括空格、制表符、换行符等。本专题为大家提供正则表达式相关的文章、下载、课程内容,供大家免费下载体验。

500

2023.08.31

Python爬虫获取数据的方法
Python爬虫获取数据的方法

Python爬虫可以通过请求库发送HTTP请求、解析库解析HTML、正则表达式提取数据,或使用数据抓取框架来获取数据。更多关于Python爬虫相关知识。详情阅读本专题下面的文章。php中文网欢迎大家前来学习。

653

2023.11.13

正则表达式空格如何表示
正则表达式空格如何表示

正则表达式空格可以用“s”来表示,它是一个特殊的元字符,用于匹配任意空白字符,包括空格、制表符、换行符等。想了解更多正则表达式空格怎么表示的内容,可以访问下面的文章。

386

2023.11.17

正则表达式中如何匹配数字
正则表达式中如何匹配数字

正则表达式中可以通过匹配单个数字、匹配多个数字、匹配固定长度的数字、匹配整数和小数、匹配负数和匹配科学计数法表示的数字的方法匹配数字。更多关于正则表达式的相关知识详情请看本专题下面的文章。php中文网欢迎大家前来学习。

699

2023.12.06

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

120

2026.09.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn