Спешу поделиться хорошей новостью. Сегодня стала доступна IntelliJ IDEA 2016.3 – очередное крупное обновление нашей (и, хочется надеяться, вашей) любимой Java IDE. Читайте ниже об основных изменениях и нововведениях.
Java 8
С релиза Java 8 IntelliJ IDEA предоставляет инспекции, помогающие писать корректный и идиоматический Java 8. В IntellIJ IDEA 2016.3 эти инспекции были серьезно переработаны, расширив область применения за рамки тривиальных примеров. Теперь, если вы нажмете Alt+Enter внутри нетривиального for цикла, IDE предложит переписать его с использованием Stream API. При этом IDE будет опираться на практически все доступные API: count, sum, flatMap, map, mapToInt, collect, filter, anyMatch, findFirst, toArray и другие. Примечание: похожая инспекция доступна для Kotlin. Также IDE предложит заменить соответствующие конструкции на Map.computeIfAbsent, Collections.removeIf или ThreadLocal.withInitial там, где это имеет смысл.
Scala
Scala.js
Обновленный Scala плагин теперь предоставляет навигацию и автодополнение для js.Dynamic – на основе переменных и методов, объявленных в JavaScript библиотеках или файлах проекта.
scala.meta
Также плагин получил поддержку scala.meta. IntelliJ IDEA поддерживает “новые” макро-аннотации и предоставляет помощь при редактировании scala.meta quasiquotes.
JVM отладчик
Class-level Watches
Эта новая мощная функция отладчика позволяет добавлять Watch выражения на уровне классов. Эти выражения выглядят как поля классов, однако их значения определяются самими выражениями. Выражения указываются в контексте класса.
Memory View
Этот новый плагин позволяет исследовать объекты в памяти JVM при отладке кода. Плагин показывает количество объектов в памяти, с группировкой по имени класса. По мере того как вы перемещаетесь во время отладки по коду, колонка Diff показывает как это количество меняется. Двойной клик на классе откроет диалог с объектами. Также плагин позволяет отслеживать stacktraces создания объектов.
Интерфейс
Подсказки имен параметров методов
Опция Parameter Hints (включена по-умолчанию) показывает имена параметров методов, если в качестве аргументов используются литералы или null. Такие подсказки делают код более читаемым. Если подсказки для каких-то методов избыточны, вы можете попросить IDE не показывать их.
Семантическая подсветка
Ранее появившийся в KDevelop и некоторых других IDE, Semantic highlighting теперь доступен в IntelliJ IDEA. Эта опция добавляет в стандартную подсветку уникальные цвета для каждого параметра и локальной переменной. Эта опция выключена по умолчанию, но может быть включена в Settings > Editor > Colors & Fonts > Language Defaults > Semantic highlighting.
Иконки
Иконки файлов и папок стали плоскими. Новые иконки стали четче и менее отвлекающими.
Инструменты сборки
Delegate IDE build/run actions to Gradle
Эта новая опция позволяет делегировать такие действия IDE как Build, Build Artifacts и Run напрямую Gradle. Когда эта опция включена, IDE вместо стандартных действий вызывает соответствующие Gradle-таски. Включить эту опцию можно в Settings > Build, Execution, Deployment > Build Tools > Gradle > Runner > Delegate IDE build/run actions to Gradle.
Gradle Composite Builds.
Эта новая мощная опция позволяет заменить любую из зависимостей проекта другим проектом. Эта опция требует Gradle 3.1 или старше.
Polyglot Maven
Теперь pom.xml можно писать на Groovy, Scala, Ruby и других языках. (Примечание: подсказки при редактировании pom.xml доступны только для Groovy.)
Контроль версий
Log для Git и Mercurial
Окно Log снова переработано, в этот раз – с целью повышения эргономичности и скорости работы. Панель подробных изменений сместилась вправо, освободив больше места. Описание изменений теперь выровнены и более читаемы. Метки с тегами и названиями веток сместились вправо и отображаются более элегантно. Строка поиска сохраняется между запусками IDE. Для Git поиск по тексту, автору и пути стал гораздо быстрее.
Merge и Diff
Окно Merge теперь может разрешать конфликты автоматически там, где это возможно. В таких случаях слева будет отображаться иконка Resolve с волшебной палочкой. Также мы добавили маркеры, отражающие изменения, которые будут применены поверх базовой ревизии. Кроме этого, и Merge и Diff теперь предлагают подсветку синтаксиса и навигацию для “не-базовых” ревизий.
Также добавлено управление удаленными репозиториями.
JavaScript
ECMAScript 6
IntelliJ IDEA позволяет автоматически конвертировать переменные объявленные var в const/let в зависимости от семантики их использования.
Для всех вызовов require, IDE предложит автозамену на import.
Для всех классов, объявленных с помощью функций и цепочек prototype, IDE предложит автозамену на полноценные классы.
TypeScript
Исправлена проблема переименования наследуемых методов.
Flow
Теперь, если вы укажете Flow в качестве версии JavaScript, а также укажете путь к дистрибутиву Flow, заработают соответствующие инспекции (и в некоторых случаях автодополнения).
Серверы приложений
TomEE 7
Поддержка TomEE была обновлена до последней версии.
Liberty
Теперь IDE позволяет запускать loose applications. Для этого на закладке Deployment в окне WebSphere Run/Debug configuration вместо артефакта выберите Loose application….
React Native
Теперь запускать и отлаживать React Native приложения можно для OS X и Android прямо из IDE.
Android
Blueprint
Это новый режим в Designer, который скрывает визуальные элементы компонентов и отражает только их структуру.
Constraint Layout
Это мощный новый layout manager, который позволяет создавать сложные структуры интерфейса, используя плоскую структуру.
Instant Run
Согласно информации от команды Android Tools, обновление исправляет большое количество проблем, связанных с работой Instant Run. Теперь Instant Run должен работать более стабильно.
APK Analyzer
Эта утилита позволяет анализировать содержимое APK.
Базы данных
Редактирование нескольких ячеек
Теперь вы можете выделить несколько ячеек и редактировать их одновременно.
Пакетная отправка изменений
Теперь изменения в таблице отправляются не сразу, а по нажатию Ctrl+Enter (Cmd+Enter для OS X) – целыми пакетами. Используйте Undo, чтобы откатить неотправленное изменение.
Поиск использований
Теперь вы можете искать использование объектов базы данных в исходном коде других объектов баз данных. Например, вы можете узнать, какие процедуры, функции, отображения и триггеры используют выбранную таблицу.
Clouds
Google Cloud Tools
Google представила собственный плагин для деплоя приложений в Google Cloud. Позже этот плагин полностью заменит плагин JetBrains для работы с Google App Engine.
OpenShift Origin (V3)
Плагин для работы с OpenShift теперь поддерживает новую версию OpenShift.
Toolbox App
Не забудьте взглянуть на Toolbox App — новое десктопное приложение для удобной установки и обновления любых IDE от JetBrains.
Это вкратце все, что команда успела сделать за 4 месяца, не считая багфиксов.
Подробности, скриншоты и видео о релизе можно найти на странице What’s New (на английском). Там же можно скачать обновление.
Как всегда, буду рад ответить на любые вопросы.
Комментарии (124)
moxnoryl
22.11.2016 17:12+5Спасибо за такой удобный инструмент для работы
andreycheptsov
22.11.2016 17:13+3Передам команде. Вам спасибо за фидбек :)
handicraftsman
22.11.2016 17:49+1На чём написаны IDE?
TheKnight
22.11.2016 17:30Приветствую! Сразу вопрос — а возможно ли как то переключиться на старый вид иконок? Непривычно(
А еще хотелось бы узнать, как вы пишите тесты на такую сложную функциональность как мультикурсор или же асинхронное автодополнение. Сам пока не разобрался, а хочется(
Ну и спасибо за новую версию) Функциональности отмены коммита ждал три месяца, как начал активно пользоваться Windows для разработки. На Linux все же из консоли достаточно просто отменить коммит, тем более она всегда под рукой.andreycheptsov
22.11.2016 17:42+3Иконки переключить на старые нельзя. Непривычно, это правда. Однако привыкнуть можно очень быстро (из своего и опыта коллег).
По поводу тестов, наверное будет проще посмотреть по коду: https://github.com/JetBrains/intellij-community/blob/master/platform/platform-tests/testSrc/com/intellij/openapi/editor/EditorMultiCaretTest.java
и другие тесты: *EditorMultiCaret*TestTheKnight
22.11.2016 17:50+2О! Спасибо! Почему то в упор их не мог найти. Ну, теперь то будет чем заняться скучными вечерами)
staticlab
22.11.2016 21:41Извините, но многие тоже недовольны: https://youtrack.jetbrains.com/issue/IDEA-162686 Зачем вообще вы их решили поменять?
mosinnik
23.11.2016 13:12Я, как автор таска https://youtrack.jetbrains.com/issue/IDEA-162686, прошу проголосовать неравнодушных за возврат иконок.
Для меня (как и для минимум еще 19 не поленившихся проголосовавших человек) новые иконки слишком плохи: в основном на них тяжело концентрировать внимание, особенно это критично при попытке отличить папки и пакеджи. К тому же иконки части типов файлов теперь почти неразличимы.
Что мешает добавить опцию для переключения между старыми и новыми иконками?andreycheptsov
23.11.2016 13:14Спасибо за конструктивный тикет. Уверен команда UI обратит на это внимание. Если главную проблему решить, делать два сета иконок не придется.
staticlab
23.11.2016 20:20А зачем делать два сета иконок, если старый у вас уже был, а новый уже есть?
DragonFire
24.11.2016 16:42Проблема не в том что он уже был, а то что придется любые новые иконки поддерживать (т.е. рисовать) для двух сетов, а не одного. Тоже самое справедливо при изменении иконок.
lany
23.11.2016 02:49+2На Linux все же из консоли достаточно просто отменить коммит, тем более она всегда под рукой.
Что мешает поставить коммандлайновый гит на винде? Там всё так же работает. Какой-нибудь
git reset --hard HEAD^
без проблем выполнится.TheKnight
23.11.2016 12:31Что мешает поставить коммандлайновый гит на винде?
Поставить командлайновый гит на винде ничего не мешает. Мешает большое количество инструментов вместо одного. На Linux я могу пойти по ssh на удаленный сервер, написать и исполнить маленький AWK скрипт по обработке логов/данных, закоммитить или же отменить изменения, собрать проект используя одну и туже консоль. В Windows к сожалению не так, приходится для каждой задачи использовать свой инструмент — Putty, Cygwin, Git Bash, IntelliJ IDEA. Получается слишком много окон под каждую задачу. А это несколько путает и мешает. Поэтому уменьшение количества инструментов, в которых я работаю одновременно — благо.
Еще одна проблема, которая есть на Windows — эстетическая. Почему то все терминалы, которые я видел, вызывают у меня некое отторжение. Шрифты не настроить, цветовую схему не настроить. Кошмар, да и только :)
В общем то, я почти уверен, что большую часть проблем можно решить перейдя на Windows 10 и используя Linux-подсистему. Но есть два но:
1) Я не проверял работоспособность данного решения для всех своих задач. Для части это работает, если верить информации в интернетах.
2) На рабочих компьютерах это не всегда возможно. Я сейчас использую Windows 7 на рабочем компьютере и обновление пока не светит.k12th
23.11.2016 12:49+2Из git bash можно и зайти по SSH и выполнить скриптик на AWK. IDEA можно настроить использовать именно его вместо cmd.exe (хотя в последней версии с этим проблемка, см. мой комментарий). Шрифты и цвета там настраиваются.
Ощущения все равно немного не те, конечно (tmux, например, не работает), но уже почти можно жить. Под Win7 все благополучно работает, не надо ждать милостей от MS.
Yulaw
23.11.2016 17:41+1Рекомендую попробовать ConEmu для Windows, умеет запускать из под себя любую среду — git bash, cmd, power shell, wls bash etc.
Есть возможность поставить нормальные шрифты.
Больше у меня нет проблем с зоопарком окон
23derevo
22.11.2016 17:35andreycheptsov, а что со сьеррой?
andreycheptsov
22.11.2016 17:42+1Поддерживается с 2016.2.5
23derevo
22.11.2016 20:14можно смело обновляться?
andreycheptsov
22.11.2016 20:41+1Есть мелкие баги, но ничего серьезного. Основные проблемы были пофикшены.
artspb
23.11.2016 00:00+1У нас много кто на Sierra обновился, в том числе и я. Очевидных проблем нет, все работает.
bromzh
23.11.2016 13:25+1Обновился на сиерру почти сразу после выхода. Всплыла проблема с прокруткой на тачпаде в Java-приложениях и Idea в частности. Ребята из JetBrains очень оперативно выпустили пропатченную версию JDK, за что им большое спасибо. Чуть позже они включили эту версию JDK в сами IDE. Сейчас проблем на сиерре не наблюдаю.
voddan
22.11.2016 18:15+1Планируется ли дальше улучшать алгоритм для git diff и git merge?
Например часто встречается проблема при мердже двух блоков кода когда последняя скобка не входит в дифф:
<<< if(true) { foo() === for(int i : ints) { boo() >>> }
Это очень мешает визуально и и не позволяет корректно включать оба блока кода. Но такую ситуацию можно разрешить имея AST. Ведется ли работа в этом направлении?
andreycheptsov
22.11.2016 19:08По поводу второго: проще всего завести 2 папки через `git worktree` или аналог и просто не переключаться между ветками. Заодно и кеши компиляции сохранятся.
По поводу первого: в будущем да, но пока не ясно когда.andreycheptsov
22.11.2016 19:13По поводу второго
Это относится к другому комментарию. Прошу прощение.
beTrue
22.11.2016 19:31+6Коллеги, большое спасибо вам за проделанную работу, вы очень крутые!!!
Ghedeon
22.11.2016 20:20+9Так-то у меня характер нордический, не сентиментален и скуп на комплименты, но IDEA это что-то уникальное. Каждый раз, когда думаешь, что дальше некуда, и надеешься, что спустя 7 лет узнал хоть половину фич, прилетает ушат обновлений и ты опять хлопаешь глазами: «Хуясе, и так можно?!».
cold147
22.11.2016 22:09Простите, но есть ли какие то новости по поводу следующего бага?
https://youtrack.jetbrains.com/issue/IDEA-157100
Уже почти полгода висит :(
DeLuxis
23.11.2016 10:27Не совсем понял по лицензии.
Если я сейчас покупаю новую лицензию на месяц, то смогу ли я продолжать пользоваться IDE без обновлений после истечения срока подписки?
И что будет если через полгода я снова куплю лицензию на месяц? IDE обновится? Покупать придется по полной цене?artspb
23.11.2016 10:43Если Вы купите подписку на месяц, то по истечении ее срока пользоваться IDE будет нельзя. Подписка на год дает возможность пользоваться IDE (версией на момент покупки) и после того, как срок подписки истек.
andreycheptsov
24.11.2016 18:57+1Если покупать по-месячно в течении года, вы получаете возможность пользоваться IDE (версией на момент покупки) и после того, как срок подписки истек
shishmakov
23.11.2016 11:50Не написано, поправлен ли Debug при работе с JS в Nashorn?
Вот ваша новость, что когда-то вы это сделали: https://blog.jetbrains.com/idea/2014/03/debugger-for-jdk8s-nashorn-javascript-in-intellij-idea-13-1/
а позже (в 2015 вроде бы) версии сломали.
osiykm
23.11.2016 13:17Как настроить, чтобы ctrl +s на пустой строке не сбивало табуляцию курсора?
До ctrl +s
после
просто с моей привычкой сохраняться после каждого чиха я задолбаюсьBringoff
23.11.2016 13:35+2Settings -> Editor -> General. Но ведь идея же автоматом сохраняет, зачем жать постоянно?
Maccimo
23.11.2016 17:52Но ведь идея же автоматом сохраняет, зачем жать постоянно?
«Мне проще штраф заплатить, чем руку сбивать» (из анекдота)
Большинство программ, к счастью, не пытается быть умнее пользователя и сохраняться там нужно явно.Bringoff
24.11.2016 08:44к счастью
Ага, я когда только пересел на линукс, еще не настроил до конца Android Studio (автосохранение по таймеру не поставил), она у меня зависла, пришлось прибить, и я потерял несколько десятков строк кода. Повезло, что не больше. А такое может быть с любой программой, которая "не пытается быть умнее пользователя".
lany
24.11.2016 08:56+4В таких случаях, кстати, можно в Local History порыться, вдруг там что осталось.
mad_nazgul
23.11.2016 13:18+1Привет!
А зачем сохранение пароля к БД в DataBase plugin сломали?
Хотел перейти, пришлось откатиться. :-)moscas
23.11.2016 13:53Можете пожалуйста подробней описать? Какая СУБД? Если можно, скриншот.
mad_nazgul
23.11.2016 16:50А что описывать.
В 2016.2 DataSource к БД PostgreSQL.
При переносе в 2016.3 они перестали работать.
Причем если вводишь пароль и не нажимаешь OK или Apply, то TestConnection срабатывает.
Если нажать OK или Apply, то пароль «сбрасывается».
Прям сейчас посмотрел в 2016.2 работает, в 2016.3 — нет.
Зачем сломали?Borz
23.11.2016 17:01и следом:
0) какая ОС
1) если Linux, какой DE
2) скрины настроек перед нажатием "OK" и сразу после
3) в файл idea.log что пишется?
например у меня сперва проблема решилась в рамках этого баг-репорта, хотя потом возникла другая бага, которую, как временную заплатку закрыл через "use.linux.keychain=false"
mad_nazgul
24.11.2016 07:07+1OS Kubuntu 16.04
Служба технической поддержки помогла, и да ч/з «use.linux.keychain=false» заработало.
Но вопрос, то не в этом.
Зачем сломали, то что работало?
Судя по баг-репортам баг известен, зачем его в релиз выпускать?!Borz
24.11.2016 08:22с этим согласен — в релиз подобный баг выпускать нельзя было.
И если нельзя было выпилить из кода, то можно было просто в релизе искуственно взвести флаг "use.linux.keychain" на время, пока не исправят ошибку.
renskiy
23.11.2016 13:23-5С каждой новой версией новые баги :( Когда уже начнете писать авто-тесты? Буквально на первом же файле с кодом увидел следующие ошибки (IDEA + Python plugin):
1. следующее регулярное выражение помечается как неверное:
re.compile('(?P<var>[\'"])(.*?)(?P=var)')
2. Еще вот такая штука, которая нормально работала до этого:
if isinstance(var, MyType): if isinstance(var, SubclassOfMyType): # здесь IDE ругается, мол у MyType нет такого метода var.subclass_of_my_type_method()
lany
23.11.2016 14:23В багтрекер написали?
renskiy
23.11.2016 15:21-8Писать о каждом баге в багтрекер? Я плачу за продукт и при этом сам же его тестировать должен? Нет уж, я считаю, что тестировать и заводить баги должна сама компания, причём прежде, чем выпускать продукт на рынок. В конце концов, IDE призвана повышать продуктивность, экономить время и нервы, а выходит часто как раз наоборот.
PS: про утечки памяти наверно уже и баги заводить бесполезно, сталкиваются с этим все, а воз и ныне там.Maccimo
23.11.2016 18:27+7Если о багах не писать, то о них никто и не узнает.
renskiy
23.11.2016 19:06Сложно поспорить с вашим аргументом. Но это не повод возлагать задачи по тестированию и нахождению багов на своих пользователей, тем более лояльных (пока) пользователей.
Borz
23.11.2016 19:44никто не предлагает их вам искать целенаправленно. Но если уж так получилось, что нашли, что мешает вам сообщить о найденном? Вдруг, кроме вас на этот баг никто не натыкается?
renskiy
23.11.2016 19:59Не надо подменять контекст. Речь же идет не о редких багах, на которые нарываешься в каких-то уникальных случаях, или о багах в новом функционале. Я говорю о том, что с продуктами Jetbrains с выходом новой версии очень часто сталкиваешься с поломками в существующем и часто используемом функционале — это совсем другое, и за такое надо испытывать по меньшей мере большой стыд.
poxu
24.11.2016 10:11+2На составление хорошего баг репорта свободно уходит до половины дня. Очень хотчется сообщать обо всех багах и даже их самостоятельно фиксить, но "до половины дня" всё портит.
andreycheptsov
23.11.2016 18:17+2Первая: https://youtrack.jetbrains.com/issue/PY-21575
Вторая пока не воспроизвеласьrenskiy
23.11.2016 18:59Хм, в синтетическом случае у меня тоже не воспроизвелась. Однако в реальном примере действительно не работает. Если у вас есть время и желание разобраться, то вот конкретное место, где это воспроизводится точно: https://github.com/renskiy/fabricio/blob/swarm/fabricio/docker/service.py#L194 ( строчка «option.get_remove_values,»)
lany
24.11.2016 06:22+2Проблема в том, что в авто-тестах как раз обычно синтетические случаи. Так что "Когда уже начнете писать авто-тесты?" ко второму случаю не очень относится :-)
renskiy
24.11.2016 06:53Каждый сложный случай можно разложить на серию простых — это простое математическое правило работает в большинстве случаев :) А если каждый простой случай покрыт автоматическими тестами, то и в сложных случаях проблем возникать не должно.
lany
24.11.2016 07:06+2Тут подойдёт такая гифка: https://twitter.com/thepracticaldev/status/687672086152753152
Вообще не знаю как в других областях, но в случае программного кода весьма сложно придумать тесты на все случаи жизни. Код можно написать миллионом разных способов. При том что IDEA должна адекватно реагировать на любой некомпилирующийся код или даже компилирующийся, но странный (недописанный, например). И часто нормальная работа частных случаев совсем не гарантирует нормальную их интеграцию.
Nekitos
23.11.2016 17:41+3Все никак не спрошу.
Есть такая проблема в IntelliJ IDEA что из Project Tree пропадают классы, директории, etc. и на месте этого просто пустая линия. Это как-то чинится самостоятельно или уже существует тикет на это. Не знаю, может я плохо искал ишью/гуглил.
rauch
23.11.2016 22:31> «Как всегда, буду рад ответить на любые вопросы.»
Вот у меня вопрос — вы наверняка тестировали свою реализацию многострочного редактирования — какие официальные ограничения? Сколько строчек одноврменно можно редактировать?
//мой вопрос вызван лютейшими тормозами всего UI, когда пытаешься отредактировать, скажем, 1000 строчек одновременно — хочется сделать, скажем, insert into blabla() values()
Ни купленная идея, ни купленная 0xDBE/Natasha/DataGrip не умеют это делать… ваш продукт тупо зависает на попытке отрендерить все эти строки, редактировать вообще невозможно. Памяти много, вычислительных ресурсов много… однако ваши продукты так работают(по-видимому однопоточно для этой части функционала), что UI становится неработоспособнымlany
24.11.2016 06:25На 2016.3 уже проверяли, лучше не стало? По-моему, там что-то пытались ускорить.
rauch
24.11.2016 09:20Не-а, лучше не стало.
Буквально вчера понадобилось подготовить набор INSERT стейтментов для ~4k записей… Вставил я такой экспорт в DataGrip — загрузка ЦП на 14% одного из ядер и весь UI повис минут на 8, после чего любые действия в редакторе вызывают лютейшие тормоза.
Пришлось открывать кучу консолей и нарезать данные по 500 штукlany
24.11.2016 09:25+1Вообще такие задачи появились задолго до многокурсорных редакторов. Есть много способов с ними справится. Например, раскопировав болванку выражения необходимое количество раз (набрать одну строчку, скопировать, вставить 10 раз, потом скопировать всё, вставить снова — уже сто строчек, потом снова скопировать всё, вставить — уже 1000). Потом выделить прямоугольным (блочным) выделятором и вставить в нужное место. И далее поиском с заменой с использованием регулярных выражений привести в чувство.
Или если уже есть данные (скажем, в виде CSV-файла), то можно просто искать регулярное выражение
^
(начало строки) и заменять на нужный префикс INSERT-бла-бла. Ещё можно макросы записывать.
В общем, не оправдываю тормоза DataGrip, но задачу можно решать эффективно и без этой фичи.
andreycheptsov
24.11.2016 18:00+2https://youtrack.jetbrains.com/issue/IDEA-135620
В 2017.1 должно быть получше.
Летать конечно не будет, и во много потоков не станет ничего делать, но будет сильно лучше чем сейчас, это точно.lany
25.11.2016 16:39+2Насколько я понимаю, там улучшение довольно кардинальное: там была квадратичная сложность каждого действия от числа кареток, а стала линейная. Для тысячи кареток это должно быть очень заметно.
@rauch я почему-то думал, что в 2016.3 попало. Но можете попробовать собрать Community Edition из сорцов на гитхабе из мастер-ветки и попробовать там :-) Конечно, SQL там нет, но для теста непринципиально.
radistao
24.11.2016 12:08+4А можно в следующих пресс-релизах гифки делать медленнее? Или видяшками, которым можно остановить, а то не успеваю понять, что было и что стало.
Akuma
24.11.2016 21:00+2Да, с иконками вас задолбают в ближайшее время :)
Спасибо за Toolbox, интересная штуковина.
Bringoff
25.11.2016 10:35Есть такая штука в Android Studio (и в этой версии IDEA все еще присутствует), которая очень мучает — при выходе новой версии Android SDK ее исходники появляются далеко не сразу, и если в проекте начать ее использовать, при попытке просмотреть исходники какого-то класса SDK идея будет искать последнюю версию кода и, естественно, не находить. В результате все методы выглядят как
throw new RuntimeException("Stub!");
. Хотелось бы иметь возможность выбрать версию исходников, которые смотреть, вручную.andreycheptsov
25.11.2016 16:22В Project Structure | Modules можно вручную попробовать указать исходники для нужного модуля. Если я правильно понял проблему.
Bringoff
25.11.2016 19:27Почему-то я там не вижу, где можно вручную указать, какие исходники Android SDK надо использовать. Само SDK у меня выбрано 25, а исходники хочу от 24, допустим, просматривать при необходимости.
Throwable
25.11.2016 22:03Не подскажете, кто теперь насильно вставляет проверки на null для @Nonnull параметров? Это компилятор или IDE? Сейчас апдейтнулся и сломалась половина тестов с ошибкой:
Caused by: java.lang.IllegalArgumentException: Argument for @Nonnull parameter 'correlationId' of services/storage/CorrelationStorage$Correlation. must not be null
at services.storage.CorrelationStorage$Correlation.$$$reportNull$$$0(CorrelationStorage.java)
Просто есть куча immutable классов с публичным конструктором и параметрами @Nonnull. Чтобы работали всякие JPA и сериализаторы, добавляю приватный конструктор по умолчанию, который вызывает публичный с нулами:
class Bean { public final String param; public Bean(@Nonnull String param) {this.param = param;} @SuppressWarnings("all") private Bean() {this(null);} }
До 16.3 все работало. Где отключается?
msd
26.11.2016 01:04Стоит проверить вот эту опцию:
«File | Settings | Build, Execution, Deployment | Compiler» — «Add runtime assertions for not-null-...»dougrinch
26.11.2016 15:09+4Вот это да, идея позволяет себе компилировать код в нечто, отличающееся от того, что потом будет залито в прод. Свинство! Хоть отключили бы по дефолту.
4ex0V
30.11.2016 12:10Скажите, пожалуйста, можно ли как-то включить инспекцию повторного вызова set?
action.setId(); .. action.setId();
wwarlock
01.12.2016 10:05Спасибо за статью.
Но когда выходят новые версии, то баги не только чинятся, но и добавляются новые.
Вот как раз сейчас пытаюсь понять кому адресовать проблему.
Есть такой плагин QAPlug, который прекрасно работает на 2016.2.*, но с выходом 2016.3 начались чудеса вида
ClassNotFoundException: com.intellij.profile.ApplicationProfileManager
Bringoff
01.12.2016 10:54Если плагин сторонний, то обращаться к разработчику плагина, конечно же. Обратной совместимости в sdk для плагинов, насколько я понял, не особо предусмотрено.
wwarlock
01.12.2016 11:00Я это прекрасно понимаю и обращусь к разработчику обязательно.
Я сейчас просто указал, что в данном случае ситуация, когда плагин не менялся, но поменялось окружение.
TheKnight
01.12.2016 20:13+1Насколько я помню, этот плагин не обновлялся очень давно. Исходников в открытом доступе я не нашел. С учетом того, что используемые в нем версии PMD и CheckStyle падают при наличии стримов с лямбдами в коде — я бы задумался о необходимости его использования.
SmartBye
Не очень понимаю устройство вашей главной IDE. В ее поставку уже входит функциональность WebStorm или нет? Вроде открывает проекты на webpack, babel, es6, но в тоже время видит не все, что видит WebStorm, например нодовские плагины.
Спрашиваю потому, что для поддержки Ruby она требует установки соответствующего плагина и без него не видит ничего.
На сколько полно Ultimate версия поддерживает функциональность ваших сторонних IDE?
andreycheptsov
Да. Но Node.js и Angular доступны как отдельные бесплатные плагины для Ultimate. Тоже самое применительно к Ruby, PHP и Python.
poxu
Есть связанный вопрос. Я недавно проапгрейдился с perpetual license на Ultimate текущую. И там есть нелохая скидка когда вот так лицензию меняешь. Была опция приобрести пакет из всех продуктов Intellij, но я пожадничал.
Собственно вопрос. Предусмотрены ли скидки при покупке пакета из всех продуктов, если у меня уже есть лицензия Ultimate и я просто хочу её проапгрейдить?
andreycheptsov
Я бы посоветовал задать вопрос напрямую sales@jetbrains.com. Уверен они быстро и подробно все расскажут.
andreycheptsov
Если коротко, то предусмотрены.
poxu
Спасибо :). Сразу за оба ответа :).
Borz
входят, но обновления идут с небольшими запозданиями. Например новые фичи для работы с базами данных сперва появятся и обкатаются в DataGrip, а чуть позже в IDEA Ultimate.
ookami_kb
А с переходом на rolling-релизы это запоздание не исчезло? Сейчас в основном использую PyCharm, но хочется попробовать Idea для react-native. Насколько сейчас это запоздание актуально? Стоит ли пересесть полностью на идею?
Borz
вроде бы не исчезло, но я сужу по EAP версиям тех же DataGrip и IDEA