本文整理汇总了C#中AnalysisContext.RegisterSyntaxNodeActionInNonGenerated方法的典型用法代码示例。如果您正苦于以下问题:C# AnalysisContext.RegisterSyntaxNodeActionInNonGenerated方法的具体用法?C# AnalysisContext.RegisterSyntaxNodeActionInNonGenerated怎么用?C# AnalysisContext.RegisterSyntaxNodeActionInNonGenerated使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AnalysisContext
的用法示例。
在下文中一共展示了AnalysisContext.RegisterSyntaxNodeActionInNonGenerated方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Initialize
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxNodeActionInNonGenerated(
c => CheckEquals(c),
SyntaxKind.EqualsExpression);
context.RegisterSyntaxNodeActionInNonGenerated(
c => CheckLogicalAnd(c),
SyntaxKind.LogicalAndExpression);
context.RegisterSyntaxNodeAction(
c => CheckNotEquals(c),
SyntaxKind.NotEqualsExpression);
context.RegisterSyntaxNodeAction(
c => CheckLogicalOr(c),
SyntaxKind.LogicalOrExpression);
context.RegisterSyntaxNodeAction(
c => CheckLogicalNot(c),
SyntaxKind.LogicalNotExpression);
context.RegisterSyntaxNodeAction(
c => CheckConditional(c),
SyntaxKind.ConditionalExpression);
}
示例2: Initialize
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxNodeActionInNonGenerated(
c =>
{
var argumentList = (AttributeArgumentListSyntax)c.Node;
if (!argumentList.Arguments.Any())
{
c.ReportDiagnostic(Diagnostic.Create(Rule, argumentList.GetLocation()));
}
},
SyntaxKind.AttributeArgumentList);
context.RegisterSyntaxNodeActionInNonGenerated(
c =>
{
var objectCreation = (ObjectCreationExpressionSyntax)c.Node;
var argumentList = objectCreation.ArgumentList;
if (argumentList != null &&
objectCreation.Initializer != null &&
!argumentList.Arguments.Any())
{
c.ReportDiagnostic(Diagnostic.Create(Rule, argumentList.GetLocation()));
}
},
SyntaxKind.ObjectCreationExpression);
}
示例3: Initialize
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxNodeActionInNonGenerated(
c => CheckConditionalExpression(c),
SyntaxKind.ConditionalExpression);
context.RegisterSyntaxNodeActionInNonGenerated(
c => CheckIfStatement(c),
SyntaxKind.IfStatement);
}
示例4: Initialize
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxNodeActionInNonGenerated(
c => CheckObjectCreation(c),
SyntaxKind.ObjectCreationExpression);
context.RegisterSyntaxNodeActionInNonGenerated(
c => CheckInvocation(c),
SyntaxKind.InvocationExpression);
}
示例5: Initialize
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxNodeActionInNonGenerated(
c => CheckMethodOrProperty(c),
SyntaxKind.MethodDeclaration,
SyntaxKind.PropertyDeclaration);
context.RegisterSyntaxNodeActionInNonGenerated(
c => CheckTypeDeclaration(c),
SyntaxKind.ClassDeclaration,
SyntaxKind.InterfaceDeclaration,
SyntaxKind.StructDeclaration);
context.RegisterCompilationStartAction(
analysisContext =>
{
var classWithBaseType = ImmutableDictionary<INamedTypeSymbol, INamedTypeSymbol>.Empty;
analysisContext.RegisterSymbolAction(
c =>
{
var classSymbol = c.Symbol as INamedTypeSymbol;
if (classSymbol == null ||
classSymbol.TypeKind != TypeKind.Class)
{
return;
}
if (!classWithBaseType.ContainsKey(classSymbol))
{
classWithBaseType = classWithBaseType.Add(classSymbol, classSymbol.BaseType);
}
},
SymbolKind.NamedType);
analysisContext.RegisterCompilationEndAction(
c =>
{
foreach (var analyzedClass in classWithBaseType.Keys)
{
if (DeniedDeclaredAccessibility.Contains(analyzedClass.DeclaredAccessibility) ||
analyzedClass.IsSealed ||
HasDerivedClass(analyzedClass, classWithBaseType))
{
continue;
}
CheckMembers(c, analyzedClass);
}
});
});
}
示例6: Initialize
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxNodeActionInNonGenerated(
c => CheckEnum(c),
SyntaxKind.EnumDeclaration);
context.RegisterSyntaxNodeActionInNonGenerated(
c => CheckInterface(c),
SyntaxKind.InterfaceDeclaration);
context.RegisterSyntaxNodeActionInNonGenerated(
c => CheckClass(c),
SyntaxKind.ClassDeclaration);
}
示例7: Initialize
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxNodeActionInNonGenerated(
c => CheckLoop(c, ((WhileStatementSyntax) c.Node).Statement),
SyntaxKind.WhileStatement);
context.RegisterSyntaxNodeActionInNonGenerated(
c => CheckLoop(c, ((ForStatementSyntax) c.Node).Statement),
SyntaxKind.ForStatement);
context.RegisterSyntaxNodeActionInNonGenerated(
c => CheckLoop(c, ((ForEachStatementSyntax) c.Node).Statement),
SyntaxKind.ForEachStatement);
context.RegisterSyntaxNodeActionInNonGenerated(
c => CheckIf(c, (IfStatementSyntax) c.Node),
SyntaxKind.IfStatement);
}
示例8: Initialize
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxNodeActionInNonGenerated(
c =>
{
var invocation = (InvocationExpressionSyntax)c.Node;
var methodSymbol = c.SemanticModel.GetSymbolInfo(invocation).Symbol as IMethodSymbol;
if (methodSymbol == null ||
methodSymbol.Name != "ToCharArray" ||
methodSymbol.ContainingType.SpecialType != SpecialType.System_String ||
methodSymbol.Parameters.Length != 0)
{
return;
}
if (invocation.Parent is ElementAccessExpressionSyntax ||
invocation.Parent is ForEachStatementSyntax)
{
var memberAccess = invocation.Expression as MemberAccessExpressionSyntax;
if (memberAccess == null)
{
return;
}
c.ReportDiagnostic(Diagnostic.Create(Rule, memberAccess.Name.GetLocation()));
}
},
SyntaxKind.InvocationExpression);
}
示例9: Initialize
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxNodeActionInNonGenerated(
c =>
{
var typeSyntax = (TypeSyntax)c.Node;
if (typeSyntax.Parent is QualifiedNameSyntax)
{
return;
}
var typeSymbol = c.SemanticModel.GetTypeInfo(typeSyntax).Type;
if (typeSymbol == null)
{
return;
}
if (typeSymbol.SpecialType == SpecialType.System_UInt16 ||
typeSymbol.SpecialType == SpecialType.System_UInt32 ||
typeSymbol.SpecialType == SpecialType.System_UInt64)
{
c.ReportDiagnostic(Diagnostic.Create(Rule, typeSyntax.GetLocation(),
SignedPairs[typeSymbol.SpecialType]));
}
},
SyntaxKind.PredefinedType,
SyntaxKind.IdentifierName,
SyntaxKind.QualifiedName);
}
示例10: Initialize
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxNodeActionInNonGenerated(
c =>
{
var trivias = c.Node.DescendantTrivia(node =>
{
return !node.IsKind(SyntaxKind.Block);
});
foreach(var trivia in trivias)
{
if (trivia.IsKind((SyntaxKind.RegionDirectiveTrivia)))
{
var diagnostic = Diagnostic.Create(Rule, trivia.GetLocation());
c.ReportDiagnostic(diagnostic);
}
}
}
,
SyntaxKind.FieldDeclaration,
SyntaxKind.PropertyDeclaration,
SyntaxKind.MethodDeclaration
);
}
示例11: Initialize
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxNodeActionInNonGenerated(
c =>
{
var lessThan = (BinaryExpressionSyntax) c.Node;
int constValue;
if (SillyBitwiseOperation.TryGetConstantIntValue(lessThan.Left, out constValue) &&
constValue == 0 &&
IsIndexOfCall(lessThan.Right, c.SemanticModel))
{
c.ReportDiagnostic(Diagnostic.Create(Rule, Location.Create(lessThan.SyntaxTree,
TextSpan.FromBounds(lessThan.Left.SpanStart, lessThan.OperatorToken.Span.End))));
}
},
SyntaxKind.LessThanExpression);
context.RegisterSyntaxNodeActionInNonGenerated(
c =>
{
var greaterThan = (BinaryExpressionSyntax)c.Node;
int constValue;
if (SillyBitwiseOperation.TryGetConstantIntValue(greaterThan.Right, out constValue) &&
constValue == 0 &&
IsIndexOfCall(greaterThan.Left, c.SemanticModel))
{
c.ReportDiagnostic(Diagnostic.Create(Rule, Location.Create(greaterThan.SyntaxTree,
TextSpan.FromBounds(greaterThan.OperatorToken.SpanStart, greaterThan.Right.Span.End))));
}
},
SyntaxKind.GreaterThanExpression);
}
示例12: Initialize
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxNodeActionInNonGenerated(
c =>
{
var expression = (BinaryExpressionSyntax) c.Node;
var parenthesizedParent = expression.Parent;
while (parenthesizedParent is ParenthesizedExpressionSyntax)
{
parenthesizedParent = parenthesizedParent.Parent;
}
var logicalNot = parenthesizedParent as PrefixUnaryExpressionSyntax;
if (logicalNot != null && logicalNot.OperatorToken.IsKind(SyntaxKind.ExclamationToken))
{
c.ReportDiagnostic(Diagnostic.Create(Rule, logicalNot.GetLocation(),
OppositeTokens[expression.OperatorToken.Kind()]));
}
},
SyntaxKind.GreaterThanExpression,
SyntaxKind.GreaterThanOrEqualExpression,
SyntaxKind.LessThanExpression,
SyntaxKind.LessThanOrEqualExpression,
SyntaxKind.EqualsExpression,
SyntaxKind.NotEqualsExpression);
}
示例13: Initialize
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxNodeActionInNonGenerated(
c =>
{
var assignment = (AssignmentExpressionSyntax)c.Node;
if (!IsDelegateSubtraction(assignment, c.SemanticModel) ||
ExpressionIsSimple(assignment.Right))
{
return;
}
c.ReportDiagnostic(Diagnostic.Create(Rule, assignment.GetLocation()));
},
SyntaxKind.SubtractAssignmentExpression);
context.RegisterSyntaxNodeAction(
c =>
{
var binary = (BinaryExpressionSyntax)c.Node;
if (!IsDelegateSubtraction(binary, c.SemanticModel) ||
!IsTopLevelSubtraction(binary))
{
return;
}
if (!BinaryIsValidSubstraction(binary))
{
c.ReportDiagnostic(Diagnostic.Create(Rule, binary.GetLocation()));
}
},
SyntaxKind.SubtractExpression);
}
示例14: Initialize
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxNodeActionInNonGenerated(
c => c.ReportDiagnostic(Diagnostic.Create(Rule, c.Node.GetLocation())),
SyntaxKind.ExitForStatement,
SyntaxKind.ExitFunctionStatement,
SyntaxKind.ExitPropertyStatement,
SyntaxKind.ExitSubStatement,
SyntaxKind.ExitTryStatement,
SyntaxKind.ExitWhileStatement);
context.RegisterSyntaxNodeActionInNonGenerated(
c =>
{
var parent = c.Node.Parent;
while(parent != null &&
!(parent is DoLoopBlockSyntax))
{
parent = parent.Parent;
}
if (parent == null ||
parent.IsKind(SyntaxKind.SimpleDoLoopBlock))
{
return;
}
c.ReportDiagnostic(Diagnostic.Create(Rule, c.Node.GetLocation()));
},
SyntaxKind.ExitDoStatement);
}
示例15: Initialize
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxNodeActionInNonGenerated(
c =>
{
var outerInvocation = (InvocationExpressionSyntax)c.Node;
if (!IsMethodOrderByExtension(outerInvocation, c.SemanticModel))
{
return;
}
var memberAccess = outerInvocation.Expression as MemberAccessExpressionSyntax;
if (memberAccess == null)
{
return;
}
var innerInvocation = memberAccess.Expression as InvocationExpressionSyntax;
if (!IsMethodOrderByExtension(innerInvocation, c.SemanticModel) &&
!IsMethodThenByExtension(innerInvocation, c.SemanticModel))
{
return;
}
c.ReportDiagnostic(Diagnostic.Create(Rule, memberAccess.Name.GetLocation()));
},
SyntaxKind.InvocationExpression);
}