ReSharper 2025.3 Help

ReSharper 版本历史

本主题列出了以前版本 ReSharper 的发行说明。 要查看最新版本的发行说明,请转到 ReSharper 2025.3 中的新增功能

ReSharper 2025.2

  • 进程外模式

  • SQL 与 NoSQL 支持

  • C# 14 支持:

    • 扩展(初始支持,功能正在编译器中开发)

    • 局部事件与构造函数

    • 空条件赋值

    • 用户定义的复合赋值运算符

    • 忽略的预处理器指令

  • 针对 [LoggerMessage] 的新增重构、代码检查与代码补全项

  • 与 Roslyn IDE 检查匹配的 ReSharper 检查将遵循 Roslyn 配置

  • 性能改进:

    • Razor:缓存重构,更快的 查找用法

    • 重命名重构 :更快的执行速度以及更好的进度指示

    • 就地重构 优化:减少对输入的干扰

    • 源生成文件的解决方案中热启动性能提升

    • ReSharper 构建 :更低的内存占用、更快的执行速度、程序集表面启发式

    • 更快的缓存加载:加权信号量,以及并行 I/O 加载文档

  • C++ 中的新功能:

    • 支持新语言特性:

      • C++26:可变参数 friends = delete("reason") 、占位变量、结构化绑定的属性

      • C11: _Atomic 类型

      • C23: _BitInt(N) 类型、十进制浮点数

    • 对无效 #if 处理的代码块提供代码辅助

    • Unreal Engine

      • 显示实现 UINTERFACE 的蓝图

      • BlueprintGetter BlueprintSetter 元数据提供代码补全

    • 支持在 OpenMP #pragma 指令中引用变量

    • 提供新的语法样式上下文操作和设置,以按照声明顺序排序定义

    • 用于保存 lambda 的变量命名样式

    • 构造函数初始化列表中冒号前的空格格式设置

    • 在不包含于 CMake 和“打开文件夹”项目中任何构建目标的源文件中启用 ReSharper C++ 功能

    • 文件结构 :对关键字和标识符进行语法高亮显示,使用新图标区分只读操作和修改操作

    • 内联提示 适用于 std ::initializer_list 类型的参数

    • 单击 virtual 关键字可导航至重写函数(类似于 单击 override 可跳转到基函数)

ReSharper 2025.1

  • 完全支持 .NET 10 和 C# 14 预览功能

  • 转换参数重构 改进:支持值元组、记录类、主构造函数等。

  • Push-to-Hint 激活改进(按下 键两次并按住),以及 marker bar 上的视觉指示器。

  • Unity 插件 已捆绑。

  • Formatter 改进:在 // 后正确换行并添加空格,以及一个选项以避免在方法调用中单个 lambda 表达式参数之前插入换行符。

  • 集成反编译器改进:

    • 支持 C# 字符串插值:反编译器现在会在适用的情况下自动将 String.Concat String.Format 调用转换为 C# 字符串插值。

    • 支持 allows ref struct 泛型反约束

    • 支持 ref 字段和 scoped 参数修饰符

    • 支持文件范围命名空间。 仅限 dotPeek:在工具 | 选项 | 反编译器 | 代码样式和格式设置中,复选框选项为使用文件范围命名空间(默认 - 选中)。

    • 支持 System.Threading.Lock

    • 支持基于模式的 ref 结构体使用

    • 支持必需成员

    • 为某些整数常量显示带注释的十六进制表示

  • C++ 中的新功能:

    • 支持多个新的 GNU 语言扩展:省略操作数的条件语句、 #import 指令、 _Float16 __bf16 __float128 浮点类型、本地标签以及指定初始化器范围语法。

    • 对 GoogleTest 和 Clang-Tidy 集成的更新。

    • Inline Macro 重构。

    • Unreal Engine

      • 在包含大量蓝图的项目中优化内存使用。

      • UMETA UPARAM 反射宏提供代码补全和工具提示文档。

ReSharper 2024.3

  • 改进了对 C# 13 功能的支持: params 集合、部分属性、 System.Threading.Lock 类型、重载解析优先级、 field 关键字。

  • 新的 代码格式化 选项:围绕等号 = 运算符的换行,从 break 缩进 case case 语句与 break 放在同一行。

  • 更细化的 命名规则 async 和非 async 任务返回的方法及本地函数可以有不同的命名风格。

  • 待办注释 现在可以是多行的,允许后续行的缩进文本被视为同一待办项的一部分。

  • 工具提示和错误消息中的标识符已彩色化,以提高可读性。

  • 重新设计的 代码清理 引擎,支持并行预处理。

  • 集成反编译器改进:

    • IL 查看器 现在提供程序集清单的 IL 代码,包括:

      • 程序集和模块信息,例如名称、自定义属性等。

      • 引用的程序集和模块。

      • 转发的类型.

      • 文件和资源的列表。

      当插入符号位于 编辑器 中的程序集或模块属性上,或外部程序集的 <AssemblyName>.cs 文件中的某处时,也会显示此 IL 代码。

    • 支持主构造函数——当类声明主构造函数时,ReSharper 会正确显示构造函数及其参数,为您提供对象实例化的完整视图。

  • C++ 中的新功能:

    • 在大型解决方案中的性能改进:LLVM 解决方案的初始索引速度提高了最多 10%,Unreal Engine 的内存使用量降低了约 20%,Chromium 的内存使用量降低了约 30%。

    • 移动到文件夹 重构现在适用于 C++ 文件。

    • 支持新的 C++23 和 C23 功能,以及若干 GNU 扩展。

    • Unreal Engine 支持:

      • UE_LOG UE_LOGFMT 宏提供代码补全和实时模板。

      • 游戏标签的代码补全。

      • 增强了对 UDELEGATE 宏的支持。

    • 捆绑的 clang-tidy 二进制文件已更新为 Clang 19。

    • 您现在可以使用 // NOLINT(...) // clang-format off // clang-format on 注释来管理集成的 Clang 工具。

ReSharper 2024.2

  • 初步支持 C# 13。

  • AI 助手的多项改进,包括 AI 代码补全 异常解释 自定义全局提示

  • 能够将 用户界面语言 更改为中文、日语或韩语。

  • 闭括号的内嵌提示

  • 添加/移除 params 修饰符重构

  • 不同文化的预览 ,用于 ToString() 格式说明符。

  • 集成反编译器改进:

    • 反编译器:默认和参数 lambda 参数(C#12:Lambda 可选和参数数组参数)

    • 反编译器:lambda 上的属性

    • 能够反编译受保护的程序集并忽略 [SuppressIldasm] 属性。

    • 支持同时包含 SrcSrv 和 SourceLink 的 PDB。

    • 从关联程序集的目标框架或关联程序集的便携式 PDB 中获取外部源文件的预处理器指令(如 NET6_0_OR_GREATER )。

    • 程序集资源管理器 :程序集构建配置检测和展示。

    • 能够在 Web 浏览器中打开相应存储库的源代码,例如在 GitHub 上。

  • C++ 中的新功能:

    • C++23 支持:多维下标运算符、 #elifdef #elifndef C++23/C23 预处理器指令,以及 [[assume(<expr>)]] 属性。

    • Unreal Engine :支持结构特性,检查 IOnlineSubsystem::Get () 的用法以及缺少对基方法的调用。

    • 快速信息工具提示中的类型布局。

    • 重命名 重构的改进。

    • 支持 include-what-you-use 编译指令。

    • 捆绑的 Clang-Tidy 二进制文件已更新为 Clang 18。

ReSharper 2024.1

  • AI 助手的多项改进,包括 AI 代码补全

  • 改进了 重命名重构 的性能。

  • 新的 命名风格设置 用户界面。

  • InspectCode 的默认输出格式从 XML 更改为 SARIF。 XML 输出仍可通过 -f="xml" 参数使用。

  • Task<T> ValueTask<T> 处置分析 中的支持。

  • 能够反编译 .NET 程序集以支持 WebCIL 打包格式

  • 专用工具窗口用于 程序集差异

  • C++ 中的新功能:

    • 调用跟踪 现在支持传出调用链。

    • C++20 模块:改进了性能并支持内部模块分区。

    • Unreal Engine

      • 支持 Slate UI 框架。

      • 在完成 C++ 代码中资源名称时,提供资产路径的补全。

      • 现在支持 HLSL 着色器代码中的接口。

    • clang-format 集成的改进包括支持 GNU 内置样式以及 IndentAccessModifiers DisableFormat 格式样式选项。

    • 更改签名 提供了新功能,包括在指针、引用或值类型之间更改参数类型的能力。

    • Grazie 拼写检查 在文档注释中。

    • 用于配置文档注释样式的新设置( ReSharper | 选项 | 代码编辑 | C++ | 代码生成 )。

    • 新的 格式化选项 :“在 goto 标签后换行”、“缩进 goto 标签”、枚举值的排列、“对空括号格式不做更改”。

ReSharper 2023.3

ReSharper 2023.2

  • C# 12 预览支持:对非记录类和结构的主构造函数支持。

  • AI 助手

  • 预测调试器

  • 用于 LINQ 表达式中间结果 的交互式调试器装饰。

  • 新的代码检查及相应的快速修复,用于报告和修复:冗余的可空指令、返回由 'using' 语句捕获的变量、返回由 'using' 捕获对象生成的任务、丢弃与名为 _ 的变量冲突。

  • C# 中新的 内嵌提示 ,用于元组和解构模式的组件名称、丢弃类型名称、使用 #pragma 禁用或恢复的警告描述、由块末尾的局部函数创建的隐式 return continue

  • 改进了从 var 到可能的底层类型的 导航

  • 改进了对原始字符串的支持(新的代码检查、快速修复、上下文操作和输入辅助)。

  • 在与 Entity Framework 相关的上下文中,新增代码检查和导航操作。

  • 能够为类 生成单元测试存根 ,并 在测试和被测试代码之间导航

  • 能够 比较两个程序集

  • C++ 中的新功能:

    • 安全删除 重构。

    • C++23 支持: if consteval ,静态 operator() operator[] ,以及 C++23 标准库模块。

    • C++20 支持: [[no_unique_address]] 属性,C++20 缺陷报告的实现 char8_t ,以及优化的模块支持,包括将 .cppm 文件识别为模块接口和对项目文件夹外模块的实验性支持。

    • Unreal Engine :改进了对蓝图的索引性能,对具有标准赋值语义的包装类型的智能补全,以及对 UE_INLINE_GENERATED_CPP_BY_NAME 宏的支持。

    • 新的检查:冗余的解引用和取地址,冗余的模板参数,ISO C++ 禁止没有基础类型的前向 enum 声明。

    • 当类型受概念或特性限制时,改进了代码补全。

    • 递归调用的边距标记。

    • 更一致且更直接的 转到声明

    • 更新了捆绑的 clang-tidy 和 clang-format 二进制文件。

    • 上下文操作可以将模板参数约束移动到 requires 子句或反之。

    • 改进了与 GCC 和 Clang 编译器以及 libc++/libstdc++ 标准库的兼容性。

ReSharper 2023.1

  • 新的 代码检查 快速修复 ,例如,移除空区域,用 span is "stringLiteral" 替换 span.SequenceEquals("stringLiteral") ,提取通用属性模式,减少集合查找次数。

  • 空检查模式的语法风格 not null 对比 { } )。

  • 针对 单元测试数据属性 的参数名称提示。

  • 能够隐藏特定转换模式的 类型转换提示

  • 单元测试资源管理器 单元测试会话 中的文本过滤器现在在执行测试时会被考虑。

  • 您可以使用 重命名重构 重命名文件。 如果文件包含与其同名的类型,则可以相应地重命名该类型。

  • 暂停 CSS 的生产力功能 的主动开发,这些功能默认被禁用。 要启用它们,请使用 ReSharper 选项 环境 | 产品与功能 页上的相应复选框 Alt+R, O

  • C++ 中的新功能:

    • 调用跟踪 用于传入调用。

    • 工具提示和 快速文档 弹出窗口中的宏替换预览。

    • C++20 模块的更新:

      • 查找用法 现在允许您找到导入给定模块的所有位置。

      • 重命名 重构帮助您安全地重命名模块和模块分区,更新代码中的所有相关声明和导入。

      • 代码格式化器和 重新排列代码 现在可以处理导出块和导出实体。

      • 代码补全建议与模块相关的关键字和已知模块的名称。

    • 支持 C++23 功能:

      • 推导 this P0847 )。

      • auto(x) auto{x} P0849 )。

      • 在许多情况下,lambda 中的空括号 () 现在是可选的( P1102 )。

      • 别名声明现在允许在初始化语句中使用( P2360 )。

      • 复合语句末尾现在允许标签( P2324 )。

    • 支持 __VA_OPT__

    • Unreal Engine

      • 用于添加简单或复杂测试的 文件模板

      • 着色器源目录的映射.

      • UINTERFACE 实时模板

      • 一个新的补全项,用于在需要委托、 TFunction TFunctionRef 参数的地方生成 lambda 表达式。

    • 新的检查:模板参数从未使用, typedef /类型别名从未使用,冗余的基类初始化器,类型为 HRESULT / NTSTATUS 的函数结果应被使用,通过 const 引用传递值参数,类模板参数推导失败。

    • 改进了编译时评估引擎,包括基于范围的 for 循环的评估以及对联合的更好支持。

    • 用于 重构 的上下文操作。

    • 一个快速修复,用于从未解析的标识符创建参数。

    • 如果您需要提取单行函数,现在不再需要选择整行,因为 提取方法 重构现在会在没有活动选择的情况下提取当前行。

    • 更改签名 现在可以在插入符号位于函数签名的任何位置时调用,而不仅仅是在函数名称上。

    • 一个新的 后缀模板 允许您快速使用 const 引用 std::as_const AsConst

    • /* 开头的注释默认不再自动关闭为 */ 。 您可以通过新的 在 /* 后插入 */ 输入辅助选项启用关闭注释的自动插入。

    • 默认情况下,文件路径在 排序 #include 指令时会放在文件夹之前。

ReSharper 2022.3

  • 对运行在 ARM64 上的 Microsoft Visual Studio 的早期支持。

  • 检测 NuGet 包中的漏洞依赖项

  • C# 11 支持:C# 11 文件本地类型、静态虚拟成员、 ref 字段、 scoped 关键字 C# 11 UTF-8 字面量;建议使用无符号右移 >>> 运算符,建议使用模式匹配替代 Span.SequenceEqual("literal") ,C# 11 原始字符串中的 语言注入 等。

  • 支持 .NET 7 的 [StringSyntaxAttribute] 及其用于 语言注入 代码补全 的不同语法。

  • 以 GraphML 格式导入 类型依赖 项目依赖 图。

  • 自动验证 已安装的扩展

  • 反编译器改进:泛型属性、接口中的 static abstract static virtual 成员、用户定义的检查运算符、无符号右移运算符。

  • IL 查看器中的低级/高级 C# 代码

  • C++ 中的新功能:

    • 对 C++20 模块的实验性支持。

    • Unreal Engine

      • 使用 Core Redirects 重命名 Unreal Engine 实体

      • 内嵌提示 用于 BlueprintCallable 函数。

      • ReSharper 不再在自动导入建议中提供系统头文件和着色器文件中的不需要的实体。

    • 能够使用 clang-format 格式化引擎 格式化和重新格式化代码。

    • C++ 支持:

      • C++20 版本的 [[nodiscard]] 属性: [[nodiscard("should have a reason")]]

      • GNU 风格的函数声明调用约定指定。

      • __atomic* __sync* GCC 内置函数。

      • #pragma pack 指令。

      • 改进的编译时评估现在可以正确处理各种形式的对象初始化,包括任何类型的构造函数评估和指定初始化。

      • emplace 样式和 make 样式调用中,参数信息和内嵌提示现在可用于任何隐含构造函数调用的函数。

    • 改进了 clang-tidy 集成

    • 参数信息和其他工具提示中的函数来源。

    • 用于提高条件可读性的上下文操作。

ReSharper 2022.2

  • C# 11 预览支持:检查运算符、列表模式、必需成员、原始字符串、检查运算符、无符号右移、跨度模式匹配、自动默认结构。

  • 自动 清理临时文件

  • 结构化搜索和替换 模式和基于 [CodeTemplate] 属性的替换模板可以应用于所需范围(文件、项目或解决方案)。

  • 改进了 INotifyPropertyChanged 支持

  • 一些解决方案范围的重构可从 操作列表 Alt+Enter )中使用: 提取方法 用于选定语句; 更改签名 转换参数 将属性转换为方法 用于成员签名; 将静态方法转换为扩展方法 用于签名和第一个参数。

  • Assembly Explorer 窗口 中为 ReadyToRun 和 NGen 程序集提供专用展示功能。

  • 暂停 JavaScript、TypeScript 和 JSON 的生产力功能的主动开发,这些功能默认被禁用。 要启用它们,请使用 ReSharper 选项 环境 | 产品与功能 页上的相应复选框 Alt+R, O

  • 虚拟格式化器

  • C++ 中的新功能:

    • Unreal Engine

      • Unreal Engine 索引性能提升。

      • 蓝图支持 :新的内嵌提示和检查。

      • 支持 Spec 测试。

      • 代码补全列表中的小部件元数据说明符。

    • 改进的错误渲染:工具提示中的语法高亮和更精确的错误高亮范围。

    • 更新了 Boost.Test 支持并修复了数据驱动测试用例的问题。

    • 更好地处理 emplace make 样式的函数调用,包括 Unreal Engine Emplace 调用。

    • 通过在 中按下 /**/ 注释中的键创建文档存根。

    • 支持 公共包含目录 所有头文件都是公共的 项目属性。

    • 捆绑的 Clang-Tidy 二进制文件已更新为 Clang 14,添加了新检查。

ReSharper 2022.1

  • C# 11 支持:泛型属性。

  • 提取全局 using / 内联全局 using 重构。

  • 支持将预处理器指令与移动的类型一起移动。 将类型移动到另一个文件的重构

  • 基于约定的路由支持 ASP.NET Core。

  • 检测和自动配置 语法风格

  • [MemberNotNull] [MemberNotNullWhen] 注解现在支持不使用可空引用类型的项目。

  • 改进了对 可空引用类型 的支持。

  • 平台程序集的 XML 文档注释,包括名称与 XML 文档文件名称不同的程序集(例如 System.Private.CoreLib )。

  • 反编译/元数据视图文件头中的 XML 文档。

  • Assembly Explorer 窗口 中的转发类型。

  • 改进了 PDB 导航(来自符号文件的源),适用于没有序列点的类型,例如接口和枚举。

  • 能够 探索元数据 ,包括程序集和便携式 PDB。

  • InspectCode 命令行工具 可以生成静态分析结果交换格式(SARIF)的检查结果。

  • C++ 中的新功能:

    • Unreal Engine

      • 快速文档 现在包含指向 Unreal Engine 文档 的链接。

      • 重命名 重构现在会更新 U I 接口类。

      • 改进的委托函数代码生成会从签名中替换参数名称。

    • 单元测试

    • ReSharper C++ 现在更好地处理隐式构造函数调用,从而改进了以下情况的搜索和导航功能:

      • 通过标准和 Unreal 特定函数创建智能指针,

      • emplace 样式的容器方法,

      • static_cast 和 C 风格的强制转换表达式。

    • 改进了使用 C++20 指定初始化器为聚合初始化生成多行样板代码。

    • 更新了 C++20 requires 表达式的格式化以及新的 文件末尾的换行符 选项。

ReSharper 2021.3

  • 支持 Visual Studio 2022。

  • C# 10 支持,包括 文件范围命名空间 CallerArgumentExpression 属性和全局 using 指令的专用功能。

  • 改进了对可空引用类型的支持。

  • 新的 检查 快速修复 ,帮助处理带闭包的静态局部/匿名函数、简化字符串插值、将对象初始化器转换为带参数的构造函数、查找字段上的不一致锁定等。

  • 改进了 范围内修复 的性能,因为它现在使用 解决方案范围分析 的结果来跳过无关代码。

  • 转到符号的类型 在调试模式下导航到接口实现。

  • 整数算术分析 支持所有 C# 整数数值类型 —— int uint byte sbyte short ushort long ulong

  • [CodeTemplate] 属性,帮助 报告和更新已弃用的 API

  • [RequireStaticDelegate] 属性,鼓励 无分配代码模式

  • 查找用法 Alt+F7 适用于用户定义的隐式转换运算符。

  • 重新设计的用户界面、自定义选项以及用于 复制代码引用 的新快捷键 Control+Alt+Shift+C

  • C# 格式化器 提供更多可配置规则。

  • 通过 .globalconfig 文件 支持代码风格和检查配置。

  • 改进了 继承边距标记 ,包括在 ReSharper 和 Visual Studio 标记之间切换的选项。

  • 通过 [LanguageInjection] 属性标记参数、字段和属性中的 注入语言

  • 在插入符号下突出显示 逻辑和条件运算符

  • 反编译器改进:支持异步可释放、记录和记录结构。

  • C++ 中的新功能:

    • C++20:

      • 代码补全可快速生成使用指定初始化器的聚合初始化样板代码。

      • 现代化检查以采用新的标准库功能:用于从任何标准容器中删除元素的函数( std::erase std::erase_if )、检查关联容器中是否存在元素( std::contains )以及创建具有默认初始化的智能指针( std::make_shared_for_overwrite std::make_unique_for_overwrite )。

    • Unreal Engine

    • 参数信息 工具提示显示常量表达式的评估结果。

    • 新的检查和快速修复:lambda 声明符中的冗余参数列表,冗余的详细类型说明符,for 循环可以替换为 while 循环,包含单个类特化的命名空间定义,可能缺少关键字 throw [[nodiscard]] 不能应用于没有返回值的函数,抽象最终类被标记为 final sealed ,非重写虚函数被标记为 final sealed

    • 文件结构 将具有相同限定符的符号分组在限定名称中。

    • 更改签名 允许您控制 [[nodiscard]] 属性。

    • C 支持:C11 _Generic 表达式, typeof GNU 扩展。

    • 转到声明 可以从 goto 语句导航到相应的标签,并在非活动的预处理器块中搜索声明。

    • 在输入 /// 时生成 Doxygen 注释。

    • 捆绑的 Clang-Tidy 二进制文件已更新为 Clang 13,添加了新检查。

ReSharper 2021.2

  • 可空引用类型支持:

    • 新的检查、快速修复和上下文操作,例如冗余的可空警告抑制。

    • 改进了对 [NotNullIfNotNull("param")] 属性中参数名称的支持。

    • 改进了对泛型的支持。

    • 一个新的重构,用于更改可空性。

    • 一个新的操作,用于从文件/项目/解决方案中的抑制表达式中查找可空警告抑制。

  • 源生成器支持

  • 新的检查、快速修复和上下文操作。 例如,建议将 new EventArgs() 替换为 EventArgs.Empty

  • ConfigureAwait 分析

  • .editorconfig 中支持 generated_code 属性以 忽略生成的代码

  • 转到声明 在调试模式下对接口成员的使用进行调用时,可以 导航到其实际实现

  • 转到派生符号 显示派生类中隐藏您正在导航的成员的成员。

  • InspectCode 命令行工具 会在开始分析之前自动恢复 NuGet 包并构建解决方案。

  • 一个选项,用于关闭 Razor 中 CPU 密集型的 编码辅助功能

  • 命名样式 的改进:支持记录、扩展方法和捕获变量的自定义命名规则。

  • 加速对具有大量局部函数和闭包的成员的代码分析。

  • 内置反编译器的改进:

    • 单文件应用支持(使用“生成单文件”选项发布的可执行文件,包括自包含和框架依赖)适用于 .NET Core 3.0、.NET 5 和 .NET 6 预览(捆绑头版本 1.0、2.0 和 6.0)。

    • 特定于平台的可执行文件(应用主机;“生成单文件”为 false)可以添加到 程序集资源管理器 中。 相应的托管程序集将显示在应用主机节点内。

    • 反编译器支持异步流( async 迭代器, await foreach )。

  • C++ 中的新功能:

    • 内联函数 重构。

    • 类型转换提示

    • 新的不可变性检查:参数可以被设为对 const 的引用,参数可以被设为指向 const 的指针,变量可以被设为 constexpr

    • 新的现代化检查:可以使用结构化绑定代替 tie(..) ,可以使用模板别名或变量模板简化类型特性,可以使用 std::size ,可以使用零初始化代替 memset

    • Unreal Engine

      • 支持 Unreal Engine 5。

      • 代码补全现在建议可用模块和插件的列表。

      • 针对缺少模块和插件依赖项的检查和快速修复。

      • ReSharper 在生成重写函数时现在会插入 Super 调用。

      • Unreal Engine 代码库的索引速度提高了 10%。

    • 上下文操作可以将任何字符串转换为 C++11 原始字符串字面量,反之亦然。

    • 退格取消缩进

    • 快速文档 现在包含指向 cppreference.com 的链接。

    • 用于配置函数定义代码生成的新设置。

    • 捆绑的 Clang-Tidy 二进制文件已更新为 Clang 12,添加了新检查。

ReSharper 2021.1

  • 记录类型被大多数功能支持,例如 提取接口重构 提取超类重构 查找用法 ,以及多个检查、快速修复和上下文操作。

  • 新的检查、快速修复和上下文操作。 例如,建议将 !() 转换为 is not

  • 命名样式 的改进:

    • 对用户规则进行排序,使更具体的规则具有更高的优先级。

    • 从 EditorConfig 中读取和写入用户规则。

  • 新的重构功能,用于重命名元组组件。

  • 针对 ASP.NET Core 路由模板的结构化导航、重构、检查和快速修复。

  • 元组转换的类型转换提示。

  • “导航到 Windows 资源管理器”操作。

  • 新的格式化设置:

    • 目标类型 new() 括号前后和内部的空格。

    • 赋值运算符前的换行。

    • 标签语句中的缩进。

  • 单元测试的改进。

  • 文件布局模式 中,新的约束 Body 允许区分块体和表达式体成员。

  • 复制 FQN 还允许复制 GitHub 链接。

  • C++ 中的新功能:

    • C++ 支持:

      • 非类型模板参数中的类类型。

      • C++20 类模板参数推导规则。

      • noexcept 作为函数类型的一部分。

      • 新的协程代码补全项可用于基本代码补全和后缀补全模板: co_await co_yield co_return

    • Unreal Engine

      • 初步支持 Unreal Engine 5。

      • 支持 RIGVM_METHOD 反射宏。

      • Cast 后缀模板

    • 一组 语法风格 设置,附带检查、快速修复和上下文操作。

    • 代码清理 更新:新的代码清理任务,清理选择的上下文操作。

    • 新的检查:模板参数可以被推导,变量可以移动到内部作用域,冗余的强制转换表达式。

    • 针对转换错误的新快速修复。

    • 针对 聚合初始化提示 的停止列表和单独的选项页面。

ReSharper 2020.3

  • C# 9 支持:

    • 顶级语句。

    • 本地整数。

    • 目标类型条件表达式。

    • 静态 lambda。

    • DynamicallyAccessedMembersAttribute 支持。

    • 仅初始化的设置器。

    • with 表达式和记录。

    • 局部函数上的属性。

    • 支持 lambda 丢弃参数。

    • 源生成器。

    • 目标类型 new

    • 协变返回。

    • 扩展的部分方法

    • 扩展 GetEnumerator

    • 初步支持函数指针类型

  • 转到文本 中进行模糊搜索。

  • 嵌入提示 的改进:推送到提示、类型转换提示、针对 XAML 提示的更好启发式和上下文菜单、更改字体大小的能力、重新设计的设置页面。

  • 结构化移除

  • 能够通过 跳出闭括号和引号

  • 新的 C# 语法风格: 'new()' 对比 'new T()' default' 对比 'default(T)'

  • 支持 Avalonia 框架。

  • 动态程序分析 (DPA)

  • 单元测试:直接从编辑器中使用选定的目标框架运行测试。

  • 标识符工具提示中的语法着色。

  • CleanupCode 命令行工具 控制台工具现在可以在指定的文件或文件夹集上运行,而无需指向解决方案文件。

  • 反编译器改进:静态局部函数、顶级语句、局部函数上的属性、结构上的只读实例成员。

  • IL 查看器窗口 :同步和上下文高亮的改进。

  • Assembly Explorer 窗口 :顶级入口点项(展示、双击/上下文菜单导航、属性)。

  • 转到文件成员 在库代码中保留外部源(反编译代码/符号文件代码/元数据视图)的 展示模式

  • TypeScript 支持:空合并和可选链式调用

  • C++ 中的新功能:

    • Unreal Engine

    • C++20

      • 比较规则

      • 范围

      • 支持 Visual Studio 16.8 中引入的 C++20 协程的标准模式

    • 新的检查:可以使用操作范围的算法,可以使用 std::views::keys/values ,可以使用接受迭代器和计数的算法。

    • 导入补全

      • 补全列表现在包括不完整类的合适成员。

      • 新增选项,可为相应的类添加详细类型说明符。

    • 上下文操作以反转三元表达式

    • 转到声明 可用于在匹配的预处理器指令之间跳转,并在 override 关键字上导航到基函数

    • 查看定义 视图:查看实现( Ctrl+Alt +中键单击或 Control+Alt+Q )和查看基符号( Shift+Alt+Q )适用于 C++。

    • 文件结构 现在使用 C++17 嵌套命名空间的语法。

    • C++/CLI 转到派生符号 现在适用于 C++/CLI 属性中的 get / set 函数和 C++/CLI 事件中的 add / remove 函数。

    • 捆绑的 Clang-Tidy 二进制文件已更新为 Clang 11,添加了新检查和编译器诊断。

    • 支持 /external:* 编译器开关

    • 对 Catch2 支持的更新

    • 更快的 查找用法 重命名 ,适用于私有类成员

ReSharper 2020.2

  • ReSharper C++ 包含在 ReSharper 订阅中

  • 能够在保存时 自动重新格式化代码并运行代码清理 ,以及 适用于最近修改或打开的文件

  • XAML 中的内嵌提示

  • 您可以通过按 Alt+F7 查找符号的用法 )、 Control+Alt+F7 转到符号的用法 )或 Shift+Alt+F7 查找相关实体的用法 )快速定位 解决方案和引用的程序集 中任何符号的用法,结果列表包括 全局搜索/转到类型 转到符号 转到文件成员

  • 查看定义 视图中的新功能:查看实现( Ctrl+Alt +中键单击或 Control+Alt+Q )、查看基符号( Shift+Alt+Q )、查看用法( +中键单击)。

  • 类型依赖 项目依赖 图中的新导出格式: GraphML (用于外部分析)和 XPS (用于打印大型图表)。

  • ReSharper 命令行工具可以作为 .NET Core 全局工具 安装和使用。

  • EditorConfig dotnet_diagnostic 规则 的支持。

  • [RegexPatternAttribute] 之前仅为标记的参数启用了 正则表达式辅助 ,现在也适用于字段和属性。

  • 改进的 Blazor 支持

  • 单元测试的改进:

    • 新的统一测试运行器,支持 .NET 和 .NETCore

    • 支持 MSFakes,适用于 NUnit、XUnit 和 MSTest 的 .NET 和 .NETCore 测试(仅限 Windows)

    • 支持 TypeMock,适用于 NUnit、XUnit 和 MSTest v2

    • 能够从编辑器中的测试 导航到其所在的测试会话

  • 反编译器:支持表达式体成员、throw 表达式、默认参数和命名参数。

  • 反编译器: NullablePublicOnlyAttribute 支持。

  • C++ 中的新功能:

    • Unreal Engine

      • 引入了对 Unreal Engine 项目模型的支持,使 ReSharper C++ 能更好地理解不同的解决方案配置以及插件和模块引用。

      • 引擎源代码中的符号现在被视为库符号,默认情况下在搜索结果中隐藏。

      • 根据 Unreal Engine 编码标准,对检查严重性、代码生成操作、文档模板和 include 指令的自动导入进行了多项更新。

      • 如果项目文件过期,提醒在 Unreal 编辑器中刷新 Visual Studio 项目。

      • 捆绑的字典补充了常见游戏缩写和首字母缩略词列表。

    • C++/CLI

    • 转到声明 适用于未解析的标识符。

    • 突出显示插入符号下元素的用法。

    • 突出显示预处理器指令中的拼写错误。

    • 文件结构 :预处理器指令现在默认隐藏。

    • 新的检查:可以使用结构化绑定,不能在本机类型上使用 gcnew ,不能在托管类型上使用 new final 说明符不能用于托管类,重写函数没有 virtual 说明符,可能需要重新生成项目文件。

    • Clang-tidy 快速修复的简要预览。

    • 改进了对类类型值在 constexpr 函数评估中的支持。

    • 代码补全 :当需要 std::function 参数时,新的补全项可以插入自动生成的 lambda 参数。 如果类未包含在当前文件中,导入补全将建议添加前向声明的新选项。

    • 新的设置:对齐的 ?: 运算符缩进,在多行 // 注释中按 Enter 插入 //,仅将带引号的 include 视为潜在的主头文件。

    • 新的 文件模板 :源文件和头文件。

ReSharper/ReSharper C++ 2020.1

  • 可空引用类型支持:

    • 与可空引用类型相关的编译警告。

    • 新的检查和快速修复,用于检测与可空引用类型相关的冗余类型参数约束。

    • 针对可空性警告的多种快速修复。

    • 更改签名重构 已更新以支持更改可空性。

    • 快速文档 已更新以显示可空性注解。

  • 新的检查和快速修复,用于检测并使用异步方法重载(如果可用)而不是同步方法。

  • 可配置的代码风格,用于 尾随逗号 ,适用于具有多个项和类似结构(对象、数组和集合初始化器,以及枚举和 switch 表达式)的声明。

  • 转到声明 与中键配合使用。

  • 您可以通过在 转到文件 列表中选定的结果上按 Ctrl+Enter 来定位解决方案资源管理器中的文件。

  • 单元测试会话的导出和导入

  • 本地化管理器 的改进:能够编辑、导出和导入注释,以及若干用户体验和性能修复。

  • 反编译器:改进了元组组件名称的支持。

  • 反编译器:可空引用类型(在声明中,而非方法体中)。

  • 反编译器:默认接口成员。

  • 反编译器:针对自动实现属性和类似字段事件的字段定向属性。

  • IL 查看器:支持接口实现和泛型参数约束中的自定义属性(例如,编译器可以将 NullableAttribute TupleElementNamesAttribute 应用于这些实体)。

  • ReSharper C++ 2020.1 的新功能:

    • C++20:

      • 约束类型占位符和简化函数模板

      • 使用枚举声明和 引入使用枚举 重构

      • 在命名和重新定义检查中支持概念

    • 新的检查:未使用的 lambda 捕获,使用函数式风格的强制转换代替 C++ 强制转换, reinterpret_cast 代替 static_cast 进行 void 类型转换,在 lambda 中使用显式模板参数

    • 新的设置“区分大小写排序”和“按目录分组头文件”用于 头文件排序

    • 代码补全改进:补全属性名称;在 goto 语句中补全时显示标签名称; 后缀补全 用于 std::forward ;从重写函数补全对基函数的调用时会插入转发调用,将所有函数参数传递给基函数;宏定义中的补全; 完成语句

    • 输入辅助在键入相应键后用括号/方括号/引号包围选定代码

    • “添加 [[maybe_unused]] ”快速修复

    • 上下文操作将 UNREFERENCED_PARAMETER 替换为 [[maybe_unused]] 属性

    • 转到...操作 中的过滤器,用于概念和命名空间

    • 生成 中的选项,用于向生成的 getter 和构造函数添加 [[nodiscard]] 属性

    • 类型名称提示 在依赖代码中默认启用

    • “生成模拟函数”支持 GTest 1.10 的 MOCK_METHOD

    • 参数名称提示 在依赖函数调用中

    • 关于未满足约束的更好的错误消息

    • 单元测试设置使用文件而不是命名管道(当命名管道被防病毒软件阻止时很有用)

    • 更改签名 接受无法解析的类型

    • 针对 重新排列代码 操作的重大改进

    • Clang-tidy 已更新为 LLVM 10,新增检查和诊断

    • 转到声明 适用于注释中的符号名称

    • 文件结构 的改进:图标现在有类成员可访问性和虚拟/静态/纯说明符的指示器,类成员的新继承图标(当函数重写/实现/隐藏基函数时显示)

    • 转换为 Scoped Enum 重构

    • 用于 文档 操作的专用快捷键 Control+/

    • Unreal Engine 4 支持 的改进:

      • 重命名 UE4 头文件时也会重命名相应的 *.generated.h #include

      • 重命名 UE4 类型时也会重命名相应的头文件和源文件(带有 A F E 前缀)

      • SpatialOS 框架支持

      • 调整 UE4 解决方案的默认设置以更好地匹配其编码指南(避免建议 auto 关键字)

      • 更好地支持 UE4 命名约定:控制台变量和日志类别的命名规则

      • 转到...操作 显示包含 UE4 枚举的命名空间

ReSharper/ReSharper C++ 2019.3

  • 改进的 C# 8 支持,包括: notnull 约束、目标类型 switch 表达式、对 default interface 方法的早期支持、新提示“局部函数可以是静态的”,以及新快速修复“添加缺失的分支”。

  • 本地化管理器

  • 类型名称提示 用于 lambda 的参数、 var (包括模式匹配和元组解构)、LINQ 语句中的范围变量以及方法调用链中行尾。 针对函数中缺少返回值和 switch 语句中缺少 break 的提示

  • Xamarin 支持修复:支持 x:DataType Class 属性。

  • 在 switch 表达式中生成类型模式

  • 选项使用 System.HashCode 实现 GetHashCode ,并在生成 相等成员 相等比较器 时考虑可空性。

  • 参数信息 支持元组。

  • EditorConfig 读取和导出 C# 命名设置

  • 查找依赖代码 现在适用于 NuGet 引用,并可在整个解决方案中运行。 此外,查找结果中的依赖代码有新的过滤器。

  • 导航到:使用 API

  • 元组、解构和丢弃的反编译。

  • 使用 符号包 .snupkg )导航到 NuGet 包的外部源

  • 新的 代码检查 快速修复 。 其中包括针对 NUnit 测试的内容。 “类型或成员从未使用”被拆分为两个单独的检查——针对类型和针对成员。

  • 单元测试资源管理器窗口 单元测试会话窗口 中的新的分组和过滤选项。

  • 语法高亮 中不同类型标识符的更多颜色。

  • 针对 使用 'var' 与显式类型 的代码风格的更详细配置。

  • ReSharper 命令行工具 可以在 Linux 和 macOS 上运行。

  • ReSharper C++ 2019.3 的新功能:

    • C++20:初步支持 C++20 概念, ADL 和不可见的函数模板 从括号括起的值列表初始化聚合

    • Clang-tidy 集成 的改进:

      • 捆绑的 clang-tidy 二进制文件已更新至版本 9,新增了许多检查。 此外,它不再阻止对源文件的修改。

      • 现在可以从检查菜单中禁用 Clang 警告。

      • 新增设置以使用特定的 clang-tidy 配置文件(而不是指定配置为字符串的设置)。

    • 格式化器改进:将格式化选项导出到 .clang-format 文件,选项包括在抽象声明中 ptr ref 之前的空格。

    • 得益于代码高亮引擎的一些改进,现在重新高亮的速度更快(在函数体更改后,仅重新分析函数体本身)。

    • 新的快速修复,帮助将变量添加到 lambda 捕获列表。

    • Unreal Engine 4 支持 的改进:

      • UE 智能指针( TSharedPtr TSharedRef TWeakPtr TUniquePtr )获得支持,与 std::shared_ptr / unique_ptr 类似(例如,它们受 参数信息 代码分析 后缀补全 支持)。

      • new 后缀模板 用于 UCLASS 扩展为适当的工厂函数调用。

      • 新的 USTRUCT / UCLASS / UENUM / UENUMCLASS 实时模板现已可用。

      • 在 Unreal Engine 4 编辑器中执行“刷新 Visual Studio 项目”操作后,不再出现 Visual Studio 卡顿。

    • 若干 实时模板 已重命名以匹配相应的关键字(例如, cls 重命名为 class str 重命名为 struct )。

    • 转到文件成员 的若干更新:对话框现在即时显示,而无需等待文件完全分析;如果文件同时包含函数的声明和定义,则对话框中仅显示一次该函数。

    • 现在可以从括号封闭的初始化列表的起始括号导航到聚合类。

    • 新增设置以在 %PATH% 中找到要使用的 clang-tidy 可执行文件。

    • 内嵌提示 的改进:自动变量、结构化绑定、函数和 lambda 返回类型的类型名称提示。 在依赖代码中,类型名称提示默认被禁用。

    • #include 指令进行排序( 快速修复 上下文操作 )。

ReSharper/ReSharper C++ 2019.2

  • 改进了对 C# 8 的支持,包括:索引和范围的最新更改,例如可索引和可范围的类型,以及非托管泛型结构。

  • 转到文件成员 现在还会在当前文档中搜索文本匹配项。

  • 能够在 转到文本 的搜索结果中过滤掉注释中的出现项。

  • 能够从 导入命名空间建议 导入符号补全 中排除符号。

  • 解决方案模型直接从 项目/解决方案文件 中读取。

  • 用法搜索 通过使用 解决方案范围分析 的索引运行得更快。

  • IL 查看器窗口 中的带关键字描述的工具提示。

  • Assembly Explorer 窗口 中的 Win32 资源子树。

  • ReSharper C++ 2019.2 的新功能:

    • 改进了 编辑器提示 。 新增了两种提示类型:预处理器指令后的提示和通过非 const 引用传递的函数参数的提示。 聚合初始化表达式中的提示现在显示已初始化的基类的名称。

    • 支持更多 C++20 功能:条件 explicit char8_t 、lambda 初始化捕获中的包扩展、默认可构造和可分配的无状态 lambda、聚合的 C++20 规则、 consteval constinit 说明符,以及 C++20 对结构化绑定声明的改进。

    • 代码补全 中的摘要工具提示现在具有语法着色,并显示所选项的文档。

    • 改进了对 Unreal Engine 4 的支持:

      • 重命名 更改签名 重构正确处理 UE4 RPC 函数。

      • Unreal Engine 特定代码分析检查,特别针对缺失或设置不正确的 UE4 反射宏。

      • 内置文档现已可用于 快速文档 弹出窗口中的反射说明符。

ReSharper/ReSharper C++ 2019.1

  • 支持 Visual Studio 2019。

  • 支持 C# 8,包括:范围和从末尾的索引表达式、空合并赋值、switch 表达式、switch 语句中的元组表达式、静态局部函数、对使用 var 声明的初步支持、可空引用类型(仅解析)、异步流、异步可释放。

  • 转到文本 现在会在解决方案中的所有文本文件中搜索。

  • 优化引用 现在适用于 SDK 项目。

  • 提取方法重构 支持在 UI 中重命名引入的参数。

  • 嵌入提示 的改进:属性用法提示、针对 StringFormatMethod 调用的特殊提示(默认禁用)、更灵活的配置、列选择时自动隐藏、用于显示/隐藏提示的键盘快捷键 Control+Alt+Shift+5

  • 针对 代码注解 可空性分析 的新功能:当插入符号位于泛型集合类型的参数中时,输入辅助会插入 ItemNotNull / ItemCanBeNull 属性, Lazy<T> Task<T> ;输入辅助支持 C# 8 可空引用类型,允许插入或移除可空标记 ? ;方法声明上的代码注解提示。

  • 更快的导航和搜索:“即时”类型搜索、“随处搜索”和“转到类型”更快。

  • 格式设置和代码清理改进:默认启用 格式检查 以检测子语句缩进,格式设置检测现在在后台运行, 导出设置到 EditorConfig ,新增选项可在 重新排列命名空间导入 时关闭将 System.* Windows.* 命名空间置于首位的设置,现在与 Visual Studio 和 StyleCop 兼容

  • 输入辅助 支持 上的取消缩进,将插入符号返回到当前缩进大小的倍数或代码结构中预期的缩进位置。

  • ReSharper C++ 2019.2 的新功能:

    • 性能改进:更快的索引速度、更小的内存占用、索引和代码分析期间的内存流量减少、大型解决方案中从缓存打开解决方案的速度更快。

    • 新的语言功能:C++20 泛型 lambda 的熟悉模板语法,C++17 十六进制浮点字面量,替代运算符表示法,对 C++20 合约的基本支持,以及三向比较运算符。

    • 配置 命名规则 时可用的新实体类型。

    • Unreal Engine 4 支持:

      • 使用默认设置的初始索引速度比 2018.3 快 6 倍,索引后使用的托管内存减少 2 倍,活动对象减少 3 倍。

      • 对 RPC 函数的感知:在它们之间导航,生成实现和输入补全。

      • UE4 选项页面提供设置,允许关闭引擎代码/第三方代码/插件的索引。

      • 初步支持由 Unreal Engine 编码标准定义的命名约定。

      • 默认情况下, Clang-Tidy 集成 在 Unreal Engine 4 解决方案中被禁用。

    • 单元测试的新功能:支持 doctest 单元测试框架 ,支持 Catch 2.7( TEMPLATE_PRODUCT_TEST_CASE 测试声明),支持 Google Test 中的 GTEST_SKIP() ,用户提供的环境字符串中扩展了用 % 包裹的环境变量名称。

    • 格式化设置 的改进:支持 C 中的 K&R 风格声明,提供围绕引用和指针的空格的单独格式化选项,宏调用的格式化类似于函数调用。

    • 外部文件中标识符的高亮显示

    • 导航和搜索的改进:链式 “转到”搜索 现在快了几倍,支持 包含基类成员 选项在 转到文件成员 中,“转到文件成员”、基类和派生类搜索现在在索引期间也能工作。

    • 文档注释的更多功能:在 XML 文档注释中重命名参数名称,输入辅助会在新行自动插入 ///

    • Clang-Tidy 集成 的改进:单独的 clang-tidy 选项页面( 代码编辑 | C++ | Clang-Tidy ),设置以利用用户提供的 clang-tidy 二进制文件。

ReSharper/ReSharper C++ 2018.3

  • C# 7 的新功能: 代码检查 快速修复 ,以及针对元组、解构等的 上下文操作

  • 支持 VB.NET 15.3 和 15.5 功能:命名元组推断、前导十六进制/二进制/八进制分隔符、非尾随命名参数。

  • 嵌入提示

  • 从现有代码中使用 C# 命名规则

  • 从现有代码中学习格式化规则

  • 引入参数重构 现在也适用于局部函数。

  • 外部注解 可以存储在 VCS 下,在解决方案或项目文件旁边的 ExternalAnnotations 文件夹中。

  • 能够通过 转到操作 Control+Shift+A 打开选项页面。

  • 配置 转到声明的使用感知行为 的选项。

  • 集成反编译器的改进:局部函数反编译;模式匹配反编译:const 模式、类型模式、case 子句中的类型模式(支持谓词和丢弃)。

  • 本地化协助 在 ASP.NET Core 应用程序中的支持。

  • 针对 NUnit 和 xUnit.net 测试的新 代码检查 快速修复 上下文操作

  • 针对 InspectCode 命令行工具 命令行工具的多线程模式。

  • TypeScript 3.0 语法支持:未知类型(仅解析)、元组类型中的可选元素、元组类型中的剩余元素、带元组类型的剩余参数、带元组类型的扩展表达式(无解析)、泛型剩余参数。

  • ReSharper C++ 2018.3 的新功能:

    • C++ 代码的格式化设置自动检测

    • 预定义的 命名风格 方案(STL、Google、LLVM、CamelCase、Microsoft)。

    • 性能改进:改进了索引期间的内存流量,多线程缓存加载。

    • 导航改进: 转到声明 在非依赖 decltype 说明符和 lambda 上更精确,甚至可以在初始索引期间使用它。

    • 重构改进: 更改签名重构 提供选项以使函数 constexpr / const / noexcept 并更改 ref 限定符。

    • 代码分析改进:模板代码中的 错误诊断 显著改进,提供有关失败的 enable_if 条件、 decltype 中的格式错误表达式以及缺失的内部类型的额外信息。

    • 新的 上下文操作 ,用于生成将枚举转换为字符串的函数,将函数声明中的常规返回类型转换为尾随返回类型,反之亦然,还可以插入使用类模板参数推导推导出的模板参数。

    • 代码生成改进: 生成 Getter/Setter 可以创建 C++/CLI 属性, 生成重写成员 可以重写 CLR 属性。

    • 针对 Unreal Engine 项目:推迟引擎本身的后台索引以改进初始索引性能,并更好地处理反射宏。

    • Catch 2.5 的单元测试支持

    • 在 C++11 中支持的新类型特性 std::has_virtual_destructor 以及在 C++/CLI 中支持的新类型特性( __is_interface_class __is_ref_array __is_ref_class __is_value_class __is_sealed __is_delegate __has_finalizer )。

    • C++20 嵌套内联命名空间支持。

    • 改进的 C++/CLI 支持。

ReSharper/ReSharper C++ 2018.2

ReSharper/ReSharper C++ 2018.1

ReSharper/ReSharper C++ 2017.3

ReSharper/ReSharper C++ 2017.2

ReSharper/ReSharper C++ 2017.1

  • 完全支持 Visual Studio 2017。

  • 随处搜索 转到文本 中的过滤器,您可以在搜索查询之前或之后直接在搜索字段中输入。

  • 一个新选项,帮助通过完全忽略选定项目来提高大型解决方案的性能,可在 ReSharper 选项 代码检查 | 忽略的代码