本文整理汇总了C#中Microsoft.CodeAnalysis.CodeFixes.FixAllContext类的典型用法代码示例。如果您正苦于以下问题:C# FixAllContext类的具体用法?C# FixAllContext怎么用?C# FixAllContext使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
FixAllContext类属于Microsoft.CodeAnalysis.CodeFixes命名空间,在下文中一共展示了FixAllContext类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。
示例1: GetFixAsync
public override Task<CodeAction> GetFixAsync(FixAllContext fixAllContext)
{
switch (fixAllContext.Scope)
{
case FixAllScope.Document:
{
return Task.FromResult(CodeAction.Create(UseEmptyStringCodeFixProvider.MessageFormat,
async ct =>
{
var newFixAllContext = fixAllContext.WithCancellationToken(ct);
var diagnostics = await newFixAllContext.GetDocumentDiagnosticsAsync(newFixAllContext.Document).ConfigureAwait(false);
var root = await GetFixedDocumentAsync(newFixAllContext.Document, diagnostics, ct).ConfigureAwait(false);
return newFixAllContext.Document.WithSyntaxRoot(root);
}));
}
case FixAllScope.Project:
return Task.FromResult(CodeAction.Create(UseEmptyStringCodeFixProvider.MessageFormat,
ct =>
{
var newFixAllContext = fixAllContext.WithCancellationToken(ct);
return GetFixedProjectAsync(newFixAllContext, newFixAllContext.WithCancellationToken(ct).Project);
}));
case FixAllScope.Solution:
return Task.FromResult(CodeAction.Create(UseEmptyStringCodeFixProvider.MessageFormat,
ct => GetFixedSolutionAsync(fixAllContext.WithCancellationToken(ct))));
}
return null;
}
开发者ID:JeanLLopes,项目名称:code-cracker,代码行数:29,代码来源:UseEmptyStringCodeFixProviderAll.cs
示例2: FixAllInDocumentAsync
protected override async Task<SyntaxNode> FixAllInDocumentAsync(FixAllContext fixAllContext, Document document)
{
var diagnostics = await fixAllContext.GetDocumentDiagnosticsAsync(document).ConfigureAwait(false);
if (diagnostics.IsEmpty)
{
return null;
}
var newDocument = document;
var root = await newDocument.GetSyntaxRootAsync(fixAllContext.CancellationToken).ConfigureAwait(false);
// First annotate all expressions that need parenthesis with a temporary annotation.
// With this annotation we can find the nodes that need parenthesis even if
// the source span changes.
foreach (var diagnostic in diagnostics)
{
SyntaxNode node = root.FindNode(diagnostic.Location.SourceSpan);
if (node.IsMissing)
{
continue;
}
root = root.ReplaceNode(node, node.WithAdditionalAnnotations(NeedsParenthesisAnnotation));
}
return root.ReplaceNodes(root.GetAnnotatedNodes(NeedsParenthesisAnnotation), this.AddParentheses);
}
开发者ID:journeyman,项目名称:StyleCopAnalyzers,代码行数:28,代码来源:SA1407SA1408FixAllProvider.cs
示例3: FixAllState
private FixAllState(
FixAllProvider fixAllProvider,
Document document,
Project project,
CodeFixProvider codeFixProvider,
FixAllScope scope,
string codeActionEquivalenceKey,
IEnumerable<string> diagnosticIds,
FixAllContext.DiagnosticProvider fixAllDiagnosticProvider)
{
Contract.ThrowIfNull(project);
if (diagnosticIds == null)
{
throw new ArgumentNullException(nameof(diagnosticIds));
}
if (diagnosticIds.Any(d => d == null))
{
throw new ArgumentException(WorkspacesResources.Supplied_diagnostic_cannot_be_null, nameof(diagnosticIds));
}
this.FixAllProvider = fixAllProvider;
this.Document = document;
this.Project = project;
this.CodeFixProvider = codeFixProvider ?? throw new ArgumentNullException(nameof(codeFixProvider));
this.Scope = scope;
this.CodeActionEquivalenceKey = codeActionEquivalenceKey;
this.DiagnosticIds = ImmutableHashSet.CreateRange(diagnosticIds);
this.DiagnosticProvider = fixAllDiagnosticProvider ?? throw new ArgumentNullException(nameof(fixAllDiagnosticProvider));
}
开发者ID:XieShuquan,项目名称:roslyn,代码行数:30,代码来源:FixAllState.cs
示例4: GetFixAsync
public override async Task<CodeAction> GetFixAsync(FixAllContext fixAllContext)
{
switch (fixAllContext.Scope)
{
case FixAllScope.Document:
var newRoot = await this.FixAllInDocumentAsync(fixAllContext, fixAllContext.Document).ConfigureAwait(false);
return CodeAction.Create(MaintainabilityResources.SA1407SA1408CodeFix, token => Task.FromResult(fixAllContext.Document.WithSyntaxRoot(newRoot)));
case FixAllScope.Project:
Solution solution = await this.GetProjectFixesAsync(fixAllContext, fixAllContext.Project).ConfigureAwait(false);
return CodeAction.Create(MaintainabilityResources.SA1407SA1408CodeFix, token => Task.FromResult(solution));
case FixAllScope.Solution:
var newSolution = fixAllContext.Solution;
var projectIds = newSolution.ProjectIds;
for (int i = 0; i < projectIds.Count; i++)
{
newSolution = await this.GetProjectFixesAsync(fixAllContext, newSolution.GetProject(projectIds[i])).ConfigureAwait(false);
}
return CodeAction.Create(MaintainabilityResources.SA1407SA1408CodeFix, token => Task.FromResult(newSolution));
case FixAllScope.Custom:
default:
return null;
}
}
开发者ID:nvincent,项目名称:StyleCopAnalyzers,代码行数:27,代码来源:SA1407SA1408FixAllProvider.cs
示例5: LogContext
public static void LogContext(FixAllContext fixAllContext, bool isInternalCodeFixProvider)
{
Logger.Log(FunctionId.CodeFixes_FixAllOccurrencesContext, KeyValueLogMessage.Create(m =>
{
if (isInternalCodeFixProvider)
{
m[s_codeFixProvider] = fixAllContext.CodeFixProvider.GetType().FullName;
m[s_codeActionEquivalenceKey] = fixAllContext.CodeActionEquivalenceKey;
m[s_languageName] = fixAllContext.Project.Language;
}
else
{
m[s_codeFixProvider] = fixAllContext.CodeFixProvider.GetType().FullName.GetHashCode().ToString();
m[s_codeActionEquivalenceKey] = fixAllContext.CodeActionEquivalenceKey != null ? fixAllContext.CodeActionEquivalenceKey.GetHashCode().ToString() : null;
m[s_languageName] = fixAllContext.Project.Language.GetHashCode().ToString();
}
m[s_fixAllScope] = fixAllContext.Scope.ToString();
switch (fixAllContext.Scope)
{
case CodeFixes.FixAllScope.Project:
m[s_documentCount] = fixAllContext.Project.DocumentIds.Count;
break;
case CodeFixes.FixAllScope.Solution:
m[s_documentCount] = fixAllContext.Solution.Projects.Sum(p => p.DocumentIds.Count);
break;
}
}));
}
开发者ID:SoumikMukherjeeDOTNET,项目名称:roslyn,代码行数:30,代码来源:FixAllLogger.cs
示例6: GetFixAsync
public virtual async Task<CodeAction> GetFixAsync(
ImmutableDictionary<Document, ImmutableArray<Diagnostic>> documentsAndDiagnosticsToFixMap,
FixAllContext fixAllContext)
{
if (documentsAndDiagnosticsToFixMap != null && documentsAndDiagnosticsToFixMap.Any())
{
FixAllLogger.LogDiagnosticsStats(documentsAndDiagnosticsToFixMap);
var fixesBag = new ConcurrentBag<CodeAction>();
using (Logger.LogBlock(FunctionId.CodeFixes_FixAllOccurrencesComputation_Fixes, fixAllContext.CancellationToken))
{
fixAllContext.CancellationToken.ThrowIfCancellationRequested();
var documents = documentsAndDiagnosticsToFixMap.Keys;
var tasks = documents.Select(d => AddDocumentFixesAsync(d, documentsAndDiagnosticsToFixMap[d], fixesBag.Add, fixAllContext))
.ToArray();
await Task.WhenAll(tasks).ConfigureAwait(false);
}
if (fixesBag.Any())
{
using (Logger.LogBlock(FunctionId.CodeFixes_FixAllOccurrencesComputation_Merge, fixAllContext.CancellationToken))
{
FixAllLogger.LogFixesToMergeStats(fixesBag);
return await TryGetMergedFixAsync(fixesBag, fixAllContext).ConfigureAwait(false);
}
}
}
return null;
}
开发者ID:SoumikMukherjeeDOTNET,项目名称:roslyn,代码行数:32,代码来源:BatchFixAllProvider.cs
示例7: GetProjectDiagnosticsToFixAsync
public static async Task<ImmutableDictionary<Project, ImmutableArray<Diagnostic>>> GetProjectDiagnosticsToFixAsync(FixAllContext fixAllContext)
{
var project = fixAllContext.Project;
if (project != null)
{
switch (fixAllContext.Scope)
{
case FixAllScope.Project:
var diagnostics = await fixAllContext.GetProjectDiagnosticsAsync(project).ConfigureAwait(false);
return ImmutableDictionary<Project, ImmutableArray<Diagnostic>>.Empty.SetItem(project, diagnostics);
case FixAllScope.Solution:
var projectsAndDiagnostics = new ConcurrentDictionary<Project, ImmutableArray<Diagnostic>>();
var options = new ParallelOptions() { CancellationToken = fixAllContext.CancellationToken };
Parallel.ForEach(project.Solution.Projects, options, proj =>
{
fixAllContext.CancellationToken.ThrowIfCancellationRequested();
var projectDiagnosticsTask = fixAllContext.GetProjectDiagnosticsAsync(proj);
projectDiagnosticsTask.Wait(fixAllContext.CancellationToken);
var projectDiagnostics = projectDiagnosticsTask.Result;
if (projectDiagnostics.Any())
{
projectsAndDiagnostics.TryAdd(proj, projectDiagnostics);
}
});
return projectsAndDiagnostics.ToImmutableDictionary();
}
}
return ImmutableDictionary<Project, ImmutableArray<Diagnostic>>.Empty;
}
开发者ID:EdwinEngelen,项目名称:StyleCopAnalyzers,代码行数:32,代码来源:FixAllContextHelper.cs
示例8: GetFixAsync
public override Task<CodeAction> GetFixAsync(FixAllContext fixAllContext)
{
CodeAction fixAction;
switch (fixAllContext.Scope)
{
case FixAllScope.Document:
fixAction = CodeAction.Create(
this.CodeActionTitle,
cancellationToken => this.GetDocumentFixesAsync(fixAllContext.WithCancellationToken(cancellationToken)),
nameof(DocumentBasedFixAllProvider));
break;
case FixAllScope.Project:
fixAction = CodeAction.Create(
this.CodeActionTitle,
cancellationToken => this.GetProjectFixesAsync(fixAllContext.WithCancellationToken(cancellationToken), fixAllContext.Project),
nameof(DocumentBasedFixAllProvider));
break;
case FixAllScope.Solution:
fixAction = CodeAction.Create(
this.CodeActionTitle,
cancellationToken => this.GetSolutionFixesAsync(fixAllContext.WithCancellationToken(cancellationToken)),
nameof(DocumentBasedFixAllProvider));
break;
case FixAllScope.Custom:
default:
fixAction = null;
break;
}
return Task.FromResult(fixAction);
}
开发者ID:JaRau,项目名称:StyleCopAnalyzers,代码行数:34,代码来源:DocumentBasedFixAllProvider.cs
示例9: GetFixAsync
public virtual async Task<CodeAction> GetFixAsync(
ImmutableDictionary<Document, ImmutableArray<Diagnostic>> documentsAndDiagnosticsToFixMap,
FixAllContext fixAllContext)
{
if (documentsAndDiagnosticsToFixMap != null && documentsAndDiagnosticsToFixMap.Any())
{
fixAllContext.CancellationToken.ThrowIfCancellationRequested();
var documents = documentsAndDiagnosticsToFixMap.Keys.ToImmutableArray();
var fixesBag = new List<CodeAction>[documents.Length];
var options = new ParallelOptions() { CancellationToken = fixAllContext.CancellationToken };
Parallel.ForEach(documents, options, (document, state, index) =>
{
fixAllContext.CancellationToken.ThrowIfCancellationRequested();
fixesBag[index] = new List<CodeAction>();
this.AddDocumentFixesAsync(document, documentsAndDiagnosticsToFixMap[document], fixesBag[index].Add, fixAllContext).Wait(fixAllContext.CancellationToken);
});
if (fixesBag.Any(fixes => fixes.Count > 0))
{
return await this.TryGetMergedFixAsync(fixesBag.SelectMany(i => i), fixAllContext).ConfigureAwait(false);
}
}
return null;
}
开发者ID:journeyman,项目名称:StyleCopAnalyzers,代码行数:26,代码来源:CustomBatchFixAllProvider.cs
示例10: AddDocumentFixesAsync
public override async Task AddDocumentFixesAsync(Document document, ImmutableArray<Diagnostic> diagnostics, Action<CodeAction> addFix, FixAllContext fixAllContext)
{
var changedDocument = await AddSimplifierAnnotationsAsync(document, diagnostics, fixAllContext).ConfigureAwait(false);
var title = GetFixAllTitle(fixAllContext);
var codeAction = new MyCodeAction(title, (c) => Task.FromResult(changedDocument));
addFix(codeAction);
}
开发者ID:SoumikMukherjeeDOTNET,项目名称:roslyn,代码行数:7,代码来源:BatchSimplificationFixAllProvider.cs
示例11: FixAllInDocumentAsync
protected override async Task<SyntaxNode> FixAllInDocumentAsync(FixAllContext fixAllContext, Document document)
{
var diagnostics = await fixAllContext.GetDocumentDiagnosticsAsync(document).ConfigureAwait(false);
if (diagnostics.IsEmpty)
{
return null;
}
SyntaxNode syntaxRoot = await document.GetSyntaxRootAsync().ConfigureAwait(false);
List<SyntaxNode> nodesNeedingQualification = new List<SyntaxNode>(diagnostics.Length);
foreach (Diagnostic diagnostic in diagnostics)
{
var node = syntaxRoot.FindNode(diagnostic.Location.SourceSpan, false, true) as SimpleNameSyntax;
if (node == null || node.IsMissing)
{
continue;
}
nodesNeedingQualification.Add(node);
}
return syntaxRoot.ReplaceNodes(nodesNeedingQualification, (originalNode, rewrittenNode) =>
SyntaxFactory.MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, ThisExpressionSyntax, (SimpleNameSyntax)rewrittenNode.WithoutTrivia().WithoutFormatting())
.WithTriviaFrom(rewrittenNode)
.WithoutFormatting());
}
开发者ID:JaRau,项目名称:StyleCopAnalyzers,代码行数:27,代码来源:SA1101CodeFixProvider.cs
示例12: FixAllInDocumentAsync
protected override async Task<SyntaxNode> FixAllInDocumentAsync(FixAllContext fixAllContext, Document document)
{
var diagnostics = await fixAllContext.GetDocumentDiagnosticsAsync(document).ConfigureAwait(false);
if (diagnostics.IsEmpty)
{
return null;
}
DocumentEditor editor = await DocumentEditor.CreateAsync(document, fixAllContext.CancellationToken).ConfigureAwait(false);
SyntaxNode root = editor.GetChangedRoot();
ImmutableList<SyntaxNode> nodesToChange = ImmutableList.Create<SyntaxNode>();
// Make sure all nodes we care about are tracked
foreach (var diagnostic in diagnostics)
{
var location = diagnostic.Location;
var syntaxNode = root.FindNode(location.SourceSpan);
if (syntaxNode != null)
{
editor.TrackNode(syntaxNode);
nodesToChange = nodesToChange.Add(syntaxNode);
}
}
foreach (var node in nodesToChange)
{
editor.ReplaceNode(node, node.WithLeadingTrivia(SyntaxFactory.ElasticCarriageReturnLineFeed));
}
return editor.GetChangedRoot();
}
开发者ID:JaRau,项目名称:StyleCopAnalyzers,代码行数:33,代码来源:SA1107FixAllProvider.cs
示例13: GetFixAsync
public override async Task<CodeAction> GetFixAsync(FixAllContext fixAllContext)
{
Solution newSolution;
switch (fixAllContext.Scope)
{
case FixAllScope.Document:
newSolution = await FixDocumentAsync(fixAllContext, fixAllContext.Document).ConfigureAwait(false);
break;
case FixAllScope.Project:
newSolution = await GetProjectFixesAsync(fixAllContext, fixAllContext.Project).ConfigureAwait(false);
break;
case FixAllScope.Solution:
newSolution = fixAllContext.Solution;
var projectIds = newSolution.ProjectIds;
for (int i = 0; i < projectIds.Count; i++)
{
newSolution = await GetProjectFixesAsync(fixAllContext, newSolution.GetProject(projectIds[i])).ConfigureAwait(false);
}
break;
case FixAllScope.Custom:
default:
return null;
}
return CodeAction.Create(
string.Format(MaintainabilityResources.SA1412CodeFix, fixAllContext.CodeActionEquivalenceKey.Substring(fixAllContext.CodeActionEquivalenceKey.IndexOf('.') + 1)),
token => Task.FromResult(newSolution));
}
开发者ID:JaRau,项目名称:StyleCopAnalyzers,代码行数:33,代码来源:SA1412FixAllProvider.cs
示例14: FixAllInDocumentAsync
protected override async Task<SyntaxNode> FixAllInDocumentAsync(FixAllContext fixAllContext, Document document)
{
var diagnostics = await fixAllContext.GetDocumentDiagnosticsAsync(document).ConfigureAwait(false);
if (diagnostics.IsEmpty)
{
return null;
}
SyntaxNode syntaxRoot = await document.GetSyntaxRootAsync(fixAllContext.CancellationToken).ConfigureAwait(false);
var replaceMap = new Dictionary<SyntaxNode, SyntaxNode>();
foreach (Diagnostic diagnostic in diagnostics)
{
var node = syntaxRoot.FindNode(diagnostic.Location.SourceSpan, false, true) as ThisExpressionSyntax;
if (node == null || node.IsMissing)
{
continue;
}
replaceMap[node.Parent] = GenerateReplacementNode(node);
}
return syntaxRoot.ReplaceNodes(replaceMap.Keys, (originalNode, rewrittenNode) => replaceMap[originalNode]);
}
开发者ID:hexuefengx,项目名称:StyleCopAnalyzers,代码行数:25,代码来源:SX1101CodeFixProvider.cs
示例15: GetFixedSolutionAsync
private async static Task<Solution> GetFixedSolutionAsync(FixAllContext fixAllContext)
{
var newSolution = fixAllContext.Solution;
foreach (var projectId in newSolution.ProjectIds)
newSolution = await GetFixedProjectAsync(fixAllContext, newSolution.GetProject(projectId)).ConfigureAwait(false);
return newSolution;
}
开发者ID:haroldhues,项目名称:code-cracker,代码行数:7,代码来源:RemoveUnreachableCodeFixAllProvider.cs
示例16: GetFixAllCodeActionAsync
private async Task<CodeAction> GetFixAllCodeActionAsync(FixAllProvider fixAllProvider, FixAllContext fixAllContext)
{
using (Logger.LogBlock(FunctionId.CodeFixes_FixAllOccurrencesComputation, fixAllContext.CancellationToken))
{
CodeAction action = null;
try
{
action = await fixAllProvider.GetFixAsync(fixAllContext).ConfigureAwait(false);
}
catch (OperationCanceledException)
{
FixAllLogger.LogComputationResult(completed: false);
}
finally
{
if (action != null)
{
FixAllLogger.LogComputationResult(completed: true);
}
else
{
FixAllLogger.LogComputationResult(completed: false, timedOut: true);
}
}
return action;
}
}
开发者ID:SoumikMukherjeeDOTNET,项目名称:roslyn,代码行数:28,代码来源:FixAllGetFixesService.cs
示例17: GetFixAsync
public virtual async Task<CodeAction> GetFixAsync(
ImmutableDictionary<Document, ImmutableArray<Diagnostic>> documentsAndDiagnosticsToFixMap,
FixAllContext fixAllContext)
{
if (documentsAndDiagnosticsToFixMap != null && documentsAndDiagnosticsToFixMap.Any())
{
FixAllLogger.LogDiagnosticsStats(documentsAndDiagnosticsToFixMap);
var fixesBag = new ConcurrentBag<CodeAction>();
using (Logger.LogBlock(FunctionId.CodeFixes_FixAllOccurrencesComputation_Fixes, fixAllContext.CancellationToken))
{
fixAllContext.CancellationToken.ThrowIfCancellationRequested();
var documents = documentsAndDiagnosticsToFixMap.Keys.ToImmutableArray();
var options = new ParallelOptions() { CancellationToken = fixAllContext.CancellationToken };
Parallel.ForEach(documents, options, document =>
{
fixAllContext.CancellationToken.ThrowIfCancellationRequested();
AddDocumentFixesAsync(document, documentsAndDiagnosticsToFixMap[document], fixesBag.Add, fixAllContext).Wait(fixAllContext.CancellationToken);
});
}
if (fixesBag.Any())
{
using (Logger.LogBlock(FunctionId.CodeFixes_FixAllOccurrencesComputation_Merge, fixAllContext.CancellationToken))
{
FixAllLogger.LogFixesToMergeStats(fixesBag);
return await TryGetMergedFixAsync(fixesBag, fixAllContext).ConfigureAwait(false);
}
}
}
return null;
}
开发者ID:nileshjagtap,项目名称:roslyn,代码行数:35,代码来源:BatchFixAllProvider.cs
示例18: GetDiagnosticsInDocAsync
private static async Task<DiagnosticsInDoc> GetDiagnosticsInDocAsync(FixAllContext fixAllContext, Document document)
{
var diagnostics = await fixAllContext.GetDocumentDiagnosticsAsync(document).ConfigureAwait(false);
if (!diagnostics.Any()) return DiagnosticsInDoc.Empty;
var root = await document.GetSyntaxRootAsync(fixAllContext.CancellationToken).ConfigureAwait(false);
var doc = DiagnosticsInDoc.Create(document.Id, diagnostics, root);
return doc;
}
开发者ID:haroldhues,项目名称:code-cracker,代码行数:8,代码来源:SwitchToAutoPropCodeFixAllProvider.cs
示例19: GetFixedProjectAsync
private async static Task<Solution> GetFixedProjectAsync(FixAllContext fixAllContext, Project project)
{
var solution = project.Solution;
var newDocuments = project.Documents.ToDictionary(d => d.Id, d => GetFixedDocumentAsync(fixAllContext, d));
await Task.WhenAll(newDocuments.Values).ConfigureAwait(false);
foreach (var newDoc in newDocuments)
solution = solution.WithDocumentSyntaxRoot(newDoc.Key, newDoc.Value.Result);
return solution;
}
开发者ID:haroldhues,项目名称:code-cracker,代码行数:9,代码来源:RemoveUnreachableCodeFixAllProvider.cs
示例20: GetSolutionWithDocsAsync
private async static Task<SolutionWithDocs> GetSolutionWithDocsAsync(FixAllContext fixAllContext, Document document)
{
var docs = new List<DiagnosticsInDoc>();
var doc = await GetDiagnosticsInDocAsync(fixAllContext, document);
docs.Add(doc);
var newSolution = document.Project.Solution.WithDocumentSyntaxRoot(document.Id, doc.TrackedRoot);
var sol = new SolutionWithDocs { Docs = docs, Solution = newSolution };
return sol;
}
开发者ID:haroldhues,项目名称:code-cracker,代码行数:9,代码来源:SwitchToAutoPropCodeFixAllProvider.cs
注:本文中的Microsoft.CodeAnalysis.CodeFixes.FixAllContext类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论