Я обновил диагностику, чтобы записать местоположение в сообщении, поэтому Я мог бы попытаться определить местоположение, используя context.ReportDiagnostic(Diagnostic.Create(DD_INVALID_PARAM_TYPE, location, MethodSymbol.Name, location.ToString(), propertyType)); и я вижу в окне ошибок что-то вроде SourceFile(C:\..\..\..\Program.cs[275..276)), но программа Длина файла .cs составляет всего 27 строк.
Это полный метод, о котором идет речь на данный момент:
Код: Выделить всё
private static void AnalyzeParameters(SyntaxNodeAnalysisContext context, IMethodSymbol methodSymbol)
{
var parameters = methodSymbol.Parameters;
if (parameters.Length != 1)
{
context.ReportDiagnostic(Diagnostic.Create(DD_INVALID_PARAM_COUNT, context.Node.GetLocation(), methodSymbol.Name, parameters.Length));
return;
}
var propertyType = ((PropertyDeclarationSyntax)context.Node).Type.ToString();
var methodInputType = parameters.First().Type.ToString();
if (propertyType != methodInputType)
{
context.ReportDiagnostic(Diagnostic.Create(DD_INVALID_PARAM_TYPE, context.Node.GetLocation(), methodSymbol.Name, methodInputType, propertyType));
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... nd-of-file