Roslyn API Nedir?

K. Murat Baseren
2 min readOct 22, 2024

--

Roslyn API, Microsoft’un .NET Compiler Platform’u için resmi adıdır. C# ve Visual Basic programlama dilleri için bir derleyici olarak hizmet verir. Ayrıca, kod analizi ve diğer programlama araçları için bir platform sağlar. Roslyn, derleyici tarafından kullanılan aynı sözdizimi ağaçlarına ve sembol bilgilerine erişim sağlayarak geliştiricilerin kod analizi ve kod üretimi gibi görevleri kolayca gerçekleştirmelerine olanak tanır. Bu, IDE’lerde (Entegre Geliştirme Ortamları) daha zengin düzenleme deneyimleri, kod tamamlama, hata kontrolü gibi özelliklerin yanı sıra özel araç ve uygulamalar geliştirmek için de kullanılabilir.

Roslyn API, kaynak kodunun ayrıştırılması, semantik analiz, bağlama, ve kod üretimi gibi derleme süreçlerini gerçek zamanlı olarak programatik olarak manipüle etme yeteneği sunar. Bu, geliştiricilere ve araç geliştiricilerine, kodu derleme sürecinin çeşitli aşamalarında inceleme ve değiştirme yeteneği verir. Böylece daha esnek ve güçlü geliştirme araçları oluşturulabilir. Roslyn, açık kaynaklıdır ve GitHub üzerinden erişilebilir, bu da topluluğun katkıda bulunmasına ve Roslyn’in nasıl geliştirildiğine dair derinlemesine bir anlam kazanmasına olanak tanır.

Basit Bir Roslyn API Örneği

Bir C# kaynak kodu dosyasını ayrıştırıp sözdizimi ağacını incelemek ve belirli bir türdeki tüm değişkenlerin isimlerini çıkarmak olabilir. Aşağıdaki örnek, Roslyn’ı kullanarak bir C# kaynak kodundaki tüm yerel değişken bildirimlerini bulup, bu değişkenlerin isimlerini console ‘a yazdırır.

Bu örneği çalıştırmak için, öncelikle Roslyn paketlerini NuGet üzerinden projenize eklemeniz gerekmektedir. Microsoft.CodeAnalysis.CSharp ve Microsoft.CodeAnalysis gibi gerekli paketleri ekleyin.

using System;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;

class Program
{
static void Main(string[] args)
{
var code = @"
using System;
namespace HelloWorld
{
class Program
{
static void Main(string[] args)
{
int number = 1;
string text = ""Hello, World!"";
Console.WriteLine(text + number.ToString());
}
}
}";
var tree = CSharpSyntaxTree.ParseText(code);
var root = (CompilationUnitSyntax)tree.GetRoot();

foreach (var methodDeclaration in root.DescendantNodes().OfType<MethodDeclarationSyntax>())
{
foreach (var variableDeclaration in methodDeclaration.DescendantNodes().OfType<LocalDeclarationStatementSyntax>())
{
foreach (var variable in variableDeclaration.Declaration.Variables)
{
Console.WriteLine(variable.Identifier);
}
}
}
}
}

Bu kod parçası, verilen C# kodu içerisindeki int number = 1; ve string text = "Hello, World!"; ifadelerini bulup, bu değişkenlerin isimlerini (number ve text) konsola yazdırır. Kodun çalışması için Main metodunun içerisine yerleştirilmesi ve uygun Roslyn NuGet paketlerinin projeye eklenmiş olması gerekmektedir.

Roslyn API’sini kullanarak yapılabilecek işlemler çok çeşitlidir ve bu sadece basit bir başlangıçtır. Daha karmaşık kod analizleri, kod yeniden yazımı ve hatta dinamik kod üretimi gibi işlemler de Roslyn API ile mümkündür.

--

--

K. Murat Baseren
K. Murat Baseren

Written by K. Murat Baseren

Software Architect | .NET Developer | Project Manager | Instructor | Lifetime Learner

Responses (1)