ReSharper C++

C++ 개발을 위한 Visual Studio 확장.

JetBrains사에서 공개
2007년 부터 ComponentSource에서 판매중

가격: ₩ 247,000 버젼: 2024.1.1 NEW 업데이스 날짜: Apr 17, 2024

i

New licenses for ReSharper C++ are now available as part of ReSharper. All existing, current ReSharper C++ licenses are now automatically valid for both ReSharper and ReSharper C++ products.

ReSharper C++ 2023.2

Released: Aug 2, 2023

2023.2 버젼 업데이트

기능

AI Assistant [Limited access]

  • This release introduces the ReSharper AI Assistant - an AI-driven chat specifically designed to answer programming questions and help you with troubleshooting, refactoring, documenting, and other development workflows.
  • ReSharper's AI Assistant takes into consideration the language and technologies used in your project. This context awareness tailors its responses right out of the gate, saving you time and effort.
  • You can include parts of the source code in your queries. ReSharper will detect the code you sent or pasted into the chat and properly format it, while the AI model will explain the logic behind the code and help you refactor, find issues, or document it.

C++23 support

  • The if consteval statement is a new constant evaluation feature in C++23 that further develops the idea of C++20 consteval and std::is_constant_evaluated().
  • This release introduces support for if consteval and brings a set of related inspections:
    • consteval if is always constant.
    • std::is_constant_evaluated always evaluates to a constant.
    • if can be replaced by if consteval.
  • Added support for the named modules std and std.compat introduced in the C++23 standard library. If you use Microsoft Visual Studio 17.6 or later, you can now use import std or import std.compat to import the entire standard library instead of using a precompiled header or including specific standard library headers.
  • Before C++23, all operators had to be non-static member functions. Call operators, however, are often used with member-less function objects, and allowing operators to be static in this case can lead to more efficient code. C++23 allows both operator() and operator[] to be static.

C++20 support

  • When processing modules internally, ReSharper C++ now implements the discarding of declarations that are not decl-reachable, significantly improving performance on modules that include a lot of headers into the global module fragment.
  • Several changes have been implemented to better support modules in CMake projects. ReSharper C++ now recognizes .cppm files as module interfaces and includes experimental support for modules located outside of the project folder.
  • C++20's new [[no_unique_address]] attribute indicates that a unique address is not required for a non-static data member of a class, allowing the compiler to lay out members of the class in a more efficient way. ReSharper C++ now takes [[no_unique_address]] into account when calculating the size of an object.
  • This release also implements the recently accepted C++20 defect report that allows the initialization of a char or unsigned char array with a UTF-8 string literal.

Safe Delete refactoring

  • Introduced the Safe Delete refactoring to let you safely remove symbols from your source code. This refactoring is available for classes, functions, variables, enumerators, namespaces, and even concepts.
  • Before deleting a symbol, ReSharper C++ searches for its usages and lets you preview the changes to the source code, so you can be sure that all the removals are intended. If you try to delete a complex entity like a class or a namespace, ReSharper C++ will recursively check the usages for all its members.

Unreal Engine

  • Improved indexing Blueprints performance. The first time you open a project, ReSharper C++ indexes all of your Blueprint assets to power features like Find Usages and show the values of serialized data directly in the text editor.
  • Previously, ReSharper C++ would index these assets at the same priority as your C++ code, meaning that it took longer before the project was ready for work. Now it will index assets in the background after indexing your C++ code without interfering with your work.
  • Improved smart completion for wrapper types with standard assignment semantics.
  • For Unreal Engine 5.1 projects, support has been introduced for the UE_INLINE_GENERATED_CPP_BY_NAME macro, which lets you inline generated files into your module to improve compilation time.

Coding assistance

  • Improved completion for dependent code, which means that you will now get completion items when the type is restricted by a concept or a trait. ReSharper C++ now considers the standard std::is_same/std::is_base_of type traits, their _v value-aliases, the corresponding std::same_as/std::derived_from concepts, and the Unreal Engine TIsSame trait.
  • For more helpful code completion suggestions, ReSharper C++ now also extracts type and value requirements from requires-clauses, if constexpr, and SFINAE.
  • Added two new complementary context actions to help you move a template parameter constraint to the requires-clause and convert a requires-clause to a template parameter constraint.
  • If you have a recursive call, ReSharper C++ will now mark it in the gutter, making it more visible.
  • The code completion list now filters out reserved identifiers and suggests them only after _. This means you no longer have to scroll through the suggestions from standard libraries unless you need them.
  • ReSharper C++ 2023.1 introduced proper highlighting and formatting for macro substitution in the Quick Documentation popup and tooltips on hover. In this release, these improvements will also work for macro definitions and Parameter Info in code completion.
  • Improved the evaluation engine to support aggregate initialization of constexpr arrays.
  • Improved compatibility with GCC and Clang compilers and libc++/libstdc++ standard libraries. This includes support for more builtins like __integer_pack, __is_convertible/__is_nothrow_convertible, and updates for the previously supported ones.
  • When you specify the parameter direction with the [in], [in,out], or [out] attribute of the Doxygen param command, the tooltips now fetch them from your comment.

Code analysis

  • Added a new inspection that detects redundant dereferencing and address-of operators. It offers you several quick-fixes to simplify member access and remove redundant operators.
  • Added a new inspection which highlights redundant template arguments that match the corresponding default template argument and can be omitted.
  • Added a new compatibility inspection which warns you about forward declarations of C-style enums without an underlying type, which are forbidden by the C++ standard but accepted by MSVC, possibly causing non-portable code.
  • ReSharper C++ now highlights the #error and #warning diagnostic preprocessor directives according to their severity level.
  • Updated the bundled clang-tidy binary to Clang 16, providing new checks and fixes.
  • MSVC can use either the traditional or the new standard-conforming preprocessor depending on the value of the /Zc:preprocessor compiler argument. ReSharper C++ now reads the value of this argument from the project properties and adjusts the behavior of the built-in preprocessor accordingly.

Navigation

  • This release brings several improvements to Go to declaration for more consistent and straightforward code navigation without extra steps:
    • When invoked on a class name in a constructor call, Go to declaration now navigates to the constructor instead of the containing class.
    • Go to declaration now navigates to the first typedef or type alias declaration instead of showing the menu with all declarations.
    • Go to declaration on a module name jumps between interface and implementation units for the same module.
    • Go to declaration on a folder in an #include path opens the folder.
  • Type of symbol is now available on non-declarator symbols. The way it works there is similar to Go to declaration.

Formatting and typing assist

  • When generating documentation comments, ReSharper C++ will now adjust the documentation template according to the comment style from the editor. For /**, typing assistance will generate the comment in the /** */ style, and for ///, the comment will be in the /// style.
  • Improved formatting of bit-field members - The options to align initializers and declaration names in columns now support bit-fields. There are also two new formatting settings for spaces before and after the colon in bit-field declarations and for alignment of bit-field sizes in columns.
  • Added a new typing assist option which lets you turn off the generation of documentation comments to avoid conflicts with Microsoft Visual Studio's built-in generator.
  • Updated the bundled clang-format binary.

수정사항

C++20 support

  • Fixed various corner issues in real-world projects that use modules.

Formatting and typing assist

  • Fixed the clang-format engine to prevent it from removing the newline at the end of a file.