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

夜磊大大_2249

夜磊大大_2249

2026-09-11

986人浏览

原创

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 搜不到后者,但它们确实是重复。这种只能靠静态分析工具补位,编辑器只是第一道筛子。

相关文章

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

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

下载

相关标签:

vscode 正则表达式

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

相关专题

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

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

2023.06.20

3856

8

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

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

2023.07.05

2341

4

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

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

2023.07.05

6362

9

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

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

2023.08.11

792

5

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

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

2023.08.31

500

5

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

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

2023.11.13

653

12

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

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

2023.11.17

386

3

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

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

2023.12.06

699

7

php正则表达式有哪些
php正则表达式有哪些

php正则表达式有"/pattern/"、"^"、"$"、"."、"[]"、"[^]"、"[a-z]"、"[A-Z]"、"[0-9]"、"\d"、"\D"、"\w"、"\W"、&a

2024.02.23

312

5

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程