internal /*for testing purposes*/ static ProjectAnalyzerStatus GetProjectAnalyzerConflictStatus(
IEnumerable<AnalyzerReference> references)
{
if (references == null)
{
return ProjectAnalyzerStatus.NoAnalyzer;
}
List<AnalyzerReference> sameNamedAnalyzers = references
.Where(reference => string.Equals(reference.Display, AnalyzerName, StringComparison.OrdinalIgnoreCase))
.ToList();
if (!sameNamedAnalyzers.Any())
{
return ProjectAnalyzerStatus.NoAnalyzer;
}
bool hasConflictingAnalyzer = sameNamedAnalyzers
.Select(reference => (reference.Id as AssemblyIdentity)?.Version)
.All(version => version != AnalyzerVersion);
return hasConflictingAnalyzer
? ProjectAnalyzerStatus.DifferentVersion
: ProjectAnalyzerStatus.SameVersion;
}