ReSharper 2022新功能介绍
C# 支持
我们将继续改进对 C# 10 的支持,尤其是全局使用。我们实现了两个新的重构,它们也可以作为上下文操作使用。
提取全局使用可以帮助您在项目中引入全局使用的概念。你可以在常规指令上调用它,ReSharper会建议将其解压缩到指定的文件中(如果你的项目中还没有这样的文件,它将被创建)。不再需要的常规将从项目中的文件中删除。usingGlobalUsings.csusing
如果您决定将全局重构为常规,则使用内联全局重构也可以提供帮助。在 全局 上调用 时,它会将其从 中删除,并在需要时将相应的语句添加到项目中的文件中。usingusingusingGlobalUsings.csusing
“查找使用实例”和扩展方法的代码分析中支持全局使用功能。
我们已经研究了即将推出的 C# 11 并支持泛型属性。
可为空的引用类型
我们已将对永远不应为 null 的表达式进行空检查的警告拆分为两类。第一个警告适用于永远不会为 null 的表达式,因为 NRT 注释会这样说。第二个警告适用于存在实际运行时检查 null 的表达式。
我们添加了一个新设置,用于切换到运行时强制执行的“非空警告”模式。可从 + 菜单中的配置项目组访问它,以显示基于注释的警告。AltEnter
[MemberNotNull]和批注现在在不使用可为 null 的引用类型的项目中受支持。[MemberNotNullWhen]
端点
我们的端点支持现在适用于 ASP.NET 核心 6 最小 API 和基于约定的路由。它包括导航、代码分析和代码完成。
剃刀和布拉佐
以下是我们为 Razor 和 Blazor 所做的一些最值得注意的功能和修复:
我们添加了对 .NET 6 中新属性的支持。如果您尝试使用 Blazor 组件而不指定所需的参数,则还可以使用相应的检查和快速修复。[EditorRequired]
我们已经在 Razor 语法中实现了对 C# 本地函数的期待已久的支持。
我们改进了使用 Blazor 组件的文件中的代码清理。它不再删除所有声明。.razor@using
我们还修复了 Razor 代码中的“如果切换”和“反转 If”上下文操作,并引用了 Blazor 组件。
ReSharper 现在为 Blazor 注入的属性使用正确的命名样式。
“带行注释的注释”操作现在仅注释你希望它注释的 Razor 代码部分。
我们已将通过继承层次结构的导航添加到 Razor 代码中。现在,将显示基础符号和派生符号的相应装订线标记。您可以单击它们以导航到代码。
代码清理和格式化
我们重新组织了 + 菜单中与代码清理和格式设置相关的所有项。“格式”选择、“清理”选择和“应用语法”样式已合并到一个“重新格式化”和“清理”项中,以提供单个入口点。AltEnter
除了这些更改之外,语法样式设置现在还可用于“配置代码样式”和“自动检测代码样式设置”操作。“预览代码样式”面板还显示语法样式的更改。
虚幻引擎单元测试
虚幻引擎测试框架现在受支持。ReSharper C++发现虚幻引擎单元测试,并在编辑器中的每个测试旁边添加相应的操作指示器,以运行或调试测试或整个测试套件。在“单元测试会话”窗口中,可以查看测试的结果,然后重新运行失败、全部或特定测试。
ReSharper C++ 2022.1 中的新增功能
更好的C++支持
ReSharper C++现在可以更好地处理隐式构造函数调用,允许您在更多情况下查找用法并导航到被调用的构造函数,包括以下内容:
标准 () 和虚幻引擎专用 () 智能指针创建函数。make_unique/make_sharedMakeShared/MakeUnique
emplace-像容器方法。
static_cast和 c 样式的转换表达式。
ReSharper C++ 2022.1 还会在使用不正确的参数调用类似函数时显示重载警告。emplace
ReSharper C++ 2022.1 中的新增功能
源发生器
在分析了源生成器支持的性能之后,我们决定在从编译器获取源生成的文档时增加请求之间的延迟。
因此,源生成器不会在编译器之前运行,并且 CPU 工作总量会减少。确切的性能提升取决于是否有任何其他功能也触发生成器,例如Visual Studio的全线完成。
性能
我们已经修复了许多性能问题,并为更多问题奠定了基础。这包括处理来自客户的性能快照、内部分析会话以及收集数据,以期在未来实现性能下降的自动检查。
至于“进程外”模式,工作正在进行中。请参阅我们问题跟踪器中的最新更新。
ReSharper Command Line Tools
The InspectCode tools can generate output files compatible with Static Analysis Results Interchange Format (S