IntelliJ IDEA 2023.2

Released: Jul 26, 2023

2023.2 버젼 업데이트

기능

Key updates

  • AI Assistant [Limited access] - With the current starting set of AI-powered features, AI Assistant offers integrated AI chat and can do things like automatically write documentation comments for you, suggest names, generate commit messages, and more.
  • In-editor performance hints - The new in-editor hints offer a quick way to analyze code performance line by line, helping you identify and resolve issues faster. Color-coded annotations in the editor's gutter highlight critical methods allowing you to focus right on the performance bottlenecks. This means you no longer have to perform a thorough, time-consuming analysis with the Flame Graph and Call Tree views.
  • GitLab integration - You can now work with the Merge Request functionality right from the IDE: review the list of requests, check the changes, leave comments, and navigate to relevant views.

User experience

  • Text search in Search Everywhere - Search Everywhere (Double Shift) is primarily used for searching through files, classes, methods, actions, and settings. With this update, it now includes text search capabilities similar to Find in Files. Now, text search results are displayed when there are few or no other search results available for a given query.
  • Colored project headers in the new UI - You can now assign a unique color and icon to each of your projects, making them easier to distinguish in your workspace. Headers now come with predefined colors by default, but you can customize them.
  • Reworked hamburger menu in the main toolbar on Microsoft Windows and Linux - The behavior of the hamburger menu that is located in the main toolbar in the new UI on Windows and Linux has been refined. Once you click on the menu icon, the elements now appear horizontally over the toolbar. Also, there's now an option to turn this menu into a separate toolbar, accessible via View | Appearance | Main menu as a Separate Toolbar.
  • File sorting by modification time in the Project view - Added the ability to arrange your files in the Project view based on their modification times. This new functionality automatically reorders the files whenever the changes in your project are saved.
  • Light theme with light header in the new UI - The user experience with the Light theme has been refined by introducing the alternate Light with Light Header option, featuring matching light colors for window headers, tooltips, and notification balloons.
  • Updated window controls on Apple macOS - When working on macOS in full screen mode using the new UI, the window controls are now displayed right in the main toolbar - not in the floating bar as before.
  • Removed title bar on Linux in the new UI - For the convenience of Linux users, the native header of the operating system has been removed in the new UI, resulting in a cleaner interface. By default, you will now see the custom IDE header, which offers a range of customization options to tailor your workspace.
  • Syntax highlighting in inspection descriptions - Syntax highlighting makes it easier to understand what triggers an inspection and decide whether you want it to be active or inactive.
  • Single-click navigation between project directories - In the Project view, there's a new Open Directories with Single Click option that makes expanding and collapsing the project folders quicker and more responsive. The option is available from the drop-down menu once you click on the kebab (three vertical dots) menu.
  • Improved main toolbar customization - The customization options for the new UI's main toolbar have been expanded. You can now use a dropdown menu to quickly choose actions that you want to add to the toolbar.
  • Suggested plugins in Settings/Preferences - To make it easier to configure the IDE for your specific projects and extend its functionality with plugins, the UI for the Settings/Preferences | Plugins section has been updated. It now includes a set of suggested plugins that is determined automatically based on your project specifics and appears at the top of the list.
  • Updated UI for the Run/Debug widget in the Services tool window - The UI for the running and debugging actions in the Services tool window has been reworked to make the look and feel of the toolbar consistent with that of the main Run/Debug widget.
  • Pinned run configurations in the Run widget - To make managing multiple run configurations easier, the option to pin preferred configurations in the Run widget has been implemented.

Java

  • New inspections and other code analysis improvements - Java inspections have been improved and expanded to help you maintain high-quality code and detect potential issues more effectively.
    • The new Incorrect 'MessageFormat' pattern inspection will warn you when pattern references do not match the arguments, and it will also detect incorrect usages of quotes and braces in MessageFormat patterns.
    • The IDE now reports calls with explicit ChronoField or ChronoUnit arguments and suggests replacing them with calls of more specific methods, thus simplifying the code.
  • Сode highlighting and navigation for format strings - Once you place the caret on a format specifier, the IDE will now highlight the corresponding argument and other specifiers that point to it. Also, you can now use Go To Declaration (Ctrl+B) to jump to the associated code location for a specific format string placeholder.
  • Improved support for the @snippet tag in Javadoc comments - It allows Markup comments within the @snippet tag and renders them properly in the documentation. Code regions are now supported, meaning you can specify a portion of code that you want to refer to in a Javadoc comment. In addition, the IDE now supports the inclusion of external snippets within the @snippet tag, allowing you to reference code snippets stored in separate files or sources and include them in Javadoc documentation.
  • Expanded refactoring options for multiple selected members - You can now invoke Extract Delegate, Extract Interface, Extract Superclass, Pull Members Up, and Push Members Down on multiple members simultaneously by selecting them right in the Project or Structure tool window. In addition, IntelliJ IDEA now supports multi-caret selection for an extended range of refactorings, including Encapsulate Fields, Move Static Members, Extract Delegate, Extract Interface, and Extract Superclass.
  • Improved navigation for stack trace analysis - To facilitate stack trace analysis and make resolving bugs quicker, IntelliJ IDEA can now accurately guess the location of a method in the report even when line numbers are not available or have diverged.
  • Enhanced taint analysis for dynamic SQL queries - IntelliJ IDEA can now better analyze concatenations and interpolations of SQL in Java and Kotlin, detecting potentially unsafe queries and thereby protecting the code from possible SQL injection vulnerabilities.

Scala

  • Better Scala 3 support - This release brings enhanced Scala 3 support, with a focus on providing a streamlined development experience. Notable improvements include:
    • Fixes for Scala 3 enum highlighting, navigation to enum definitions, and the correct resolution of enum cases in various contexts.
    • The TASTy decompiler has been significantly enhanced, ensuring accurate decompilation of popular Scala libraries, such as Akka, Cats, Play, ZIO, and others.
    • The integration of scala-expression-compiler into the debugger provides a better debugging experience for Scala developers.
    • Enhanced completion hints for Scala 3's Universal Apply Methods, in-editor support for IArray.
    • Improved support for the "fewer braces" syntax.
  • Better sbt support - Environment variables set for sbt are persisted and handled correctly after the project is reopened. The settings page has been redesigned for easier use, and a new Environment variables field has been added so that you can now pass custom environment variables to the sbt-shell process.
  • ScalaDoc rendering - Annotations, keywords, and literals in displayed declarations are now highlighted based on the selected theme. The list of extended traits and classes has been split into multiple lines if it exceeds the available space. Additionally, Scala 3 keywords are now supported in the documentation.
  • Fixed type inference errors - This release comes with many fixes to invalid type inference in some complex or simply rare cases, such as when types have complicated bounds, when a sealed trait hierarchy might be unclear, or in complex pattern matching.
  • Zinc as the default compiler - In light of Zinc's recent performance improvements, it is now the default incremental compiler in this release. This ensures comprehensive support for incremental compilation of new Scala 3 features, including inline methods.
  • Improved management of sources and target directories - Sub-folders of the target folder are no longer included automatically as sources unless they are marked as managed. This speeds up searching in projects that generate source code. Also, the IDE now provides better support for sbt-projectmatrix.

Profiler

  • Profiling features available from the Run tool window - You can now conveniently access the IntelliJ Profiler's functionality right from the Run tool window. The new buttons allow you to invoke the Attach IntelliJ Profiler and Capture Memory Snapshot actions in a click, without having to open the Profiler tool window or start the application from scratch.
  • Default wall-clock profiling mode - The profiling experience in IntelliJ IDEA has been enhanced by making wall-clock profiling mode the default option. This profiling method considers the total time spent in a method, including waiting time. With milliseconds as the measurement unit, it takes center stage as the more powerful and intuitive option.

Run / Debug

  • Reactor Mono and Flux values evaluation - When debugging your reactive application, you can now easily evaluate values of watches and local variables for Mono and Flux types. The IDE now detects them during debugging sessions and provides a corresponding get or collectList link in the Variables view, which you can click to instantly compute reactive stream items. By default, the debugger fetches the first 100 items of Flux. You can configure this number in the settings.
  • Сontinuous testing for Gradle, Maven, and JPS projects - The capabilities of the auto-testing functionality have been expanded, making it fully compatible with the Maven, Gradle, and JPS build systems. It is now easier to activate continuous testing mode.
  • Inline breakpoints for return statements - IntelliJ IDEA now offers improved support for setting breakpoints directly at the return statement, similar to how it was already being done with lambda expressions. This improvement offers developers improved debugging precision and deeper code analysis, providing valuable insights into code behavior and return values.

Version control systems

  • Option to commit specific lines of code - This release introduces a new feature to selectively commit specific parts of code chunks. To perform a partial commit, select the lines within a chunk and call Include these lines into commit from the context menu. The chunk will be divided into individual lines, with the selected ones highlighted. You can add or exclude lines from the selection using checkboxes or the context menu.

Performance

  • New tool for easily generating shared indexes - It is designed to streamline teamwork and eliminate time wasted on locally indexing large projects. The new tool simplifies the process of generating shared indexes for your team, requiring just a few clicks instead of multiple scripts and services.

Frameworks and technologies

  • Ability to run and debug Tomcat on Microsoft Windows Subsystem for Linux (WSL) - To work with Tomcat-based applications on WSL, you'll need to have the JAVA_HOME environment variable declared in either the /etc/environment or the ~/.bashrc file.
  • gRPC requests using TLS in the HTTP Client - TLS provides encryption and authentication, ensuring the confidentiality and integrity of your data transmission. Both https:// and grpcs:// schemas are supported in the request syntax.
  • Improvements for Swagger Codegen - The Edit Swagger Codegen Configuration dialog has been reworked to make it easier for you to tailor run configurations to your requirements. Additionally, you can now access Swagger Codegen run configurations right from the gutter without having to specify any additional settings.
  • Support for Swagger and OpenAPI schemas in the HTTP Client - The HTTP Client is now capable of understanding Swagger and OpenAPI specifications and providing corresponding code completion options for JSON request bodies.
  • Redoc UI previews for OpenAPI and Swagger files - IntelliJ IDEA now supports Redoc UI previews for OpenAPI and Swagger specification files, including YAML and JSON files, allowing you to switch between the Redoc and Swagger UIs within the IDE. With the Redocly integration, you can access the Try it console from within IntelliJ IDEA and use it to set parameters and send requests to your API.
  • JSON body completion in JavaScript - The IDE now provides completion for JSON object keys in JavaScript code, such as in code that uses fetch() calls or references the Axios library. Spring MVC server endpoints are currently supported.
  • Support for JavaScript imports in the HTTP Client - With this release, it is now possible to share common JavaScript code for HTTP Client request handlers via imported modules.
  • PDF and HTML previews for responses in the HTTP Client - IntelliJ IDEA is now able to display previews of PDF and HTML files right in the request results in the HTTP Client.
  • Support for GraphQL and WebSocket in the HTTP Client CLI - You can now use the HTTP Client CLI in IntelliJ IDEA to interact with GraphQL APIs and establish WebSocket connections with services, for example for tests or automation scripts.
  • Auto-completion for Spring Boot configuration keys in VM options - While setting up a new Spring Boot run configuration, the VM options field provides auto-completion options for keys appearing after the -D flag.
  • Spring configuration beans no longer require the annotation processor - The user experience has been streamlined when working with custom configuration beans in Spring within IntelliJ IDEA. The IDE now provides code completion and validation in properties and YAML configuration files, without you needing to set up the Spring Boot Configuration Annotation Processor.
  • Support for Spring AOP in Kotlin - Extended IntelliJ IDEA's support for utilizing AspectJ in Spring applications. The IDE now provides analysis and completion for Kotlin code, just as it already did for Java code.
  • New inspection for detecting mismatching value types in YAML files - A new inspection to eliminate the so-called "Norway problem" and prevent the unintended misinterpretation of Boolean values in YAML files has been introduced. When a list primarily consists of strings but contains a Boolean-like literal, IntelliJ IDEA will highlight this literal, indicating a potential inconsistency, and suggest adding quotes to it. If the list is mostly composed of Boolean-like literals (such as true, false, off, on, yes, or no), any literal that deviates from this pattern is highlighted as a possible error, although no specific quick-fixes are suggested in this scenario.
  • Support for editing AsyncAPI files - Working with the AsyncAPI specification format in IntelliJ IDEA is now much easier. The IDE supports schema validation functionality and provides code completion for references, the Endpoints view, and the Editor Preview pane.

Docker

  • Preview of files inside Docker image layers - It is now easy to access and preview the contents of a Docker image layer in the Services tool window. Select the image from the list, select Show layers, and click Analyze image for more information.
  • Set Docker container to run as a Before Launch task for run configurations - It is now possible to set a Docker run configuration to run before another configuration by designating it as a Before Launch task. The IDE will wait for the container that is currently running to become healthy, and then it will launch the next run configuration.

Kubernetes

  • Support for multiple kubeconfig files within a single project - A new feature that allows you to set up multiple kubeconfig files within a single project has been introduced. This simplifies the experience of handling multiple clusters or working with environments on different clusters in the same project.
  • Ability to view deployment logs - You can now view logs for deployments in Kubernetes clusters in the Services tool window. Right-click on Deployment in the tree and then select Follow Log or Download Log from the context menu.

Web development

  • Improved error formatting in JavaScript and TypeScript - In this release, your errors and warnings will now be formatted in a more readable way, making it easier to spot problems in your code. This works for all TypeScript errors, some of the most common JavaScript errors, and even localized errors.
  • CSS nesting support - IntelliJ IDEA now supports CSS nesting. Syntax support has been implemented and an inspection that alerts you if the nested selector starts with an identifier or functional notation has been added.
  • Vue Language Server support - Support for Vue Language Server (VLS), a.k.a. Volar, provides more accurate error detection and better type information in the quick navigation and documentation popups. By default, VLS will be used for TypeScript v5.0 and higher, and the wrapper over the TypeScript service will be used for earlier TypeScript versions.
  • New live templates for React hooks - Added a new set of live templates for React hooks.

Сode quality workflow

  • Bundled Qodana code quality platform - IntelliJ IDEA now simplifies configuring static analysis tools by fully integrating JetBrains Qodana. This integration brings you two important benefits. First, easy configuration allows you to trigger analysis with a few clicks, view project-wide problems, and set up quality gates in your preferred CI/CD system. Second, you can now see the server-side analysis results without leaving your IDE, right out of the box.

Database tools

  • Support for Redis Cluster - When connecting to a cluster, jdbc:redis:cluster: must be entered before the desired URL. Choose the appropriate connection type to achieve this. If SSH tunneling is required for the connection to the cluster, then the hosts and ports for all nodes in the cluster should be indicated in the URL.
  • New UI for the schema migration dialog - The schema migration functionality has been reworked. The main difference is that the same object is now placed on the same line in both parts of the dialog, making it easier to understand which objects are going to be added, removed, or changed in the target schema.
  • Time zone setting for the data editor - The Data Editor and Viewer settings page has a new Time zone field for setting the time zone in which the datetime value should be displayed.
  • Support for external databases and datashares in Redshift - Shared databases and their contents are now introspected. The datashares that these databases are created on are also introspected.

Build tools

  • Support for Maven 4.0.0-alpha - IntelliJ IDEA is now fully compatible with Maven 4.0.0-alpha, the latest version of Maven.

Other

  • Introduced an LSP API for plugin developers who want to use a specific LSP server for coding assistance in the IDE. If you've made your own programming language or framework, you can get it supported in the IDE by creating an LSP server and a plugin.
  • The Big Data Tools plugin has been decomposed, allowing you to use its parts separately. This means six new plugins are available for IntelliJ IDEA: Kafka, Spark, Flink, Remote File Systems, Big Data File Viewer, and Zeppelin. If you need all six, installing the umbrella Big Data Tools plugin is still possible and a convenient way to get them all in one click.
  • IntelliJ IDEA's bundled Android plugin now provides the features of Android Studio Giraffe Beta 2, including support for Android Gradle Plugin (AGP) 8.0.0. Please note that this support doesn't include the features that require signing in to a Firebase account.
  • The default value of the maximum heap size (-Xmx) has been changed to 2 GB.