如何在VSCode全局搜索中排除被宏禁用的灰色无效代码行?
VSCode全局搜索排除宏禁用代码行的解决方案
可以实现该需求,目前有两种可行方案,适配不同使用场景:
方案1:使用C/C++扩展原生符号查找功能(推荐)
C/C++ IntelliSense扩展的符号解析逻辑本身就会自动排除当前配置下未激活的宏包裹的无效代码。你需要搜索函数调用位置时,直接右键点击目标函数,选择「查找所有引用」,或者使用默认快捷键Shift+F12,返回的结果会自动过滤掉UNIT_TEST等未启用宏包裹的灰色无效代码行,不需要额外做任何配置。
该方案完全匹配你当前IDE配置的宏生效逻辑,准确率100%,不会误排除有效代码。
方案2:配置全局搜索的正则排除规则
如果你习惯使用全局文本搜索(快捷键Ctrl+Shift+F),可以通过正则匹配规则排除固定格式的宏包裹代码段,操作步骤如下:
- 打开全局搜索面板,点击面板右上角的「正则表达式」按钮(.* 图标)
- 在「包含」输入框下方的「排除」输入框中,填入对应正则规则:
#ifdef UNIT_TEST[\s\S]*?#endif
- 执行搜索即可,此时返回的搜索结果会自动跳过所有
#ifdef UNIT_TEST到#endif之间的代码行。
注意:该方案仅适用于测试代码固定用
#ifdef UNIT_TEST+#endif包裹的场景,如果存在嵌套宏、#ifndef、#elif等其他写法,需要对应调整正则匹配规则。
内容的提问来源于stack exchange,提问作者Jaden
相关产品推荐
相关产品推荐

