ReSharper C++ 2021.2,以帮助您实现代码的现代化
ReSharper C++添加了新的 inlay 提示,使隐藏的类型转换在编辑器中可见,以便您了解它们的潜在性能和正确性影响。
ReSharper C++第二个检查建议用 标记可以在编译时评估的变量constexpr,这可以带来更快的性能和更好的编译时检查。
现代化检查- 此版本包括一些新的检查,以帮助您实现代码的现代化。
可以使用结构化绑定代替tie(..)- 从 C++17 开始,您不再需要使用std::tie()或boost::tie()解包元组或对 - 结构化绑定声明可帮助您简化代码。
ReSharper C++现在可以使用模板别名或变量模板来简化类型特征- C++14 别名模板让您可以缩短 C++11 类型特征表达式。
std::size现在可以使用- 此检查建议将其std::size用作类型安全的替代方案,以替代容易出错的 C 习语来计算数组大小。
可以使用零初始化代替memset- 零初始化导致更简洁的代码并防止各种memset相关错误。
内联函数重构- 新的内联函数重构可让您快速用函数体替换函数调用。ReSharper C++ 将执行必要的转换、处理所有名称冲突并重新格式化生成的代码。
ReSharper C++您现在将看到隐式转换的特殊图标。或者,您可以选择将转换显示为文本提示。
ReSharper C++ 现在显示不同类型类类型转换的提示,包括对象复制、使用转换构造函数的对象初始化或聚合初始化和对转换运算符的调用。
您现在还可以为内置类型之间的标准转换启用提示,例如,可能会丢失精度或更改类型符号的数字类型之间的转换。
不变性检查
与不变性相关的分析可以帮助您保持代码的可读性和正确性。通过添加两项新检查,ReSharper C++ 现在涵盖了 C++ 核心指南的常量和不变性部分中的所有规则。
第一个新检查扩展了对引用和指针类型的函数参数的不变性分析。ReSharper C++ 现在会通知您是否可以将指针或引用传递给const,从而保证函数不会修改相应的函数参数。
编码帮助
默认情况下,ReSharper C++ 生成具有空主体的函数,但现在您可以指定生成的函数是应该抛出std::logic_error、返回默认值还是包含不可编译的代码。ReSharper C++ 还将自动从覆盖函数的主体调用基本函数。
ReSharper C++添加了一个新的上下文操作,可让您将任何字符串转换为 C++11 原始字符串文字,当字符串文字包含特殊字符时更易于阅读。转换是双向的,因此您也可以将原始字符串文字转换为常规字符串文字。
如果您想快速查阅 cppreference.com 以了解标准库类或函数的详细信息,现在可以单击快速文档弹出窗口 ( Ctrl+Shift+F1)中的阅读更多以在浏览器中打开相应页面。
当您按下Backspace空行或插入符号左侧带有空格或制表符的行时,ReSharper C++ 现在可以将插入符号置于适当的缩进位置,而不是一次将其移回一个位置。
虚幻引擎- ReSharper C++ 现在支持使用来自虚幻启动器和 GitHub 源的虚幻引擎 5。
在虚幻引擎项目的 .Build.cs 和 .Target.cs 文件中,ReSharper C++ 的代码完成功能现在会建议可用模块和插件的列表。
添加模块或插件后,缺少依赖项的新检查将突出显示任何必须在 .uproject 或 .uplugin 文件中引用的内容。使用随附的快速修复程序,只需单击一下即可将新模块和插件添加到项目文件中。
在生成覆盖函数的定义时,ReSharper C++ 现在将使用惯用的 Super 类型别名从生成的主体调用覆盖函数。
ReSharper C++改进了冷启动的性能和内存使用。ReSharper C++ 现在索引虚幻引擎代码库的速度提高了 10%。
其他变化
捆绑的 Clang-Tidy 已更新到 Clang 12,添加了来自最新 LLVM 版本的新检查。它在复杂文件中的性能,特别是在 C++20 项目中的性能得到了改进。
添加了一项新检查,当您将无符号表达式与 0 进行比较时会发出警告,这可能会导致无限循环或无法访问的代码。