in src/StructuredLogger/Analyzers/ImportTreeAnalyzer.cs [7:106]
public static TextNode TryGetImportOrNoImport(ProjectImportedEventArgs args, StringCache stringTable)
{
var message = (string)Reflector.BuildEventArgs_message?.GetValue(args);
var arguments = Reflector.LazyFormattedBuildEventArgs_arguments?.GetValue(args) as object[];
if (arguments != null && arguments.Length > 0)
{
if (arguments.Length == 4)
{
if (message == Strings.ProjectImported)
{
var importedProject = stringTable.Intern((string)arguments[0]);
var containingProject = stringTable.Intern((string)arguments[1]);
var line = ParseInt(arguments[2]);
var column = ParseInt(arguments[3]);
var import = new Import(
containingProject,
importedProject,
line,
column);
return import;
}
else if (
message == Strings.ProjectImportSkippedExpressionEvaluatedToEmpty ||
message == Strings.ProjectImportSkippedNoMatches ||
message == Strings.ProjectImportSkippedMissingFile ||
message == Strings.ProjectImportSkippedInvalidFile)
{
var importedProject = stringTable.Intern((string)arguments[0]);
var containingProject = stringTable.Intern((string)arguments[1]);
var line = ParseInt(arguments[2]);
var column = ParseInt(arguments[3]);
string reason = "";
if (message == Strings.ProjectImportSkippedExpressionEvaluatedToEmpty)
{
reason = "empty expression";
}
else if (message == Strings.ProjectImportSkippedNoMatches)
{
reason = "no matches";
}
else if (message == Strings.ProjectImportSkippedMissingFile)
{
reason = "missing file";
}
else if (message == Strings.ProjectImportSkippedInvalidFile)
{
reason = "invalid file";
}
var noImport = new NoImport(
containingProject,
importedProject,
line,
column,
stringTable.Intern(reason));
return noImport;
}
}
else if (arguments.Length == 6)
{
if (message == Strings.ProjectImportSkippedFalseCondition)
{
var project = (string)arguments[0];
var containingProject = (string)arguments[1];
var line = ParseInt(arguments[2]);
var column = ParseInt(arguments[3]);
var condition = (string)arguments[4];
var evaluatedCondition = (string)arguments[5];
string reason = $"false condition; ({condition} was evaluated as {evaluatedCondition}).";
var noImport = new NoImport(
stringTable.Intern(containingProject),
stringTable.Intern(project),
line,
column,
stringTable.Intern(reason));
return noImport;
}
}
else if (arguments.Length == 1)
{
if (message == Strings.CouldNotResolveSdk)
{
var sdk = (string)arguments[0];
var noImport = new NoImport(
stringTable.Intern(args.ProjectFile),
stringTable.Intern(args.ImportedProjectFile),
args.LineNumber,
args.ColumnNumber,
stringTable.Intern(string.Format(message, sdk)));
return noImport;
}
}
}
var parsed = TryGetImportOrNoImport(args.Message, stringTable);
return parsed;
}