{"id":27127,"date":"2019-01-30T16:24:35","date_gmt":"2019-01-30T16:24:35","guid":{"rendered":"https:\/\/blog.jetbrains.com\/idea\/?p=19066"},"modified":"2019-02-05T08:46:32","modified_gmt":"2019-02-05T08:46:32","slug":"whats-new-in-intellij-idea-2019-1-eap2","status":"publish","type":"idea","link":"https:\/\/blog.jetbrains.com\/pt-br\/idea\/2019\/01\/whats-new-in-intellij-idea-2019-1-eap2","title":{"rendered":"What\u2019s new in IntelliJ IDEA 2019.1 EAP2?"},"content":{"rendered":"<p>A new <a href=\"https:\/\/www.jetbrains.com\/idea\/nextversion\/\" target=\"_blank\" rel=\"noopener\">EAP<\/a> build for the upcoming IntelliJ IDEA 2019.1 is now ready for you to try. It comes with better data flow analysis, JVM Debugger improvements, Kotlin 1.3.20, and Maven 3.6.0. Let\u2019s dive into the details.<br \/>\n<strong><br \/>\nJava<\/strong><\/p>\n<p><strong>Data Flow analysis enhancements<\/strong><\/p>\n<p>With each major release we improve our data flow analysis, and as you may have come to expect, this release is no different.<\/p>\n<p><strong>Precise warning highlighting in the ternary expressions<\/strong><\/p>\n<p>With IntelliJ IDEA 2019.1 we\u2019ve improved the precision of the warning highlighting for ternary expressions. Now the IDE will only highlight a condition in which a nullability violation is detected, previously the IDE highlighted the whole ternary expression, even when the nullability was only violated in a single branch.<br \/>\nThanks to this new feature you now have precise highlighting in the switch expressions too.<\/p>\n<p><a href=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/01\/idea-JavaDFATernary.png\" rel=\"attachment wp-att-19070\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-19070\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/01\/idea-JavaDFATernary.png\" alt=\"JavaDFATernary\" width=\"750\" height=\"300\" \/><\/a><!--more--><\/p>\n<p><strong>Improved analysis of mathematical operations<br \/>\n<\/strong><br \/>\nNow the data flow analysis tracks the value of mathematical operations and uses this information to warn you about the conditions that are always true or false. With this upcoming release, the analysis of many math operations was improved including multiplication, remainder, and bitwise operations.<\/p>\n<p><a href=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/01\/idea-JavaDFAMath1.png\" rel=\"attachment wp-att-19071\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-19071\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/01\/idea-JavaDFAMath1.png\" alt=\"JavaDFAMath1\" width=\"1500\" height=\"600\" \/><\/a><\/p>\n<p><a href=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/01\/idea-JavaDFAMath2-2.png\" rel=\"attachment wp-att-19104\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-19104\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/01\/idea-JavaDFAMath2-2.png\" alt=\"JavaDFAMath2\" width=\"750\" height=\"300\" \/><\/a><\/p>\n<p><strong>Inference of the constructor&#8217;s purity from sources<\/strong><\/p>\n<p>The upcoming IntelliJ IDEA 2019.1 improves the support for the <a href=\"https:\/\/www.jetbrains.com\/help\/idea\/contract-annotations.html\" target=\"_blank\" rel=\"noopener\">@Contract annotations<\/a>. The IDE can now automatically infer the purity of constructors from sources and adds annotations icon in the gutter which you can click on and the IDE adds a @Contract(pure = true) annotation to your codebase. The constructor purity was already inferred for library code and now it works for source files as well.<\/p>\n<p><a href=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/01\/idea-JavaConstrPurity.png\" rel=\"attachment wp-att-19080\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-19080\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/01\/idea-JavaConstrPurity.png\" alt=\"JavaConstrPurity\" width=\"750\" height=\"300\" \/><\/a><\/p>\n<p>Also, IntelliJ IDEA now enables non-null parameter inference for non-stable source methods. If a method can be overridden, but the base class implementation unconditionally dereferences the parameter, we believe that in such cases it\u2019s acceptable to have a not-null inference for the parameter. Please report to our <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/IDEA\" target=\"_blank\" rel=\"noopener\">issue tracker<\/a> if this feature produces any false-positive nullability violation warnings in your project.<\/p>\n<p><a href=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/01\/idea-JavaDFAParam.png\" rel=\"attachment wp-att-19081\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-19081\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/01\/idea-JavaDFAParam.png\" alt=\"JavaDFAParam\" width=\"750\" height=\"300\" \/><\/a><\/p>\n<p>In some cases, the IDE now can detect if the array index is out of bounds for multidimensional arrays.<\/p>\n<p><a href=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/01\/idea-JavaDataFlowMultiDimArr.png\" rel=\"attachment wp-att-19088\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-19088\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/01\/idea-JavaDataFlowMultiDimArr.png\" alt=\"JavaDataFlowMultiDimArr\" width=\"750\" height=\"300\" \/><\/a><\/p>\n<p><strong>Navigation from Java stack trace to the relevant position within a line<\/strong><\/p>\n<p>IntelliJ IDEA now tries to take you from the Java stack trace to the relevant position within a line. Previously when the link in the stack trace was clicked, it would only take you to the first column of the corresponding row, now the IDE tries to determine the exact location within the row to take the cursor to when it\u2019s possible.<\/p>\n<p><a href=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/01\/idea-JavaNavigateStackTraces.gif\" rel=\"attachment wp-att-19084\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-19084\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/01\/idea-JavaNavigateStackTraces.gif\" alt=\"JavaNavigateStackTraces\" width=\"750\" height=\"300\" \/><\/a><\/p>\n<p><strong>Run Tool Window<\/strong><\/p>\n<p>Now the &#8220;Dump Threads&#8221; action in the Run tool window, opens the Dump tab where you can view all the thread dumps and the stack traces associated with those threads, with the most important threads shown at the top of the list. It makes it easy to locate the thread you need and to navigate to it. Previously this action printed the raw thread dump to console output, which I think we can all agree, is not very useful. Now the &#8220;Dump Threads&#8221; action invokes the same tab as the Debugger tool window.<\/p>\n<p><strong><a href=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/01\/idea-JVMDebuggerThreadDump.png\" rel=\"attachment wp-att-19078\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-19078\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/01\/idea-JVMDebuggerThreadDump.png\" alt=\"JVMDebuggerThreadDump\" width=\"750\" height=\"300\" \/><\/a><\/strong><\/p>\n<p><strong>JVM Debugger<\/strong><\/p>\n<p><strong>Support \u2018synchronized\u2019, \u2018assert\u2019 and \u2018switch\u2019 in the debugger evaluator<br \/>\n<\/strong><br \/>\nWith this upcoming release of IntelliJ IDEA we have improved the debugger evaluator to now support synchronized statements, assert expressions, and switch statements.<\/p>\n<p><a href=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/01\/idea-DebuggerSwitch.png\" rel=\"attachment wp-att-19076\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-19076\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/01\/idea-DebuggerSwitch.png\" alt=\"DebuggerSwitch\" width=\"750\" height=\"300\" \/><br \/>\n<\/a><a href=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/01\/idea-DebuggerSwitch.png\" rel=\"attachment wp-att-19076\"><br \/>\n<\/a><a href=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/01\/idea-DebuggerAssert.png\" rel=\"attachment wp-att-19077\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-19077\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/01\/idea-DebuggerAssert.png\" alt=\"DebuggerAssert\" width=\"750\" height=\"300\" \/><\/a><\/p>\n<p><strong>Maven<br \/>\n<\/strong><br \/>\nWe have updated the Maven version bundled with IntelliJ IDEA to v3.6.0.<\/p>\n<p><strong>Kotlin<br \/>\n<\/strong><br \/>\nThis EAP build updates the bundled Kotlin plugin version to 1.3.20, see the <a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2019\/01\/kotlin-1-3-20-released\/\">Kotlin blog<\/a> for details. Here\u2019s a little more insight into what it brings you:<\/p>\n<ul>\n<li>Template to generate \u2018main\u2019 without parameters.<\/li>\n<li>Inspections to improve coroutines code.<\/li>\n<li>New intention for converting SAM as lambda to an anonymous object.<\/li>\n<li>String conversion improvements.<\/li>\n<\/ul>\n<p>Feel free to grab a copy of the IntelliJ IDEA 2019.1 <a href=\"https:\/\/www.jetbrains.com\/idea\/nextversion\/\" target=\"_blank\" rel=\"noopener\">EAP build<\/a> and explore all our new features! Don\u2019t forget to share your experience with us in the comments below or the <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/IDEA\" target=\"_blank\" rel=\"noopener\">issue tracker<\/a>, on Twitter, or our <a href=\"https:\/\/intellij-support.jetbrains.com\/hc\/en-us\/community\/topics\/200382555-IntelliJ-IDEA-Users\" target=\"_blank\" rel=\"noopener\">discussion forum<\/a>.<\/p>\n<p><em>Happy developing!<\/em><\/p>\n","protected":false},"author":746,"featured_media":0,"comment_status":"open","ping_status":"open","template":"","categories":[826],"tags":[744,3335],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/idea\/27127"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/idea"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/types\/idea"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/users\/746"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/comments?post=27127"}],"version-history":[{"count":0,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/idea\/27127\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/media?parent=27127"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/categories?post=27127"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/tags?post=27127"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/cross-post-tag?post=27127"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}