Настало долгожданное событие. Мы выпустили релизную версию статического анализатора кода PVS-Studio 6.00, поддерживающего проверку C#-проектов. Теперь осуществляется проверка кода, написанного на следующих языках: C, C++, C++/CLI, C++/CX, C#. К выпуску шестой версии анализатора мы приурочили проверку открытого проекта Roslyn. Именно благодаря Roslyn в анализаторе PVS-Studio появилась поддержка C#, и мы очень благодарны компании Microsoft за реализацию и развитие этого проекта.
Читать полностью »
Рубрика «roslyn» - 4
Новогодний релиз PVS-Studio 6.00: проверяем Roslyn
2015-12-23 в 11:52, admin, рубрики: .net, bugs, C#, dotned, pvs-studio, roslyn, Visual Studio, Блог компании PVS-Studio, ошибки в программе, разработка под windows, статический анализ кодаАнализатор исключений на базе Roslyn-а
2015-03-24 в 6:32, admin, рубрики: .net, csharp, exception handling, roslynУже давно хотел поразбираться с анализаторами на основе Розлина. Тем более, что меня уже был опыт создания плагинов для Resharper-а (R# Contract Editor Extension), поэтому хотелось сравнить разные инфраструктуры и удобство использования. Есть идея переписать этот плагин с помощью анализаторов Roslyn-а, но я решил начать с чего-то попроще.
Цель недельного проекта была такая: сделать простой анализатор, который будет показывать типовые ошибки обработки исключений. Самые болезненные с моей точки зрения такие:
- Повторная генерация исключений с помощью throw ex;
- “Проглатывание” всех исключений с помощью пустых блоков catch {} или catch(Exception) {}.
- “Проглатывание” исключений в определенных ветках блока catch.
- Сохранение в логгах только сообщения ex.Message, теряя при этом потенциально важную информацию о месте возникновения исключения.
- Некорректное пробрасывание новых исключений из блока catch.
Пишем расширения c Roslyn к 2015 студии (часть 2)
2015-01-27 в 13:45, admin, рубрики: .net, resharper must die, roslyn, Visual Studio, я ненавижу парсер хабраЭта статья является продолжением первой части о написании расширений к студии с Roslyn.
Тут я буду описывать что делать, если мы хотим сгенерировать/поменять какой-нибудь код. Для генерации кода мы будем статические методы класса SyntaxFactory. Некоторые методы требуют указать ключевое слово/тип выражения/тип токена, для этого есть перечисление — SyntaxKind, который содержит все это вместе.
Хорошо, давайте для примера сгенерируем код, содержащий число 10. Это делается просто.
SyntaxFactory.LiteralExpression(SyntaxKind.NumericLiteralExpression, SyntaxFactory.Literal(10))
Я не шутил, когда говорил, что чтобы создать код проще всего распарсить строку. Благо, SyntaxFactory предоставляет кучу методов для этого (ParseSyntaxTree, ParseToken, ParseName, ParseTypeName, ParseExpression, ParseStatement, ParseCompilationUnit, Parse*List).
Но это не путь настоящего самурая.
Пишем расширения c Roslyn к 2015 студии (часть 1)
2015-01-26 в 19:14, admin, рубрики: .net, resharper must die, roslyn, Visual StudioДля начала, нам потребуется:
1. 2015 студия
2. SDK для разработки расширений
3. Шаблоны проектов
4. Визуализатор синтаксиса
4. Крепкие нервы
Полезные ссылки: исходники roslyn, исходники и документация roslyn, roadmap с фичами С# 6.
Наверное вас смутило, что вам потребуются крепкие нервы и вы хотите пояснения. Все дело в том, что весь API компилятора — это низкоуровненное кодогенерерированное API. Вы будете смеяться, но простейший способ создать код — это распарсить строку. Иначе вы либо погрязнете в куче нечитаемого кода, либо будете писать тысячи extension-методов, чтобы ваш код выглядел синтаксически не как полная кака. И еще две тысячи extension-методов, чтобы оставаться на приемлемом уровне абстракций. Ладно, я вас убедил, что писать Roslyn расширения к студии это плохая идея? И очень хорошо, что убедил, а то кто-то из читающих эту статью может написать второй ReSharper по прожорливости ресурсов. Не убедил? Платформа все еще сырая, бывают баги и не доработки.
Когда идентификатор не идентификатор (Атака монгольского разделителя гласных)
2015-01-25 в 21:08, admin, рубрики: .net, jon skeet, roslyn, Unicode, атака монголов, ненормальное программирование, Программирование
Идентификаторы (identifiers) – специальный термин спецификации C# отожествляющий собой всё к чему можно обратиться по имени, как например название класса, имя переменной и т.д.
Roslyn – компилятор C# кода, написанный на C#. Был создан взамен существующего csc.exe. Я обычно опускаю слово компилятор в данном тексте.
Для начала несколько вещей о которых вы могли не слышать:
- Идентификаторы в C# могут включать в себя escape-последовательности Unicode символов (как например u1234).
- Идентификаторы в C# могут включать в себя Unicode символы категории Cf (other, format), но при сравнении идентификаторов на идентичность эти символы игнорируются.
- Символ «Монгольский разделитель гласных» (U+180E) в зависимости от версии Unicode принадлежит либо категории Cf (other, format), либо категории Zs (separator, space).
- В .NET хранится свой собственный список Unicode категорий, независимый от оных в Win32.
- Roslyn является .NET приложением, и поэтому использует Unicode категории, прописанные в файлах .NET. Нативный компилятор (csc.exe) использует либо системные (Win32) категории, либо хранит в себе копию таблиц Unicode.
- Никакая из таблиц Unicode символов (ни .NET, ни Win32) точно следует какой-либо из версий стандарта Unicode.
- Компиляторы могут иметь баги.
Из всего этого вытекают некоторые проблемы…
Во всём виноват Владимир
Все началось с обсуждения на собрании технической группы ECMA на прошлой неделе. Мы рассматривали «нормативные ссылки», и в частности какую версию стандарта Unicode мы будем использовать. На тот момент спецификация ECMA-335 (4-ое издание) использует Unicode 4.0, а спецификация C# 5 от Microsoft использует Unicode 3.0. Я точно не знаю, учитывают ли разработчики компиляторов такие особенности. На мой взгляд было бы лучше, если ECMA и Microsoft не указывали конкретную версию Unicode в своих спецификациях. Пусть разработчики компиляторов используют самую свежую версию Unicode, доступную на текущий момент. Однако тогда компиляторы должны будут поставляться со своей личной копией таблицы Unicode, что немного странно, на мой взгляд.
Читать полностью »
Visual Studio + Roslyn = конфигуратор для 1С: Предприятие
2015-01-12 в 11:00, admin, рубрики: .net, 1c 8.3, roslyn, Visual StudioRoslyn позволяет C# проект преобразовать в открытый XML-формат конфигурации 1С: Предприятие. C#-проект при поддержке Visual Studio автоматически снабжается Intellisense, интерактивной проверкой синтаксиса и типов, рефакторингом, расширенным поиском по проекту, поддержкой XmlDoc. Настраиваемое расположение документов проекта на диске и более выразительный и экономный формат делает C#-проект на Visual Studio лучшим выбором в системах версионирования.
Понятно, что от чистой теории до реализации всех особенностей 1С очень далеко. Приведенный в статье пример обладает следующими ограничениями. В примере реализована поддержка нескольких типов объектов и нескольких часто встречающихся свойств. Атрибуты объектов могут быть одного типа, хотя 1С допускает составной тип. Трансляция кода в код 1С не поддерживается. Реализованы англоязычные наименования.
Roslyn: встреча .Net сообщества на CLRium #2
2015-01-08 в 9:33, admin, рубрики: .net, .net framework 4.6, clrium, CoreFx, roslyn, Блог компании Luxoft, ненормальное программирование Довольно долгое время я пытался изучить Roslyn, но как и все мы, столкнулся с единой проблемой: времени на это абсолютно не было. Как обычно решается этот вопрос? Мы идем на множество ресурсов и ищем доклады и статьи на интересующую нас тему и как по шаблону повторяем движения автора, который показывает как этим пользоваться. С чем мы сталкиваемся, когда ищем описания тем, предложенных на CLRium? Мы не находим ничего. Т.е., конечно, Google выдает что-то по запросам “Roslyn”, “Roslyn samples”, но все-таки это тысячу раз разжеванные примеры, и притом древние как мамонты по меркам выхода новых версий CTP. Это важно, т.к. наличие информации предполагает развитость той или иной инфраструктуры. А самая крутая и единственная статья по Roslyn на данный момент — это эта: Roslyn для автоматического перевода кода C# в 1С-код
Отсюда и возникли идеи рассказать на CLRium про Roslyn, RyuJIT, CoreFx, шаринг объектов между процессами и прочие вопросы, на которые сложно найти ответы в сети Интернет.
Читать полностью »
Roslyn для автоматического перевода кода C# в 1С-код
2014-12-10 в 5:54, admin, рубрики: .net, 1c 8.2, 1c:предприятие, roslyn, roslyn project, Visual StudioПоявилась идея посмотреть, как будет выглядеть объектно-ориентированный подход в 1С, язык которой очень ограничен в средствах и не предусматривает определение классов. Программа по автоматическому переводу определений классов C# в другой язык позволила бы менять генерируемый код по мере появления новых идей. Поиски средств реализации привели к проекту Roslyn – открытому компилятору C#.
Roslyn – это открытая платформа компиляции C# и Visual Basic. Roslyn выполняет два основных действия: строит синтаксическое дерево (парсинг) и компилирует синтаксическое дерево. Дополнительно позволяет анализировать исходный код, рекурсивно обходить его, работать с проектами Visual Studio, выполнять код на лету.
Обратите внимание, что на данный момент Roslyn в стадии Бета. Исходя из этого, со временем в компиляторе может что-то поменяться.
Читать полностью »
Как попробовать новую Visual Studio “14” CTP без установки?
2014-06-09 в 8:21, admin, рубрики: ASP.NET, azure, c++, Microsoft Azure, roslyn, Visual Studio, Блог компании Microsoft, облачные сервисы, метки: ASP.NET, azure, c++, roslyn, Visual Studio, облачные сервисы
Недавно была представлена предварительная версия следующего поколения Visual Studio под кодовым именем “14”. Visual Studio “14” CTP предлагает сегодня попробовать некоторые из тех функций и возможностей, которые будут доступны разработчикам в скором времени. Среди них:
- новые возможности C#, Visual Basic и Roslyn
- следующее поколение платформы ASP.NET
- следующее поколение компилятора C++11/14
Про некоторые новые возможности Visual Studio “14” CTP уже написал на Хабре (читать статью). Эта предварительная версия не имеет лицензии go-live и не должна применяться в коммерческой разработке, более того рекомендуется устанавливать ее отдельно от рабочего окружения и других версий Visual Studio.
Однако существует очень простой способ попробовать все фишки Visual Studio “14” CTP и без самостоятельной установки – использование готового образа VM в галереи Microsoft Azure.
Читать полностью »
Доступна превью новой версии Visual Studio, с Roslyn и C# 6
2014-06-04 в 3:53, admin, рубрики: .net, IDE, microsoft, roslyn, Visual Studio, Компиляторы, Программирование, метки: .net, c++, IDE, microsoft, roslyn, Visual Studio, компиляторы, Программирование
Сегодня Microsoft выпустила превью новой версии Visual Studio «14» Community Technology Preview. Скорее всего, эта версия выйдет в 2015-м году и будет называться Visual Studio 2015. (Не стоит путать этот релиз с недавним релизом Visual Studio 2013 Update 3 Preview.)
Основным нововведением «14» стало повсеместное использование платформы Roslyn — высококачественного расширяемого компилятора C# и Visual Basic с открытым исходным кодом. В обновлениях для VS 2013 уже использовались компоненты из Roslyn, но теперь он проник повсюду.
Помимо Roslyn, улучшения затронули возможности рефакторинга, ASP.NET vNext, поддержку C++11/14, а также другие приятные мелочи.
Читать полностью »