public static void HandleSyntaxTree(SyntaxTreeAnalysisContext context, StyleCopSettings settings) { var syntaxRoot = context.Tree.GetRoot(context.CancellationToken); var firstTypeDeclaration = GetFirstTypeDeclaration(syntaxRoot); if (firstTypeDeclaration == null) { return; } if (firstTypeDeclaration.Modifiers.Any(SyntaxKind.PartialKeyword)) { return; } string suffix; var fileName = FileNameHelpers.GetFileNameAndSuffix(context.Tree.FilePath, out suffix); var expectedFileName = FileNameHelpers.GetConventionalFileName(firstTypeDeclaration, settings.DocumentationRules.FileNamingConvention); if (string.Compare(fileName, expectedFileName, StringComparison.OrdinalIgnoreCase) != 0) { if (settings.DocumentationRules.FileNamingConvention == FileNamingConvention.StyleCop && string.Compare(fileName, FileNameHelpers.GetSimpleFileName(firstTypeDeclaration), StringComparison.OrdinalIgnoreCase) == 0) { return; } var properties = ImmutableDictionary.Create <string, string>() .Add(ExpectedFileNameKey, expectedFileName + suffix); context.ReportDiagnostic(Diagnostic.Create(Descriptor, firstTypeDeclaration.Identifier.GetLocation(), properties)); } }