Pull to refresh

Consulo: Code Coverage, Unity3D и прочие изменения

Reading time 3 min
Views 10K
Для тех кто пропустил мои посты:Consulo — это форк IntelliJ IDEA Community Edition, который имеет поддержку .NET(C# на текущий момент, и на этот сектор пока идет большой акцент), Java.

В этой мини-статье я поделюсь с вами с тем, что удалось сделать за последние 2 месяца.





.NET


Code Coverage (with OpenCover)


Начиная с января, появилась поддержка покрытие кода (при помощи OpenCover для Microsoft .NET Фреймворка). Позволяет посмотреть покрытие кода как при обычном запуске приложения, так и для NUnit тестов. Покрытие кода использует OpenCover, который увы не работает на Mono. Насчет Mono Coverage пока неясно. Покрытие кода работает на простейшем уровне, нужны поправки в платформу, которые пока только в планах.


NUnit with Mono Debugger


Очень давно был добавлены Mono Debugger и поддежка тестов NUnit. Но, из-за бага, запуск NUnit под Mono был невозможен. После исправления этого бага, была также добавлена поддержка Mono Debugger во время запуска тестов.
Для Microsoft .NET дебаггера пока нет. Соответственно и отладка тестов пока не работает.


Unity3D


Message methods


В Unity существуют методы типа Messages, которые, по сути, ничего не перегружают, но при выполнении они вызываются самим движком Unity, через reflection. В то же время, можно случайно переименовать метод, и код спокойно скомпилится, но при этом метод перестанет работать. Чтобы избежать этого, напротив метода была добавлена маркер-«подсветка». При наведении на который, можно увидеть краткое описание.


Adding methods via completion


Также была реализована поддержка добавления этих методов через completion. Есть возможность добавить два вида методов: parameterless и\или полной сигнатурой.


New Import Mode


Ранее не было поддержки импорта Unity-проектов. По сути мы создавали проект поверх проекта юнити и добавляли все вручную. Также были проблемы с тем, что в проекте были не все необходимые библиотеки. Сейчас же, реализована новая система импорта проектов — гораздо лучше понимает структуру Unity проекта, и проблема с импортом библиотек Unity SDK (или плагинов) решилась. Пока что старый и новый способ «импорта» сосущестуют вместе, но, в ближайшем будущем, старый способ будет удален.


K Runtime(ASP .NET vNext)


Недавно у меня появился интерес к ASP .NET 5 фреймворку, что вылилось в базовую поддержку «K» проектов. Была добавлена поддержка определения SDK рантайма, зависимостей, анализа C# файлов, запуск. Увы, в данный момент, поддержка Nuget очень скромная и приходится хардкодить зависимости чтобы анализ кода прошёл верно. Но, по большей степени, это пока эксперимент. До полноценной поддержи ASP.NET платформы еще далеко и я не думаю им в данный момент всерьез заниматься.
Предвкушая вопросы: Нет, реализация поддержи Razor шаблонов пока не планируются.


C#


Static Vs Instance


Ранее completion не понимал, где можно использовать Static & Instance методы, и можно было написать аля String.GetHashCode() — и код не подсвечивался ошибкой, но при этом он не компилился.
Сейчас completion верно определяет контекст элемента. Также были добавлены проверки CS0120 & CS0176 которые отвечают за валидацию этих вызовов. Но эти исправления создали интересный баг 208, который пока не исправлен.


Code Style


В январе был переработана поддержка CodeStyle. Появились много привычных опций в Wrapping & Spacing.


Expected type system


Теперь completion знает о том какой тип он ожидает, и сортирует нужные элементы повыше. Также эта поправка каcается атрибутов, при вводе текста внутри '[]' все атрибуты идут на начале списка.


План на будущее


Как бы смешно это не звучало, но я буду продолжить делать то, что делал. Основная проблема сейчас в том, что, на текущий момент, у меня нету по-просту тестеров или людей которые хотят мне помочь либо с кодом, либо с хотя-бы с сайтом. С меня никакой дизайнер и поэтому у меня не получается придумать достойный стиль для сайта или сплеш. Все приходится делать самому и, при этом, успевать ещё как-то работать.
Tags:
Hubs:
+27
Comments 23
Comments Comments 23

Articles