- 175
- 294
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Итак, это что-то инновационное от Савка
Это нахождение ошибок в коде...
Вы в шоке? Ну я тоже что смог такое написать. Но не радуйтесь, это только для С#)
Конечно можно найти ошибку и в консоли, но мы же все слепые...
Поэтому вот
Код:
*Мини предыстория*
Все это кодилось у меня на коленках в маршрутке пока я ехал на работу
Это нахождение ошибок в коде...
Вы в шоке? Ну я тоже что смог такое написать. Но не радуйтесь, это только для С#)
Конечно можно найти ошибку и в консоли, но мы же все слепые...
Поэтому вот
Код:
код:
// 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);
}
}
}
Все это кодилось у меня на коленках в маршрутке пока я ехал на работу
Последнее редактирование: