RubyMine 2017.3 EAP4: Code Intelligence Improved
RubyMine 2017.3 EAP 4 (build 173.2941.5) is now open and packed full of pleasant code intelligence and other improvements.
First of all, RubyMine is now better at mapping arguments declared and then given to a method. In particular, the IDE now correctly captures and counts keyword arguments:
Also, we have fixed a couple of incorrect inspections. For example, previously single-line `if/then/else` conditions could be in some cases inspected as multi-line ones, which led to incorrect suggestions to remove an excessive `then`:
While you won’t see this incorrect suggestion anymore, note that this particular piece of code could still be improved with our in-editor RuboCop autocorrections:
Likewise, we added a way to remove an excessive return in the case of an inline array (also available via RuboCop corrections), and fixed incorrectly identified “invalid” local variables for unused params.
So feel free to run inspections (Code | Run Inspection by Name) and apply proper quick-fixes for your whole project. To refresh your memory, here’s how you can quickly get rid of excessive return statements:
Another thing that used to misguide our users was the inability to run `bundle` actions due to its absence in the current SDK, which was unobvious. So now we added an option Install Bundler (Tools | Bundler) to make this process straightforward and avoid any misconceptions:
Moreover, you will notice that starting with this EAP the Double Quoted String inspection is OFF by default. But again, you’ll need to also exclude a similar offense in `rubocop.yml` so that RuboCop doesn’t bug you with the same.
Last month we introduced some debugger improvements, in particular a new Trace `to_s` evaluation option, which allows you to track time and memory limit during debugging (Preferences / Settings | Build, Execution, Deployment | Debugger):
It used to be that we set `10 megabytes` as a default memory limit, which caused overhead and slowed the debugger down for some users. This is why starting from this EAP the memory limit is set to `unlimited`, meaning that now by default, RubyMine doesn’t track memory consumption during the serialization. Though, if you are debugging objects requiring lots of memory during `to_s` operations, we encourage you to set a memory limit in order to avoid potential debugger failures.
These are almost all the improvements made for this EAP, but you are welcome to check out the rest in our release notes.
As usual, please report your issues to our bug tracker.
Your RubyMine team