Время от времени мы возвращаемся к проектам, которые уже проверяли ранее с помощью PVS-Studio и писали про это статьи. Делать это интересно по двум причинам. Во-первых, чтобы понять, насколько лучше стал наш анализатор. Во-вторых, чтобы отследить, обратили ли авторы проекта внимание на нашу статью, а также на отчет об ошибках, который мы им обычно предоставляем. Конечно, ошибки могут быть исправлены и без нашего участия. Но всегда приятно, когда именно наши усилия помогают сделать какой-то проект лучше. Не стал исключением и Roslyn. Предыдущая статья о проверке этого проекта датируется 23 декабря 2015 года. Это довольно давно, учитывая путь, который за это время проделал в своём развитии наш анализатор. Дополнительный интерес лично для нас Roslyn представляет ещё и тем, что на нём базируется ядро C# анализатора PVS-Studio. Таким образом, мы очень заинтересованы в качестве кода этого проекта. Устроим ему повторную проверку и выясним, что же нового и интересного (но будем надеяться, что ничего существенного) там сможет найти PVS-Studio.
Читать полностью »
Рубрика «roslyn» - 2
Проверяем исходный код Roslyn
2019-04-03 в 9:50, admin, рубрики: .net, C#, compiler, open source, pvs-studio, roslyn, roslyn project, Visual Studio, Блог компании PVS-Studio, КомпиляторыАдаптируем AutoMapper под себя
2019-03-23 в 9:33, admin, рубрики: .net, automapper, C#, roslyn, ПрограммированиеAutoMapper один из основных инструментов применяемых в разработке Enterprise приложений, поэтому хочется писать как можно меньше кода определяя маппинг сущностей.
Мне не нравится дублирование в MapFrom при широких проекциях.
CreateMap<Pupil, PupilDto>()
.ForMember(x => x.Name, s => s.MapFrom(x => x.Identity.Passport.Name))
.ForMember(x => x.Surname, s => s.MapFrom(x => x.Identity.Passport.Surname))
.ForMember(x => x.Age, s => s.MapFrom(x => x.Identity.Passport.Age))
.ForMember(x => x.Number, s => s.MapFrom(x => x.Identity.Passport.Number))
Я бы хотел переписать так:
CreateMap<Pupil, PupilDto>()
.From(x=>x.IdentityCard.Passport).To()
Как Microsoft переписала компилятор C# на C# и сделала его открытым
2018-10-18 в 19:44, admin, рубрики: .net, C#, F#, open source, roslyn, Windows 8, компилятор, Компиляторы, философия MicrosoftАвтор статьи — Мэдс Торгерсен, ведущий архитектор C# в Microsoft
Проект Roslyn
Roslyn — это кодовое название, которое закрепилось за open-source компилятором для C# и Visual Basic.NET. Проект начинался в самой глубокой тьме последнего десятилетия корпоративной жизни Microsoft — и завершился как проект с открытым исходным кодом, кросс-платформенный, публичный универсальный движок для C# (и VB, что я приму как данность в остальной части статьи).
Первые разговоры о проекте, который впоследствии станет известен как Roslyn, уже шли, когда я пришёл на работу в Microsoft в 2005 году — незадолго до выпуска .NET 2.0. Шёл разговор о переписывании C# на C#. Это нормальная практика для языков программирования — доказательство зрелости языка. Но была и более практичная и важная мотивация: мы, создатели C#, сами не программировали на C#, мы программировали на C++! Если же ежедневно программировать на C#, то вы меняете своё мнение: великая сила работы на том инструменте, какой разрабатываете (dogfooding).
Читать полностью »
Использование Roslyn для редактирования игрового контента
2017-12-22 в 11:39, admin, рубрики: .net, C#, code analysis, Gamedev, roslyn, tools programming, разработка игрБолтовня ничего не стоит. Покажите мне код.
— Linus Torvalds
Всем привет! Я работаю программистом в маленькой (но гордой) gamedev-конторе. В последние несколько лет фирма выпускает casual игры под мобилки в жанре match3. Пишем мы на C# (что не может не радовать) и не используем Unity (ну почти). Так сложилось, что основная зона моей ответственности — gameplay и UI. А ещё я без ума от C#’а и его экосистемы. Сегодня хочу рассказать, как у меня получилось применить инструмент анализа и модификации кода Roslyn для редактирования игрового контента. Кому интересно — прошу под кат.
Примечание. Разделы, в которых разбирается способ реализации и приводятся примеры кода отмечены с помощью [технический раздел] в заголовках. Если нет желания погружаться в детали на таком уровне, просто пропускайте их. На общем понимании идеи это не скажется.
Читать полностью »
Как написать свой сваггер и не пожалеть об этом
2017-11-27 в 8:20, admin, рубрики: .net, C#, roslyn, кодогенерация, компилятор, Компиляторы, Проектирование и рефакторинг, рефакторинг, Совершенный код
Как-то раз моему коллеге в беклог упала задача «хотим организовать взаимодействие с внутренним REST-api так, чтобы любое изменение контракта сразу приводило к ошибке компиляции». Что может быть проще? – подумал я, однако работа с получившимся кактусом вынудила заняться многочасовым курениям документации, спуску от привычных концепций оверинжинеринга «налепим побольше интерфейсов, добавим максимум косвенности, и приправим всё это DI» до переезда на .Net Core, ручной кодогенерации промежуточного ассемблера и изучения нового компилятора C#. Лично я для себя открыл много интересного как в рантайме, так и в структуре самого компилятора. Думаю, некоторые вещие уже знают, а некоторые станут полезной пищей для размышления.
Анализаторы Roslyn: повадки и места обитания
2017-11-20 в 19:11, admin, рубрики: .net, C#, roslyn, Visual Studio, анализаторы, никто не читает теги, теги и правило 34На днях объяснял одному товарищу что такое анализаторы Roslyn и как их писать. Ответ получился массивным, и я решил вынести его в отдельную публикацию.
Что такое анализаторы Roslyn? Если коротко — это отличный способ писать рефакторинги вроде Решарперовских. Постоянно встречаете одну и ту же ошибку в процессе ревью? Напишете анализатор с фиксером и забудьте про эту ошибку. Техническая сторона довольно проста, для первоначального знакомства отлично подойдут вот эта статья, вот это видео, вот эта серия постов, и вот этот туториал. Я же попытаюсь описать грабли моменты, которые лично у меня вызывали затруднение.
Читать полностью »
Борьба с хардкодами при помощи статических анализаторов С#
2017-08-22 в 7:11, admin, рубрики: .net, C#, roslyn, Анализ и проектирование систем, Программирование, Совершенный код, статический анализ кодаВ этой статье я расскажу, как мы написали собственные анализаторы кода и чистим с их помощью нашу кодовую базу .net от наиболее острых / частых косяков. Главный посыл — сделать это довольно просто, не бойтесь писать свои анализаторы для борьбы с именно вашими багами. Вторичный посыл — попробуйте наши анализаторы и сообщите о результатах. Полное руководство я писать не буду, их довольно много в интернете, а вот небольшой обзор, что это как и с какими проблемами я столкнулся, надеюсь, окажется вам полезным.
Читать полностью »
Поддержка Visual Studio 2017 и Roslyn 2.0 в PVS-Studio: иногда использовать готовые решения не так просто
2017-05-03 в 8:33, admin, рубрики: .net, C#, msbuild, plugin, pvs-studio, roslyn, Visual Studio, visual studio 2017, Блог компании PVS-Studio, дьявол в деталях, разработка под windowsВ данной статье я хочу рассказать о том, с какими проблемами столкнулись разработчики PVS-Studio при поддержке новой версии Visual Studio. Кроме того, постараюсь ответить на вопрос: почему поддержка нашего C# анализатора, основанного на «готовом решении» (в данном случае, это Roslyn), оказывается в некоторых ситуациях более затратной, чем нашего «самописного» С++ анализатора.
Читать полностью »
Дивный новый Roslyn: Кому нужны собственные анализаторы кода и скриптинг на C#?
2017-02-20 в 14:19, admin, рубрики: .net, C#, roslyn, Блог компании JUG.ru Group, Компиляторы, Скриптинг, статический анализ кодаВ мире .NET все прекрасно — платформа движется в правильном направлении, новые технологии обкатываются и встают на ноги. В последнее время много разговоров про .NET/ASP.NET Core, и кажется, что все забыли про Roslyn, который предоставляет широкие документированные возможности по работе с кодом как во время рантайма, так и в процессе разработки.
Чтобы исправить это, мы взяли интервью у Filip W, Microsoft MVP, контрибьютора Roslyn и просто одного из наиболее популярных в мире ASP.NET блоггеров. Почему Filip считает, что изменения в новом С# могут пройти незамеченными, зачем писать собственные анализаторы кода, а также почему скриптинг на C# лучше, чем любом скриптовом языке?
Читать полностью »
«Хаос в .NET-мире — разумная цена за скорость развития платформы»: интервью с Андреем Акиньшиным (JetBrains)
2016-12-07 в 7:03, admin, рубрики: .net, BenchmarkDotNet, C#, microsoft, roslyn, без слайдов, Блог компании JUG.ru Group, метки: Rider, Без слайдов
Проект Rider (.NET IDE от JetBrains) дошёл до публичной EAP-версии — самое время подробно расспросить Андрея Акиньшина, одного из его разработчиков. Но Rider стал не единственной темой нового выпуска «Без слайдов». Помимо него, поговорили
- о библиотеке BenchmarkDotNet, которую разрабатывает Андрей
- о движении Microsoft к опенсорсу и кроссплатформенности
- об общем состоянии .NET-мира и, конечно,
- о .NET-конференции DotNext (которая, кстати, состоится в Москве уже в эту пятницу)
Как всегда, под катом есть полная расшифровка интервью.