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》