Visual Studio 新功能:Include 语句清理

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.hqwc.cn/news/27851.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VMware桥接模式无法识别英特尔AX200无线网卡解决办法

1.先到英特尔网站下载最新驱动&#xff0c;更新网卡驱动适用于 Intel 无线网络卡的 Windows 10 和 Windows 11* Wi-Fi 驱动程序 2.到控制面板查看无线网卡属性是否有下图组件 没有的话&#xff0c;依次操作 安装---服务---添加---从磁盘安装----浏览--进入VMware安装目录&…

【运维小知识】(四)——linux常用命令

运维专栏&#xff1a;运维小知识 目录 1.&#x1f341;&#x1f341;用mv命令修改文件名 2.&#x1f343;&#x1f343;创建及删除文件夹即文件夹下所有文件 3.&#x1f342;&#x1f342;移动文件夹并重命名 4.&#x1f33f;&#x1f33f;复制文件 5.&#x1f344;&#x…

SCADA平台助力智能建筑管理,掌控未来建筑

前言 在现代智能建筑管理中&#xff0c;随着设施管理&#xff08;FM&#xff09;、建筑管理系统&#xff08;BMS&#xff09;和火灾监测等方面的需求不断增加&#xff0c;以及物联网系统和建筑信息模型&#xff08;BIM&#xff09;方法的应用&#xff0c;对智能建筑管理提出更…

Android 通过插桩来代理线程池

前言 在日常开发App的过程中&#xff0c;难免需要依赖第三方Sdk&#xff0c;这样就无形中增加了我们自己App的线程数&#xff0c;从而会导致App出现内存溢出、Cpu消耗增加等等负面影响。如果依赖的Sdk提供了线程池代理的接口还好&#xff0c;那样直接设置我们自定义的线程池。但…

Java 压缩多个文件为zip包(中间不生成临时文件,直接压缩为zip二进制流),以及解压zip包二进制流为文件

Java 压缩多个文件为zip包及解压zip包以及压缩多文件为zip文件流解压zip二进制流&#xff08;中间不生成临时文件&#xff0c;直接压缩为zip二进制流&#xff0c;并验证解压&#xff09; 1. 效果图2. 源码 这篇博客将提供俩种方法&#xff0c; 提前生成要压缩的多个文件&#…

招聘小程序制作:连接人才与企业

随着人才市场的竞争日益激烈&#xff0c;招聘小程序成为了企业寻找优秀人才和求职者找到理想工作的重要工具。通过招聘小程序&#xff0c;企业可以发布招聘信息、筛选简历&#xff0c;而求职者可以浏览职位、提交简历等。 招聘小程序的好处 精准匹配人才&#xff1a;招聘小程序…

js的this绑定规则以及箭头函数

目录 调用位置默认绑定隐式绑定隐式丢失 显式绑定callapplybind new绑定装箱绑定优先级this规则之外忽略显式绑定间接函数引用 箭头函数 调用位置 从字面意思上来理解&#xff0c;this似乎是指向自己的 然而在JavaScript中&#xff0c;this并不是绑定到自身的 可以看这一个例子…

经典常谈思维导图怎么制作?手把手教你制作

经典常谈思维导图怎么制作&#xff1f;创建思维导图可以帮助我们更好地组织和整理信息&#xff0c;帮助我们更好地理解和记忆信息。它可以使我们更高效地学习和工作&#xff0c;并帮助我们更好地表达和分享我们的想法和想法。因此&#xff0c;制作思维导图是一种非常有用的技能…

适合投资者的交易策略,4步找到

在外汇交易市场中&#xff0c;根据市场情况和个人投资目标&#xff0c;制定灵活的交易策略是至关重要的。Forexclub认为投资者可以通过结合多种交易策略&#xff0c;打造出全面、科学且适合自己的外汇交易策略。 首先&#xff0c;基于技术指标的交易策略是判断市场趋势和转折点…

剑指 Offer 29. 顺时针打印矩阵

输入一个矩阵&#xff0c;按照从外向里以顺时针的顺序依次打印出每一个数字。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5] 示例 2&#xff1a; 输入&#xff1a;matrix [[1,2,3,4],[5,6,7,8],[9,10,11,12]] …

【深度学习】张量的广播专题

一、说明 张量广播&#xff08;tensor broadcasting&#xff09;是一种将低维张量自动转化为高维张量的技术&#xff0c;使得张量之间可以进行基于元素的运算&#xff08;如加、减、乘等&#xff09;。在进行张量广播时&#xff0c;会将维度数较少的张量沿着长度为1的轴进行复制…

【深度学习】了解残差网 ResNet 和 ResNeXt 的架构

一、说明 了解和实现 ResNet 和 ResNeXt 的架构以实现最先进的图像分类&#xff1a;从Microsoft到 Facebook [第 1 部分]&#xff0c;在这篇由两部分组成的博客文章中&#xff0c;我们将探讨残差网络。更具体地说&#xff0c;我们将讨论Microsoft研究和Facebook AI研究发布的三…