Доброго времени суток. В последнее время я много эксперементрировал с .Net 5 и его Source Generator-ами. И мне внезапно пришла идея как можно использовать Source Generator-ы для реализации "duck typing"-а в C#. Я не мог просто оставить эту идею. В итоге вышла, я бы сказал, чисто акамическая штука(никто не будет использовать это на проде, я надеюсь), но результат получился довольно интересен. Всем кому интересно прошу под кат!
Рубрика «roslyn»
«Duck typing» и C#
2021-01-05 в 7:12, admin, рубрики: .net, C#, roslyn, roslyn analyzers, roslyn source generators, ненормальное программированиеОживляем деревья выражений кодогенерацией
2021-01-01 в 20:27, admin, рубрики: .net, C#, expression trees, fody, linq, module initializer, roslyn, source generators, uno, Visual Studio, xamarin, деревья выражений, кодогенерация, рефлексияДеревья выражений System.Linq.Expressions
дают возможность выразить намерения не только самим кодом, но и его структурой, синтаксисом.
Их создание из лямбда-выражений — это, по сути, синтаксический сахар, при котором пишется обычный код, а компилятор строит из него синтаксическое дерево (AST), которое в том числе включает ссылки на объекты в памяти, захватывает переменные. Это позволяет манипулировать не только данными, но и кодом, в контексте которого они используются: переписывать, дополнять, пересылать, а уже потом компилировать и выполнять.
Реализуем AutoMapper при помощи Roslyn и кодогенерации
2019-07-12 в 11:28, admin, рубрики: .net, C#, roslyn, Visual Studio, кодогенерацияВ прошлой статье я описал способ организации кодогенераци при помощи Roslyn. Тогдашней задачей было продемонстрировать общий подход. Сейчас я хочу реализовать то, что будет иметь реальное применение.
И так, кому интересно посмотреть на то как можно сделать библиотеку на подобие AutoMapper прошу под кат.
Кодогенерация при помощи Roslyn
2019-06-13 в 9:14, admin, рубрики: .net, C#, nuget, roslyn, Visual Studio, кодогенерацияВремя от времени, когда я читал о Roslyn и его анализаторах, у меня постоянно возникала мысль: "А ведь этой штукой можно сделать nuget, который будет ходить по коду и делать кодогенерацию". Быстрый поиск не показал ничего интересного, по этому было принято решение копать. Как же я был приятно удивлен, когда обнаружил что моя затея не только реализуемая, но все это будет работать почти без костылей.
И так кому интересно посмотреть на то как можно сделать "маленькую рефлексию" и запаковать ее в nuget прошу под кат.
Проверяем инкапсуляцию с помощью Roslyn
2019-06-12 в 12:24, admin, рубрики: .net, api, C#, open source, roslyn, static code analysis, Visual Studio, статический анализ кодаЧто такое Roslyn?
Roslyn – это набор компиляторов с открытым исходным кодом и API для анализа кода для языков C# и VisualBasic .NET от Microsoft.
Анализатор Roslyn – мощный инструмент для анализа кода, нахождения ошибок и их исправления.
Синтаксическое дерево и семантическая модель
Для анализа кода, нужно иметь представление о синтаксическом дереве и семантической модели, так как это два основных компонента для статического анализа.
Синтаксическое дерево — это элемент, который строится на основании исходного кода программы, и необходимый для анализа кода. В ходе анализа кода по нему происходит перемещение.
Каждый код обладает синтаксическим деревом. Для следующего объекта класса
class A
{
void Method()
{
}
}
синтаксическое дерево будет выглядеть так:
Создание анализатора Roslyn на примере проверки инкапсуляции
2019-06-12 в 12:24, admin, рубрики: .net, api, C#, open source, roslyn, static code analysis, Visual Studio, статический анализ кодаЧто такое Roslyn?
Roslyn – это набор компиляторов с открытым исходным кодом и API для анализа кода для языков C# и VisualBasic .NET от Microsoft.
Анализатор Roslyn – мощный инструмент для анализа кода, нахождения ошибок и их исправления.
Синтаксическое дерево и семантическая модель
Для анализа кода, нужно иметь представление о синтаксическом дереве и семантической модели, так как это два основных компонента для статического анализа.
Синтаксическое дерево — это элемент, который строится на основании исходного кода программы, и необходимый для анализа кода. В ходе анализа кода по нему происходит перемещение.
Каждый код обладает синтаксическим деревом. Для следующего объекта класса
class A
{
void Method()
{
}
}
синтаксическое дерево будет выглядеть так:
Nullable Reference types in C# 8.0 and static analysis
2019-06-07 в 9:31, admin, рубрики: .net, .NET Compiler Platform, C#, pvs-studio, roslyn, static analyzer, Visual Studio, Visual Studio 2019, Блог компании PVS-Studio, разработка под windows
It's not a secret that Microsoft has been working on the 8-th version of C# language for quite a while. The new language version (C# 8.0) is already available in the recent release of Visual Studio 2019, but it's still in beta. This new version is going to have a few features implemented in a somewhat non-obvious, or rather unexpected, way. Nullable Reference types are one of them. This feature is announced as a means to fight Null Reference Exceptions (NRE).
Читать полностью »
Nullable Reference типы в C# 8.0 и статический анализ
2019-06-07 в 9:27, admin, рубрики: .net, .NET Compiler Platform, C#, pvs-studio, roslyn, static analyzer, Visual Studio, Visual Studio 2019, Блог компании PVS-Studio, разработка под windows
Не секрет, что Microsoft достаточно давно работает над выпуском восьмой версии C#. В недавно состоявшемся релизе Visual Studio 2019 новая версия языка (C# 8.0) уже доступна, но пока ещё только в качестве beta релиза. В планах этой новой версии есть несколько возможностей, реализация которых может показаться не совсем очевидной, или точнее, не совсем ожидаемой. Одним из таких нововведений стала возможность использования Nullable Reference типов. Заявленным смыслом данного нововведения является борьба с Null Reference Exception'ами (NRE).
Читать полностью »
Поддержка Visual Studio 2019 в PVS-Studio
2019-06-04 в 10:06, admin, рубрики: .net, .NET Compiler Platform, .net core, C#, msbuild, pvs-studio, roslyn, static analyzer, Visual Studio, Visual Studio 2019, Блог компании PVS-Studio, разработка под windows
Поддержка Visual Studio 2019 в PVS-Studio затронула сразу несколько различных компонентов: сам плагин для IDE, command line приложение для анализа, ядра C++ и C# анализаторов, а также несколько утилит. О том, с какими проблемами мы столкнулись в ходе поддержки новой версии IDE и как их решали, я кратко расскажу в данной статье.
Читать полностью »
Support of Visual Studio 2019 in PVS-Studio
2019-06-04 в 10:02, admin, рубрики: .net, .NET Compiler Platform, .net core, C#, msbuild, pvs-studio, roslyn, static analyzer, Visual Studio, Visual Studio 2019, Блог компании PVS-Studio, разработка под windowsSupport of Visual Studio 2019 in PVS-Studio affected a number of components: the plugin itself, the command-line analyzer, the cores of the C++ and C# analyzers, and a few utilities. In this article, I will briefly explain what problems we encountered when implementing support of the IDE and how we addressed them.
Читать полностью »