public async Task TestAnalyzerConfigurationDoesNotAffectCompilerDiagnostics() { var source = @" class C { void M() { // warning CS0168: The variable 'x' is declared but never used. int x; } } "; // Verify CS0168 reported from 'Compilation.GetDiagnostics' var compilation = CreateCompilation(source); var compilerDiagnostics = compilation.GetDiagnostics(); verifyDiagnostics(compilerDiagnostics); // Verify CS0168 reported from 'CSharpCompilerDiagnosticAnalyzer', i.e. the diagnostic analyzer used in the IDE layer to report live compiler diagnostics. var analyzers = ImmutableArray.Create <DiagnosticAnalyzer>(new CSharpCompilerDiagnosticAnalyzer()); var compilationWithAnalyzers = compilation.WithAnalyzers(analyzers, new AnalyzerOptions(ImmutableArray <AdditionalText> .Empty)); var analyzerDiagnostics = await compilationWithAnalyzers.GetAnalyzerDiagnosticsAsync(); verifyDiagnostics(analyzerDiagnostics); // Verify CS0168 reported by CSharpCompilerDiagnosticAnalyzer is not affected by "dotnet_analyzer_diagnostic = none" var analyzerConfigOptions = new CompilerAnalyzerConfigOptions(ImmutableDictionary <string, string> .Empty.Add("dotnet_analyzer_diagnostic.severity", "none")); var analyzerConfigOptionsProvider = new CompilerAnalyzerConfigOptionsProvider( ImmutableDictionary <object, AnalyzerConfigOptions> .Empty.Add(compilation.SyntaxTrees.Single(), analyzerConfigOptions)); var analyzerOptions = new AnalyzerOptions(ImmutableArray <AdditionalText> .Empty, analyzerConfigOptionsProvider); compilationWithAnalyzers = compilation.WithAnalyzers(analyzers, analyzerOptions); analyzerDiagnostics = await compilationWithAnalyzers.GetAnalyzerDiagnosticsAsync(); verifyDiagnostics(analyzerDiagnostics);
private SourceText GenerateSource(AdditionalText additionalFile, string scalarFieldTypeMappingProviderTypeName) { var configurationOptions = new Dictionary <string, string> { { "build_property.GraphQlClientGenerator_ClassPrefix", "SourceGenerated" }, { "build_property.GraphQlClientGenerator_ClassSuffix", "V2" }, { "build_property.GraphQlClientGenerator_IncludeDeprecatedFields", "true" }, { "build_property.GraphQlClientGenerator_CommentGeneration", "CodeSummary" }, { "build_property.GraphQlClientGenerator_FloatTypeMapping", "Double" }, { "build_property.GraphQlClientGenerator_BooleanTypeMapping", "Boolean" }, { "build_property.GraphQlClientGenerator_IdTypeMapping", "String" }, { "build_property.GraphQlClientGenerator_JsonPropertyGeneration", "Always" }, { "build_property.GraphQlClientGenerator_CustomClassMapping", "Query:Tibber|RootMutation:TibberMutation Consumption:ConsumptionEntry;Production:ProductionEntry" }, { "build_property.GraphQlClientGenerator_Headers", "Authorization:Basic XXX|X-REQUEST-ID:123456789" }, { "build_property.GraphQlClientGenerator_HttpMethod", "GET" }, { "build_property.GraphQlClientGenerator_EnumValueNaming", "CSharp" } }; if (scalarFieldTypeMappingProviderTypeName is not null) { configurationOptions.Add("build_property.GraphQlClientGenerator_ScalarFieldTypeMappingProvider", scalarFieldTypeMappingProviderTypeName); } var compilerAnalyzerConfigOptionsProvider = new CompilerAnalyzerConfigOptionsProvider(new CompilerAnalyzerConfigOptions(configurationOptions)); var compilation = CompilationHelper.CreateCompilation(null, "SourceGeneratorTestAssembly"); var additionalFiles = new List <AdditionalText> { _fileGraphQlSchema }; if (additionalFile is not null) { additionalFiles.Add(additionalFile); } var sourceGenerator = new GraphQlClientSourceGenerator(); var driver = CSharpGeneratorDriver.Create(new [] { sourceGenerator }, additionalFiles, optionsProvider: compilerAnalyzerConfigOptionsProvider); var csharpDriver = driver.RunGenerators(compilation); var runResult = csharpDriver.GetRunResult(); var results = runResult.Results; results.Length.ShouldBe(1); results[0].GeneratedSources.Length.ShouldBe(1); return(results[0].GeneratedSources[0].SourceText); }