C# Исходник Находим ошибку в коде

Savok

Потрачен
Автор темы
178
292
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Итак, это что-то инновационное от Савка
Это нахождение ошибок в коде...
Вы в шоке? Ну я тоже что смог такое написать. Но не радуйтесь, это только для С#)
Конечно можно найти ошибку и в консоли, но мы же все слепые...
Поэтому вот
Код:

код:
// Standart
using System;
using System.IO;
using System.Collections.Generic;
// Microsoft
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.Diagnostics;

class Program
{
    static void Main(string[] args)
    {
        string filePath = "text.cs";  // файл с вашим поломаным кодом
        var analyzer = new MyAnalyzer();
        var compiler = CSharpCompilation.Create("Compilation",
            syntaxTrees: new[] { CSharpSyntaxTree.ParseText(File.ReadAllText(filePath)) },
            references: new[] { MetadataReference.CreateFromFile(typeof(object).Assembly.Location) });

        var diagnostics = compiler.WithAnalyzers(ImmutableArray.Create(analyzer)).GetAnalyzerDiagnosticsAsync().Result;
        foreach (var diagnostic in diagnostics)
        {
            Console.WriteLine(diagnostic.ToString());
        }
    }
}

class MyAnalyzer : DiagnosticAnalyzer
{
    public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => ImmutableArray.Create(MyRule);
    public override void Initialize(AnalysisContext context)
    {
        context.RegisterSyntaxNodeAction(AnalyzeNode, SyntaxKind.IdentifierName);
    }

    private static void AnalyzeNode(SyntaxNodeAnalysisContext context)
    {
        var identifierName = (IdentifierNameSyntax)context.Node;
        if (identifierName.Identifier.Text == "prm")
        {
            var diagnostic = Diagnostic.Create(MyRule, identifierName.GetLocation());
            context.ReportDiagnostic(diagnostic);
        }
    }
}
*Мини предыстория*
Все это кодилось у меня на коленках в маршрутке пока я ехал на работу
 
Последнее редактирование: