ReSharper 2025.1

Released: Apr 16, 2025

2025.1 での更新項目

機能

C# Support

  • .NET 10 Preview and C# 14 support
    • ReSharper 2025.1 delivers initial support for .NET 10 and C# 14 preview features.
  • nameof of unbound generic types
    • Previously, using nameof required specifying all type arguments, causing unnecessary verbosity. C# 14 allows nameof(List<>) without explicitly listing type arguments. ReSharper now detects redundant generic type arguments in nameof expressions and provides a quick-fix to simplify them.
  • First-class Span<T> conversions
    • C# 14 introduces new implicit conversions between ReadOnlySpan<T>, Span<T>, and T[], making span-based code more intuitive. ReSharper now fully supports these conversion rules, helping you write efficient, modern C# code.
  • Modifiers on simple lambda parameters
    • With C# 14, you can now use parameter modifiers like ref, out, in, and scoped in lambda expressions without needing explicit parameter types. ReSharper offers a quick-fix to remove redundant type specifications.
  • New context action to convert interpolation to concatenation
    • A new context action lets you convert string interpolation back to concatenation. While ReSharper has long supported converting string concatenation ("Id = " + someId) to interpolation ($"Id = {someId}") or string.Format("Id = {0}", someId), this update completes the cycle by allowing the reverse transformation, giving you more flexibility in structuring string expressions.
  • Redundant duplicated code
    • ReSharper now detects and highlights even more code duplication patterns appearing in conditional constructs like if and switch, and makes refactoring suggestions for cleaner, more maintainable code.
  • Possibly Mistaken Use of CancellationToken
    • ReSharper now detects cases where a method-level CancellationToken is mistakenly used instead of a local token. It offers a quick-fix to replace the incorrect token or merge multiple tokens using CancellationTokenSource.CreateLinkedTokenSource().
  • Use nameof to reference enum member name
    • Calling .ToString() on enum members can incur unnecessary runtime overhead. ReSharper now suggests replacing it with nameof(SomeEnum.Member), improving performance and clarity.
  • Tuple component name suggestions
    • ReSharper 2025.1 suggests explicit tuple component names instead of generic ItemN names, making your code more readable and self-documenting.
  • Inexact stream reads inspection
    • ReSharper now warns you when Stream.Read() and ReadAsync() methods are used without checking their return values, which can lead to incomplete data reads. It suggests replacing them with .ReadExactly() to ensure correctness.
  • Modification warning in the Debug.Assert inspection
    • Since Debug.Assert calls are removed in RELEASE builds, ReSharper warns you about assertions that modify state and could lead to unexpected behavior in production code.

C++ Support

  • Introduced the Inline Macro refactoring.
  • Support for several new GNU language extensions.
  • Memory usage optimizations in Unreal Engine projects containing large numbers of Blueprint assets.
  • Bundled Clang-Tidy 20 and support for using Clang-Tidy on ARM devices.
  • Updated GoogleTest support.

Code Refactoring

  • Toggle <ImplicitUsings> refactoring
    • Implicit usings automatically include common namespaces, reducing boilerplate. ReSharper now provides an easy way to toggle implicit usings on or off across your project, removing redundant explicit usings when enabled or adding necessary ones when disabled.
  • Reworked Transform Parameters refactoring
    • ReSharper has modernized the Transform Parameters refactoring, adding support for value tuples, records, and async scenarios to improve code flexibility and maintainability.

Code Formatting

  • Chop formatting context action
    • A new formatting action applies chop formatting to various C# constructs, improving code readability and consistency.
  • Other improvements
    • Comment formatting now ensures proper wrapping and the addition of spaces after //.
    • JetBrains have also added an option not to insert a line break before a single lambda expression argument in method invocations.

User Experience

  • Push-to-Hint activation and indicator improvements
    • JetBrains have refined Push-to-Hint behavior in ReSharper to prevent unintended activations caused by conflicts with other Ctrl-based shortcuts. Additionally, we've introduced a visual indicator to show when the mode is active.
  • Context highlighters for extended types list
    • ReSharper now visually highlights members that extend base classes or implement specific interfaces when you place the caret over a type name in the base types clause.

Performance

  • Memory consumption
    • For this release, JetBrains have completely overhauled the string interning system. IDEs process an enormous number of strings, including source code, syntax elements, symbol names, and file paths, so efficient string handling is critical. The new string interning system stores, on average, four times as many unique strings as its previous iteration and consumes about half as much memory to do so, freeing up resources in large-scale .NET projects.
  • Blazor and Razor improvements
    • Razor tag helpers and Blazor component support have been completely rebuilt for 2025.1. This long-needed overhaul brings a 5%–10% reduction in analysis time for large ASP.NET solutions with heavy component usage. You'll also experience fewer reanalysis events when editing .cshtml/.razor files, as well as significantly reduced false error reporting.
  • The latest status update on out-of-process ReSharper
    • JetBrains have been testing the latest out-of-process (OOP) implementation of ReSharper internally for the past four weeks, and JetBrains are truly excited about the results so far. While JetBrains are still working to support all features and fix known issues, the core functionality that makes ReSharper an essential part of your development workflow is coming together nicely.

Code Quality

  • The Qodana Team Code quality extension
    • Qodana is a team code quality tool that leverages JetBrains inspections to help teams run checks and audits and establish quality gates in their favorite CI/CD pipeline. Now, you can download the Qodana Code quality extension via your ReSharper installer to bring Qodana Cloud or self-hosted Qodana projects into Visual Studio. Identify code issues, bugs, and vulnerabilities, run the analyses directly in your pipeline, and then view issues in your IDE where you work for better contextual updates and learning. You also have the option to download it as a standalone tool using the ReSharper installer.

Game Development

  • Unity plugin for ReSharper
    • ReSharper 2025.1 comes with a bundled Unity plugin that supports all major game development workflows. The plugin provides code completion for Unity event functions and APIs, tooltip summaries with links to Unity documentation, and specialized inspections to detect common pitfalls. It includes ShaderLab file support with syntax highlighting, code completion, and error detection. The plugin also handles .meta files automatically and detects implicit usage of fields and methods in Unity scenes, prefabs, and assets. ReSharper C++ continues to provide dedicated support for Unreal Engine development.

Decompiler

  • Support for required members.
  • Added support for the new System.Threading.Lock type introduced in C# 13.
  • Support for ref fields and scoped parameter modifiers.
  • Support for the allows ref struct generic anti-constraint.
  • Pattern-based using for ref struct types.
  • Support for string interpolation.
  • Certain integer constants in decompiled code now include commented hexadecimal representations for better readability.
  • Support for file-scoped namespaces.

Other notable improvements

  • New postfix template: .inject
    • C# 12's primary constructors have simplified dependency injection. The new .inject postfix template further streamlines constructor dependency injection by automatically introducing a parameter in the primary constructor and suggesting a meaningful name.
  • Structured logging support
    • ReSharper now provides enhanced structured logging support, helping developers write and analyze logs more efficiently.
  • Language injection in return values
    • ReSharper now allows language injection annotations on method return values, extending previous support for parameters, fields, and properties.
  • Improved multiline To-do comments
    • Previously, multiline To-do comments required indentation for continuation. ReSharper 2025.1 removes this restriction, making it easier to write and manage multiline to-dos while still enforcing indentation where provided.