/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Tools/IdeCoreBenchmarks/IncrementalAnalyzerBenchmarks.cs
81 строка
3 KB
Cyrus Najmabadi
Remove workspace config option for which db to use
12 июн 2024, 19:59
12 июн 2024, 19:59
1412f68
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. #nullable disable using System; using System.Collections.Immutable; using System.IO; using System.Reflection; using System.Threading; using System.Threading.Tasks; using AnalyzerRunner; using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Diagnosers; using Microsoft.CodeAnalysis.MSBuild; namespace IdeCoreBenchmarks { [MemoryDiagnoser] public class IncrementalAnalyzerBenchmarks { private readonly string _solutionPath; private Options _options; private MSBuildWorkspace _workspace; private IncrementalAnalyzerRunner _incrementalAnalyzerRunner; [Params("SymbolTreeInfoIncrementalAnalyzerProvider", "SyntaxTreeInfoIncrementalAnalyzerProvider")] public string AnalyzerName { get; set; } public IncrementalAnalyzerBenchmarks() { var roslynRoot = Environment.GetEnvironmentVariable(Program.RoslynRootPathEnvVariableName); _solutionPath = Path.Combine(roslynRoot, @"src\Tools\IdeCoreBenchmarks\Assets\Microsoft.CodeAnalysis.sln"); if (!File.Exists(_solutionPath)) { throw new ArgumentException(); } } [IterationSetup] public void Setup() { var analyzerAssemblyPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "Microsoft.CodeAnalysis.Features.dll"); _options = new Options( analyzerPath: analyzerAssemblyPath, solutionPath: _solutionPath, analyzerIds: ImmutableHashSet<string>.Empty, refactoringNodes: ImmutableHashSet<string>.Empty, runConcurrent: true, reportSuppressedDiagnostics: true, applyChanges: false, useAll: false, iterations: 1, fullSolutionAnalysis: true, incrementalAnalyzerNames: ImmutableArray.Create(AnalyzerName)); _workspace = AnalyzerRunnerHelper.CreateWorkspace(); _incrementalAnalyzerRunner = new IncrementalAnalyzerRunner(_workspace, _options); _ = _workspace.OpenSolutionAsync(_solutionPath, progress: null, CancellationToken.None).Result; } [IterationCleanup] public void Cleanup() { _workspace?.Dispose(); _workspace = null; } [Benchmark] public async Task RunIncrementalAnalyzer() { await _incrementalAnalyzerRunner.RunAsync(CancellationToken.None).ConfigureAwait(false); } } }