Visual Studio 新功能:Include 语句清理

news2024/12/28 19:30:40

Visual Studio 17.7 预览版 3 引入了一项新功能,用来提升开发者的生产力。我们很高兴地宣布这项新功能:Include 语句清理,这是一个帮助你维护干净代码的工具。如需使用此功能,请确保更新到最新版本的 Visual Studio 预览版。

Include 语句清理

Visual Studio 现在提供 Include 清理功能,该功能包含两个子功能:1) 删除未使用的头文件 2) 对缺失的头文件进行提示。我们建议的工作流程是:首先查看所有提示,并添加缺失的头文件,然后删除那些未使用的头文件包含。

移除未使用的头文件包含

此功能提供了从文件中删除未使用的头文件的建议,从而提高了代码的完整性。
当 Visual Studio 检测到未使用的头文件时,默认情况下,该包含语句会在视觉上变暗。通过将鼠标悬停在灰显的包含上,将出现一个快速操作(在默认视图中由三个点指示)提示,通知你文件中未使用的包含。

你可以单击灯泡以删除未使用的包含或所有未使用的包含。这样可以更轻松地清理代码,并确保仅保留必要的包含内容,以保持代码井井有条。

具体效果请看下图:

>> 请移步至 topomel.com 以查看图片 <<

添加可传递使用的 Include 语句

在 Visual Studio 中,有一个现有功能:当一个头文件已经被使用到了,但是还未包含的情况,会提示开发者。这由波浪线指示,并建议添加所需的包含语句。
目前,我们添加了一项新功能:该功能提供了在文件具有间接依赖项时添加直接包含的建议。包含间接依赖项可能会导致更长的编译时间。但是,在直接包含建议的帮助下,你可以通过仅包含基本的直接依赖项来优化编译时间。

在缺少某些内容的直接包含的情况下,将显示快速操作(在默认视图中由三个点指示)。将鼠标悬停在其上将通知你正在使用来自该可传递包含的内容。
然后,你可以选择单独添加直接包含或添加所有传递使用的包含。通过选择包含所有可传递使用的包含,所有直接头文件将自动添加到文件中使用间接头文件的任何位置。包含直接依赖项后,删除任何未使用的包含语句,仅保留必要的包含至关重要。

>> 请移步至 topomel.com 以查看图片 <<

若要快速执行代码清理,可以通过添加 “添加传递使用并删除未使用的#include语句 (C++)” 来配置代码清理。完成此设置后,你只需单击扫帚图标即可方便地添加所有可传递使用的包含并删除所有未使用的包含。这简化了流程并确保代码保持干净。

>> 请移步至 topomel.com 以查看图片 <<

默认情况下,Include 清理处于禁用状态,但你可以通过导航到 C/C++ > IntelliSense >>文本编辑器 “工具” > “选项” 并选择 “启用#include清理” 来启用它。启用后,你可以灵活地调整设置并配置不同的级别以满足特定需求和偏好。

>> 请移步至 topomel.com 以查看图片 <<

自定义选项

你还可以灵活地自定义 Include 清理生成建议的方式,使其能够无缝适应并与复杂而广泛的代码库集成。
通过进行这些更改或调整,可以确保该过程更好地与项目的特定需求和复杂性保持一致,从而实现更高效和有效的代码清理。在 EditorConfig(EditorConfig 设置)中,你可以添加单个头文件,如果要包含多个头文件,则应使用逗号分隔它们。

文件排除

要从 Include 清理建议中排除特定的头文件,你可以使用编辑器配置。这允许你对哪些文件进行分类和定义不应被视为建议的文件,从而更好地控制 Include 清理生成的建议。排除单个和多个文件的示例如下(从清理建议中排除 vcruntime.h 和 vcruntime_string.h)。

>> 请移步至 topomel.com 以查看图片 <<

文件替换

此功能还支持重新映射外观标题。如果某个文件旨在表示不同的文件,则可以将第一个文件的使用重定向到 EditorConfig 中第二个文件的使用。单个和多个替换文件的示例(将 stdio.h 替换为 cstdio,并将 stdint.h 替换为 cstdint)如下。

>> 请移步至 topomel.com 以查看图片 <<

附加文件

在某些情况下,你可能有其他选项来包含文件,例如外观文件。当一个文件的用法可以被视为另一个文件的用法的替代方法时,你可以在 EditorConfig 中指定此关系。通过这样做,可以防止 Include 清理生成备用匹配的建议。单个和多个备用文件的示例(windows.h 是 minwindef.h 的替代文件,windows.h 是 winerror.h 的替代文件)如下。

>> 请移步至 topomel.com 以查看图片 <<

总结

这个虽然是一个小功能,但是对于我来说还挺有用,你不必手动添加或删除头文件包含,系统会自动为你分析出来。
Visual Studio 还真是每天都在一点点进步,反观我自己:一言难尽。

最后

Microsoft Visual C++团队的博客是我非常喜欢的博客之一,里面有很多关于Visual C++的知识和最新开发进展。大浪淘沙,如果你对Visual C++这门古老的技术还是那么感兴趣,则可以经常去他们那(或者我这)逛逛。
本文来自:《#include cleanup in Visual Studio》

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/747998.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

macOS 14 Sonama - 小记

文章目录 Sonoma 官方资讯关于 Sonama 命名关于 壁纸Sonoma 官方资讯 macOS Sonoma Preview https://www.apple.com/hk/en/macos/sonoma-preview/官方视频介绍 Apple Events --> Watch the Keynote --> 00:43:13 (约14min) https://www.apple.com/hk/en/apple-events/mac…

WEB APIs day3 (2)

3.其它事件 页面加载事件 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthde…

Mac环境下安装nginx并本地部署项目

1、前提 必须安装了homebrew&#xff0c;可在终端输入命令brew -v查看是否已经安装&#xff0c;如果输入指令出现版本号说明已经安装成功 如果未安装先安装&#xff08;homebrew官网地址&#xff09; /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/H…

vue2+echarts5:2D地图打点、下钻

准备 要实现地图可点击、下钻&#xff0c;为了使地图有3D效果&#xff0c;原本用map3D需要下载依赖echarts-gl,由于存在地图下钻后在区域内无法展示完整地图&#xff0c;改用2D地图 "echarts": "^5.4.2", // "echarts-gl": "^2.0.9"…

ChatGpt基于第三方API2D服务封装的SpringBoot starter

前置条件&#xff1a; 看下API2D官网&#xff0c;第三方API2D服务对接流程&#xff1a; 其对接文档地址 https://api2d.com/wiki/doc 一:创建一个空的Maven项目 完成后整的项目层级图如下 1.pom.xml 中添加相关依赖包 <?xml version"1.0" encoding"UTF-…

《C语言初阶篇》听说你还不会for循环的变种写法?一文教你彻底搞懂循环语句!

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《快速入门C语言》《C语言初阶篇》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 前言&#x1f4ac; for 语句的介绍&#x1f4ad; for循环默认可以控制几条语句&#xff1f;&#x1f4ad; for语…

vite基于vue3项目,打包之后的文件夹增加一个额外的文件夹

vite将项目打包之后&#xff0c;自动会生成一个dist文件&#xff0c;里边只有/assets,index.html,favicon.ico.这三个文件。 现在需求是打包之后&#xff0c;dist文件夹下多怎加一个healthcheck的文件夹。 功能实现&#xff1a; 使用复制的方法&#xff0c;将healthcheck文件…

[C++] 为什么头文件最好只做声明

文章目录 问题阐述问题分析和解决方法参考 问题阐述 问题描述&#xff1a; 当编译大的复杂的工程时&#xff0c;经常会遇到一个函数在头文件定义的时候&#xff0c;会导致冲突的问题&#xff1b;下图给出显性原因分析&#xff1b; 问题分析和解决方法 参考 C/C中在头文件中定义…

我爱学QT-把QT程序打包成windows文件

学习链接&#xff1a; 把QT程序打包成Windows软件_哔哩哔哩_bilibili 什么是打包和部署&#xff1f; 因为我们要把写好的程序发给用户来用&#xff0c;我们写好的源码也不能随便给别人。 怎么打包和部署&#xff1f; 1.把工程切换到release模式 这样点 &#xff0c;然后编译…

阿里大模型——通义千问

目录 前段时间世界人工智能大会在上海举行&#xff0c;我去参观感受了一下&#xff0c;整个感受是有点名不副实的&#xff0c;参展的有各种银行、车企、还有中国电信、联通三个运营商都来凑热闹了。 但是也有Google、华为、阿里、腾讯、商汤这样的大厂。现场也可以体验一些大厂…

ESP32开发板引脚介绍【附有引脚使用实例】

ESP32开发板引脚介绍 文章目录 ESP32开发板引脚介绍&#x1f468;‍&#x1f3eb;内容1&#xff1a;背景&#x1f468;‍⚖️内容2&#xff1a;限制类引脚&#x1f468;‍&#x1f4bb;内容3&#xff1a;ESP32 周边设备&#x1f349;文末备注 &#x1f468;‍&#x1f3eb; &am…

shell编程基础(第11篇:重定向)

前言 编写shell脚本程序时&#xff0c;总会使用重定向技术&#xff0c;用来永久保存程序的输出到文件中&#xff0c;或者用来从文件中提取文本到程序中&#xff0c;都支持哪些重定向呢&#xff1f; 温习3个文件描述符 1、标准输入&#xff0c;标准规定通常是键盘&#xff0c;数…

【Ajax】笔记-POST请求(原生)

POST请求 html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>AJAX POST 请求</title><…

PFD 鉴相器设计

鉴相器一般用两个D触发器&#xff0c;一个与非门和一个延迟单元 假设两个D触发器脉冲信号完全相同&#xff0c;查看D触发器输出端可以看到&#xff0c;在脉冲信号到来之后&#xff0c;D触发器输出端电压随脉冲信号升高&#xff0c;两个DFF输出同时为高时&#xff0c;与非门输出…

国科生活小程序使用须知

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、子账号是什么&#xff1f;二、子账号怎么用&#xff1f;三、怎么创建子账号&#xff1f;四、账单怎么看&#xff1f;使用须知联系开发者 前言 国科生活小程…

代码随想录算法学习心得 44 | 309.最佳买卖股票的时机含冷冻期、714.买卖股票的最佳时机含手续费、最近买卖股票时机总结...

一、最佳买卖股票的时机含冷冻期 链接&#xff1a;力扣 描述&#xff1a;给定一个整数数组prices&#xff0c;其中第 prices[i] 表示第 i 天的股票价格 。​ 设计一个算法计算出最大利润。在满足以下约束条件下&#xff0c;你可以尽可能地完成更多的交易&#xff08;多次买…

【Java】一篇文章彻底吃透抽象类和接口 |超详细,建议收藏

博主简介&#xff1a;努力学习的预备程序媛一枚~博主主页&#xff1a; 是瑶瑶子啦所属专栏: Java岛冒险记【从小白到大佬之路】 文章目录 一、抽象类1.1&#xff1a;抽象类的概念1.2&#xff1a;抽象类的定义1.3&#xff1a;抽象类的特性1.4&#xff1a;抽象类的作用和意义 二、…

捕获FormData实现极简的上传图片到服务器-实战

1.postman设置请求和查看响应结果 说明&#xff1a;上图中通过传入参数名为avatar,参数值为file格式&#xff0c;请求方式为post,采用form-data格式传入服务器。响应结果。 2.html5网页实现 <input type"file" class"upload_inp" /><button cla…

java堆溢出和栈溢出

一、堆溢出 import java.util.ArrayList; import java.util.List;public class Demo_071202 {public static void main(String[] args) {List<Test> listnew ArrayList<>();while (true){list.add(new Test());}}static class Test{} }设置JVM初始堆空间和最大堆…

告别传统MQ:Kafka是一个分布式事件流平台,这到底意味着什么呢?

1、引言 在大数据时代&#xff0c;实时数据处理和流式数据分析变得越来越重要。为了应对大规模数据的高吞吐量和低延迟处理需求&#xff0c;出现了各种分布式流处理平台。其中&#xff0c;Apache Kafka作为一种高性能、可扩展的分布式消息系统&#xff0c;成为了广泛应用于实时…