本文整理汇总了C#中AnalysisContext.RegisterSyntaxTreeAction方法的典型用法代码示例。如果您正苦于以下问题:C# AnalysisContext.RegisterSyntaxTreeAction方法的具体用法?C# AnalysisContext.RegisterSyntaxTreeAction怎么用?C# AnalysisContext.RegisterSyntaxTreeAction使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AnalysisContext
的用法示例。
在下文中一共展示了AnalysisContext.RegisterSyntaxTreeAction方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Initialize
/// <inheritdoc/>
public override void Initialize(AnalysisContext context)
{
context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None);
context.EnableConcurrentExecution();
context.RegisterSyntaxTreeAction(SyntaxTreeAction);
}
示例2: Initialize
public override void Initialize(AnalysisContext context)
{
/*
// this doesn't work, read https://github.com/DotNetAnalyzers/StyleCopAnalyzers/issues/285
// SyntaxKind.WhitespaceTrivia is not SyntaxNode, it's SyntaxTrivia.
context.RegisterSyntaxNodeAction(AnalyzeSyntaxNode, SyntaxKind.WhitespaceTrivia);
*/
context.RegisterSyntaxTreeAction(AnalyzeSyntaxTree);
}
示例3: Initialize
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxTreeAction(
c => {
foreach (var asyncOrAwaitToken in GetAsyncOrAwaitTokens(c.Tree.GetRoot())
.Where(token => !token.Parent.AncestorsAndSelf().OfType<IdentifierNameSyntax>().Any()))
{
c.ReportDiagnostic(Diagnostic.Create(Rule, asyncOrAwaitToken.GetLocation(), asyncOrAwaitToken.ToString()));
}
});
}
示例4: Initialize
/// <inheritdoc/>
public override void Initialize(AnalysisContext context)
{
context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None);
context.EnableConcurrentExecution();
// handle everything except nameof
context.RegisterSyntaxTreeAction(SyntaxTreeAction);
// handle nameof (which appears as an invocation expression??)
context.RegisterSyntaxNodeAction(InvocationExpressionAction, SyntaxKind.InvocationExpression);
}
示例5: Initialize
public override void Initialize(AnalysisContext c)
{
c.RegisterCodeBlockAction(b => ThrowIfMatch(nameof(c.RegisterCodeBlockAction), new AnalysisContextInfo(b.SemanticModel.Compilation, b.OwningSymbol, b.CodeBlock)));
c.RegisterCodeBlockStartAction<SyntaxKind>(b => ThrowIfMatch(nameof(c.RegisterCodeBlockStartAction), new AnalysisContextInfo(b.SemanticModel.Compilation, b.OwningSymbol, b.CodeBlock)));
c.RegisterCompilationAction(b => ThrowIfMatch(nameof(c.RegisterCompilationAction), new AnalysisContextInfo(b.Compilation)));
c.RegisterCompilationStartAction(b => ThrowIfMatch(nameof(c.RegisterCompilationStartAction), new AnalysisContextInfo(b.Compilation)));
c.RegisterOperationAction(b => ThrowIfMatch(nameof(c.RegisterOperationAction), new AnalysisContextInfo(b.Compilation, b.Operation)), OperationKind.ReturnStatement);
c.RegisterOperationBlockAction(b => ThrowIfMatch(nameof(c.RegisterOperationBlockAction), new AnalysisContextInfo(b.Compilation, b.OwningSymbol)));
c.RegisterSemanticModelAction(b => ThrowIfMatch(nameof(c.RegisterSemanticModelAction), new AnalysisContextInfo(b.SemanticModel)));
c.RegisterSymbolAction(b => ThrowIfMatch(nameof(c.RegisterSymbolAction), new AnalysisContextInfo(b.Compilation, b.Symbol)), SymbolKind.NamedType);
c.RegisterSyntaxNodeAction(b => ThrowIfMatch(nameof(c.RegisterSyntaxNodeAction), new AnalysisContextInfo(b.SemanticModel.Compilation, b.Node)), SyntaxKind.ReturnStatement);
c.RegisterSyntaxTreeAction(b => ThrowIfMatch(nameof(c.RegisterSyntaxTreeAction), new AnalysisContextInfo(b.Compilation, b.Tree)));
}
示例6: Initialize
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxTreeAction(
c =>
{
foreach (var line in c.Tree
.GetText()
.Lines
.Where(line => line.Span.Length > Maximum))
{
c.ReportDiagnostic(Diagnostic.Create(Rule, c.Tree.GetLocation(line.Span), Maximum, line.Span.Length));
}
});
}
示例7: Initialize
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxTreeAction(
c =>
{
var root = c.Tree.GetRoot();
var lines = root.GetLocation().GetLineSpan().EndLinePosition.Line + 1;
if (lines > Maximum)
{
c.ReportDiagnostic(Diagnostic.Create(Rule, Location.None, Maximum, lines));
}
});
}
示例8: Initialize
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxTreeAction((syntaxTreeContext) =>
{
var filePath = syntaxTreeContext.Tree.FilePath;
if (filePath == null)
return;
var fileName = System.IO.Path.GetFileNameWithoutExtension(filePath);
if (Char.IsLower(fileName.ToCharArray()[0]))
syntaxTreeContext.ReportDiagnostic(Diagnostic.Create(Rule, Location.Create(syntaxTreeContext.Tree, TextSpan.FromBounds(0, 0)), fileName));
});
}
示例9: Initialize
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxTreeAction(
c =>
{
var offset = c.Tree.GetText().ToString().IndexOf('\t');
if (offset < 0)
{
return;
}
var location = c.Tree.GetLocation(TextSpan.FromBounds(offset, offset));
c.ReportDiagnostic(Diagnostic.Create(Rule, location));
});
}
示例10: Initialize
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxTreeAction(
c =>
{
var root = c.Tree.GetRoot();
foreach (var closeBraceToken in GetDescendantCloseBraceTokens(root)
.Where(closeBraceToken =>
!StartsLine(closeBraceToken) &&
!IsOnSameLineAsOpenBrace(closeBraceToken) &&
!IsInitializer(closeBraceToken.Parent)))
{
c.ReportDiagnostic(Diagnostic.Create(Rule, closeBraceToken.GetLocation()));
}
});
}
示例11: Initialize
public override void Initialize(AnalysisContext analysisContext)
{
analysisContext.RegisterSyntaxTreeAction(
(context) =>
{
foreach (var nodeOrToken in context.Tree.GetRoot().DescendantNodesAndTokens())
{
if (nodeOrToken.IsToken && _spans.Any(s => s.OverlapsWith(nodeOrToken.FullSpan)))
{
context.ReportDiagnostic(CodeAnalysis.Diagnostic.Create(s_rule, nodeOrToken.GetLocation(), messageArgs: nodeOrToken.ToString()));
}
}
});
}
示例12: Initialize
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxTreeAction(c =>
{
c.ReportDiagnostic(Diagnostic.Create(_descriptor, c.Tree.GetLocation(TextSpan.FromBounds(0, 0))));
});
}
示例13: Initialize
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxTreeAction(c =>
{
c.ReportDiagnostic(Diagnostic.Create(_rule, Location.Create(c.Tree, new Text.TextSpan(0, 1))));
});
}
示例14: Initialize
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxTreeAction(
c =>
{
var root = c.Tree.GetRoot();
var rootExpressions =
root
.DescendantNodes(e2 => !(e2 is ExpressionSyntax))
.Where(
e =>
e is ExpressionSyntax &&
!IsCompoundExpression(e));
var compoundExpressionsDescendants =
root
.DescendantNodes()
.Where(IsCompoundExpression)
.SelectMany(
e =>
e
.DescendantNodes(
e2 =>
e == e2 ||
!(e2 is ExpressionSyntax))
.Where(
e2 =>
e2 is ExpressionSyntax &&
!IsCompoundExpression(e2)));
var expressionsToCheck = rootExpressions.Concat(compoundExpressionsDescendants);
var complexExpressions =
expressionsToCheck
.Select(
e =>
new
{
Expression = e,
Complexity =
e
.DescendantNodesAndSelf(e2 => !IsCompoundExpression(e2))
.Count(
e2 =>
e2.IsKind(SyntaxKind.ConditionalExpression) ||
e2.IsKind(SyntaxKind.LogicalAndExpression) ||
e2.IsKind(SyntaxKind.LogicalOrExpression))
})
.Where(e => e.Complexity > Maximum);
foreach (var complexExpression in complexExpressions)
{
c.ReportDiagnostic(Diagnostic.Create(Rule, complexExpression.Expression.GetLocation(), Maximum, complexExpression.Complexity));
}
});
}
示例15: Initialize
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxTreeAction(c => c.ReportDiagnostic(Diagnostic.Create(s_syntaxRule, c.Tree.GetRoot().GetLocation())));
}